资金流入流出预测—模型训练

模型训练与验证

  • 训练及预测流程
    资金流入流出预测—模型训练_第1张图片

  • 数据集的划分

    • 无时序的数据集:简单划分、交叉验证划分
    • 有时序的数据集:需考虑时序,nested交叉验证划分
       
      资金流入流出预测—模型训练_第2张图片
  • 模型选择

    • 依据在验证集上的效果选择
    • 除了关注效果的均值,还要关注稳健性
    • 还需考虑线上效果,可将线上效果视为一折数据
  • 多元回归
    Y = f ( X 1 , X 2 , . . . , X n ) + ε Y = f(X_1,X_2,...,X_n)+\varepsilon Y=f(X1,X2,...,Xn)+ε

  • 常用的回归模型

    • 线性回归
      • Y = β 0 + β 1 X 1 + β 2 X 2 + . . . + β n X n + ε Y = \beta_0+\beta_1X_1+\beta_2X_2+...+\beta_nX_n+\varepsilon Y=β0+β1X1+β2X2+...+βnXn+ε
      • 可采用最小二乘或梯度下降等方法估计
      • 当变量较多时,建议考虑添加 LASSO (L1 正则化) 等惩罚项
      • 使用 sklearn 调用线性回归
        #从sklearn算法库中导入线性回归模型算法
        from sklearn.linear_model import LinearRegression, Lasso
        from sklearn.datasets import load_diabetes
        from sklearn.metrics import mean_squared_error
        data = load_diabetes()
        clf_lr = LinearRegression()
        clf_lr.fit(data['data'][:300],data['target'][:300])
        clf_lr.coef_
        pred_lr = clf_lr.predict(data['data'][300:])
        mse_lr = mean_squared_error(data['target'][300:],pred_lr)
        clf_lasso = Lasso(alpha=0.1)
        clf_lasso.fit(data['data'][:300],data['target'][:300])
        clf_lasso.coef_
        pred_lasso = clf_lasso.predict(data['data'][300:])
        mse_lasso = mean_squared_error(data['target'][300:],pred_lasso)
        
    • 决策树
      • 为每个变量选择切分点,将变量作为节点分裂
      • 在分裂后,依据相应分支内所有样本的因变量均值作为估计,并评估拟合误差
        资金流入流出预测—模型训练_第3张图片
      • 使用sklearn调用决策树回归
        #从sklearn算法库中导入决策树回归
        from sklearn.tree import DecisionTreeRegressor
        from sklearn.datasets import load_diabetes
        from sklearn.metrics import mean_squared_error
        data = load_diabetes()
        clf_dt = DecisionTreeRegressor()
        clf_dt.fit(data['data'][:300],data['target'][:300])
        pred_dt = clf_dt.predict(data['data'][300:])
        mse_dt = mean_squared_error(data['target'][300:],pred_dt)
        
    • 随机森林
    • 梯度提升树:Gradient Boosting Tree、Xgboost、LightGBM、Catboost

你可能感兴趣的:(数据分析与挖掘)