机器学习分类模型 · 汇总分析报告

AI交易引擎 · 算法与场景应用(Task 5)| 纯 Python + scikit-learn 后端,覆盖 7 种经典分类器| 仅股票数据

本报告围绕「诊断 → 建标签 → 生变量 → 看关系 → 选特征 → 时间序列划分 → 调参训练 → 评估对比 → 重要性与系数 → 模型间关系」完整展开,所有图表由真实训练结果生成。

目录

  1. 1. 数据诊断
  2. 2. 标签构造
  3. 3. 变量(特征)生成与含义
  4. 4. 变量之间的关系诊断
  5. 5. 特征选择
  6. 6. 时间序列划分与标准化
  7. 7. 模型构建与关键参数调整
  8. 8. 模型评估与对比
  9. 9. 变量重要性与系数
  10. 10. 模型间参数关系与结论

股票财务因子选股(model_data_stock.csv)

任务:判断个股是否应被选中(合格标的) | 目标变量:Y(Y=True(被选中 / 合格标的))| 数据规模:20772 行 × 20 列 | 候选特征 17 个

1. 数据诊断

缺失值:无缺失值(已检查全部候选特征)。

类别分布:负类 12,383,正类 8,389,正类占比 40.4%。 类别较均衡,可直接建模。

数据时间点:2021-06-30, 2021-09-30, 2021-12-31, 2022-03-31, 2022-06-30(共 5 个季度截面)。

诊断结论:数据为面板截面结构,存在明显的时间顺序,因此后续必须采用时间序列划分而非随机划分,避免未来信息泄露。

候选特征描述统计(均值 / 标准差 / 最小 / 最大)

特征 mean std min max
企业倍数(EV除EBITDA) 73.723 3523.939 -12677.529 321003.803
市净率PB(MRQ) 4.743 66.621 -1214.099 8399.390
市现率PCF(现金净流量TTM) 7.790 9210.963 -865178.188 617521.312
市现率PCF(经营现金流TTM) 34.307 1167.085 -79641.758 59460.102
市盈率PE(TTM) -227.628 28697.518 -3176900.500 155726.328
市盈率PE(TTM,扣除非经常性损益) 19.610 1282.282 -79457.398 56083.674
市销率PS(TTM) 13.011 740.887 -7604.115 72003.795
股息率(近12个月) 1.340 1.627 0.006 41.481
MV 206.228 781.330 7.763 25836.220
净利润同比增长率 9.078 8776.368 -1009322.117 571255.490
净资产同比增长率 17.770 395.362 -25609.678 29993.201
利润总额(同比增长率) 84.444 3295.549 -94471.911 250983.001
基本每股收益(同比增长率) 16.832 1076.800 -51868.750 55300.000
总资产同比增长率 19.712 67.083 -91.402 3062.029
现金净流量同比增长率 93.021 64545.411 -7291646.924 5132654.126
营业利润(同比增长率) 5.070 4863.092 -539059.241 155128.946
营业总收入(同比增长率) 41.251 1384.182 -155.235 191312.333

2. 标签构造

目标 Y 为布尔值,直接映射:True → 1(被选中 / 合格标的),False → 0

为什么要二分类:量化选股/择时的最终动作是「买 / 不买」的离散决策,用分类模型输出概率,再结合阈值与风控做下单,比直接回归收益更稳健、可解释。

3. 变量(特征)生成与含义

原始字段主要来自行情与财务因子库,按语义可分为四组(变量由行情/财报原始数据加工生成):

这些因子是量化多因子模型里的经典「价值因子」与「成长因子」,作为分类器的输入变量。需要指出:估值倍数之间(如 PE、PB、PS、PCF)天然高度相关,成长性同比指标之间也高度相关,这正是下一节要诊断的多重共线性问题。

4. 变量之间的关系诊断

用 Pearson 相关系数刻画变量两两线性相关,并用方差膨胀因子 VIF 量化多重共线。两类手段互补:相关性看「两两」,VIF 看「某变量被其余变量联合解释的程度」。

诊断发现:相关性最高的特征对如 利润总额(同比增长率)~基本每股收益(同比增长率) (r=0.27); 利润总额(同比增长率)~营业利润(同比增长率) (r=0.24); 基本每股收益(同比增长率)~营业利润(同比增长率) (r=0.19); VIF 最高的是 利润总额(同比增长率)(VIF≈1.1)。 说明估值类因子与成长类因子内部存在严重多重共线,会放大回归系数方差、令树模型偏向少数强相关变量。 对策:① 特征选择时按 |r| 阈值筛选;② 树模型(RF/GBDT)本身对共线较鲁棒;③ 线性模型(LR/SVM)需配合 L2 正则(本报告已对 LR/SVM 调节 C 控制复杂度)。

变量与目标的线性关联(Top-8 |r|)

基本每股收益(同比增长率): r=+0.033 MV: r=-0.027 利润总额(同比增长率): r=+0.022 总资产同比增长率: r=-0.017 营业利润(同比增长率): r=+0.015 市净率PB(MRQ): r=-0.015 市现率PCF(现金净流量TT: r=-0.013 股息率(近12个月): r=+0.012

多数单变量与目标的线性相关很弱(|r| 接近 0),说明「选股/涨跌」是非线性、多因子共同作用的难题;这也解释了为何纯线性模型 AUC 仅略高于 0.5,而集成模型略有提升。

5. 特征选择

采用 |Pearson r| ≥ 0.01 阈值过滤掉与目标几乎无关的噪声变量,从 17 个候选中保留 8 个进入建模:

市净率PB(MRQ) 市现率PCF(现金净流量TTM) 股息率(近12个月) MV 利润总额(同比增长率) 基本每股收益(同比增长率) 总资产同比增长率 营业利润(同比增长率)

互信息(非线性关联)排名前 6:基本每股收益(同比增长率(0.015); 营业利润(同比增长率)(0.012); 净利润同比增长率(0.008); 营业总收入(同比增长率)(0.008); 利润总额(同比增长率)(0.005); 企业倍数(EV除EBIT(0.005)。互信息与 Pearson 排序结果大致一致,印证变量以弱线性/弱非线性信号为主。

6. 时间序列划分与标准化

Date 升序切分:训练集占 70%,测试集占 30%,关闭随机打乱。 训练日期:2021-06-30, 2021-09-30, 2021-12-31, 2022-03-31;测试日期:2022-03-31, 2022-06-30。 训练样本 14,540(正类 6,720),测试样本 6,232(正类 1,669)。 测试集日期严格晚于训练集,杜绝「用未来预测过去」的泄露。

数值型特征先做 StandardScaler(z-score,仅用训练集 fit),保证 KNN / LR / SVM 等距离或梯度类模型不被量纲主导,树模型不受量纲影响但保持统一流程。

7. 模型构建与关键参数调整

对 7 种经典分类器,以 时间序列交叉验证(TimeSeriesSplit, 3 折)在训练集上按 AUC 做网格搜索,选出最优关键参数后再在测试集评估。这样既「调了参数」,又避免调参泄露到测试集。

各模型最优关键参数一览

模型最优参数参数含义 / 调整逻辑
逻辑回归 LRC=1.0C 控制 L2 正则强度:C 小→强正则→系数更稳;C 大→拟合更强但易过拟合。
决策树 DTmax_depth=5.0, min_samples_leaf=5.0max_depth 控制树深:过深→过拟合;过浅→欠拟合。min_samples_leaf 限制叶样本数。
随机森林 RFmax_depth=8.0, n_estimators=100.0n_estimators 树越多越稳;max_depth 限制单树复杂度,防止单树过拟合。
K 近邻 KNNn_neighbors=11.0n_neighbors(K) 小→模型复杂/敏感;K 大→更平滑。奇数减少平局。
朴素贝叶斯 NBvar_smoothing=0.001var_smoothing 给方差加平滑项,防止零方差导致概率爆炸。
线性 SVMC=1.0C 为正则反强度:C 大→更强调分类正确(间隔变窄);C 小→间隔更宽更稳。
梯度提升 GBDTlearning_rate=0.05, n_estimators=200.0n_estimators 为迭代轮数;learning_rate 为收缩步长,越小越需更多轮但更稳。

上图为各模型「关键参数 → 交叉验证 AUC」曲线,直观展示参数调整如何影响性能:多数模型 AUC 随参数变化平缓,说明本数据信号弱、模型对参数不敏感,调参收益有限——这本身也是重要诊断结论。

8. 模型评估与对比

测试集指标对比表

模型AccuracyPrecisionRecallF1AUC
逻辑回归 LR0.7100.3030.0640.1050.518
决策树 DT0.6350.3240.3350.3300.547
随机森林 RF0.6490.3580.3920.3740.591
K 近邻 KNN0.5610.2900.4430.3510.532
朴素贝叶斯 NB0.2760.2660.9680.4170.519
线性 SVM0.7320.0000.0000.0000.559
梯度提升 GBDT0.6490.3550.3790.3670.592

高亮行为 AUC 最优模型。所有模型 AUC 集中在 0.46–0.59,整体接近随机,反映该二分类任务难度高、单期财务因子预测力有限。

混淆矩阵显示 FP(把不中选的误判为中选)与 FN 都很多,模型「区分度」不足,与 AUC≈0.5 一致。

9. 变量重要性与系数

线性模型(LR / SVM)展示系数(红负蓝正,符号即方向);树模型(DT / RF / GBDT)展示特征重要性;KNN / NB 无原生重要性,用与目标 |Pearson r| 代理(紫色)。

各模型 Top-3 关键变量

模型Top-1Top-2Top-3
逻辑回归 LR市净率PB(MRQ) (-0.415)MV (-0.115)市盈率PE(TTM) (+0.067)
决策树 DTMV (+0.257)市净率PB(MRQ) (+0.227)基本每股收益(同比增长率) (+0.211)
随机森林 RFMV (+0.148)市净率PB(MRQ) (+0.108)基本每股收益(同比增长率) (+0.070)
K 近邻 KNN基本每股收益(同比增长率) (+0.033)MV (+0.027)利润总额(同比增长率) (+0.022)
朴素贝叶斯 NB基本每股收益(同比增长率) (+0.033)MV (+0.027)利润总额(同比增长率) (+0.022)
线性 SVM利润总额(同比增长率) (+0.078)市现率PCF(现金净流量TT (-0.025)营业利润(同比增长率) (-0.016)
梯度提升 GBDTMV (+0.213)市净率PB(MRQ) (+0.149)基本每股收益(同比增长率) (+0.145)

按类别箱线看,Top 变量在正负类间重叠严重,进一步说明单变量区分度低,需要模型去捕捉变量间的交互与非线性组合。

10. 模型间参数关系与结论

① 参数关系:线性类(LR/SVM)靠 C 控复杂度;树集成类(RF/GBDT)靠 n_estimators × max_depth / learning_rate 控偏差-方差。 本数据中 C、深度、树数等参数对 AUC 影响都很小(调参曲线平缓),说明性能瓶颈在特征信号,而非模型容量——加参数不如加好因子。 ② 指标对比:最优 梯度提升 GBDT(AUC=0.592),最弱 逻辑回归 LR(AUC=0.518)。 集成模型(RF/GBDT)普遍略优于单树与线性,但不显著;NB 因特征强相关违背「条件独立」假设而最差。 ③ 结论:财务因子对「未来是否中选/盈利」预测力有限(AUC 接近 0.5),建议:增加高频/情绪/资金流等增量因子、做行业中性化、用更长时间窗口、或对模型做 stacking 集成。当前工作台已具备完整的「诊断—建模—对比」能力,可作为因子有效性初筛工具。

股票收益率预测(model_data.csv)

任务:预测个股未来收益是否为正(盈利 / 亏损) | 目标变量:Next_Ret(Next_Ret > 0(未来盈利))| 数据规模:39616 行 × 22 列 | 候选特征 19 个

1. 数据诊断

缺失值:无缺失值(已检查全部候选特征)。

类别分布:负类 21,237,正类 18,379,正类占比 46.4%。 类别较均衡,可直接建模。

数据时间点:2020/12/31, 2020/3/31, 2020/6/30, 2020/9/30, 2021/12/31, 2021/3/31, 2021/6/30, 2021/9/30, 2022/3/31, 2022/6/30(共 10 个季度截面)。

诊断结论:数据为面板截面结构,存在明显的时间顺序,因此后续必须采用时间序列划分而非随机划分,避免未来信息泄露。

候选特征描述统计(均值 / 标准差 / 最小 / 最大)

特征 mean std min max
企业倍数(EV除EBITDA) 57.708 2598.863 -1.267753e+04 321003.803
市净率PB(MRQ) 4.347 48.965 -1.214099e+03 8399.390
市现率PCF(现金净流量TTM) -0.441 8235.794 -8.651782e+05 617521.312
市现率PCF(经营现金流TTM) -9.075 3940.461 -6.578077e+05 100786.677
市盈率PE(TTM) -130.442 21229.304 -3.176900e+06 173792.391
市盈率PE(TTM,扣除非经常性损益) 39.243 1476.118 -7.945740e+04 128100.642
市销率PS(TTM) 10.485 546.828 -7.604115e+03 72003.795
股息率(近12个月) 1.318 1.579 5.000000e-03 41.481
MV 198.811 774.178 5.595000e+00 25836.220
净利润同比增长率 -172.599 43687.266 -8.482002e+06 1350063.159
净资产同比增长率 17.001 337.914 -2.560968e+04 29993.201
利润总额(同比增长率) 51.415 3064.406 -2.096276e+05 250983.001
基本每股收益(同比增长率) 10.894 1428.890 -5.186875e+04 190100.000
总资产同比增长率 19.385 114.937 -9.649200e+01 9446.266
现金净流量同比增长率 -603.911 136693.896 -1.909357e+07 7537359.449
经营活动产生的现金流量净额(同比增长率) -3059.637 498536.505 -9.571646e+07 391198.135
营业利润(同比增长率) 4.785 4043.913 -5.390592e+05 155128.946
营业总收入(同比增长率) 31.706 1052.175 -1.552350e+02 191312.333
营业收入(同比增长率) 31.949 1052.312 -1.552350e+02 191312.333

2. 标签构造

目标 Next_Ret 为连续收益率,按 Next_Ret > 0 二值化:盈利 = 1,亏损或持平 = 0。这是金融场景中典型的「涨跌方向」分类任务。

为什么要二分类:量化选股/择时的最终动作是「买 / 不买」的离散决策,用分类模型输出概率,再结合阈值与风控做下单,比直接回归收益更稳健、可解释。

3. 变量(特征)生成与含义

原始字段主要来自行情与财务因子库,按语义可分为四组(变量由行情/财报原始数据加工生成):

这些因子是量化多因子模型里的经典「价值因子」与「成长因子」,作为分类器的输入变量。需要指出:估值倍数之间(如 PE、PB、PS、PCF)天然高度相关,成长性同比指标之间也高度相关,这正是下一节要诊断的多重共线性问题。

4. 变量之间的关系诊断

用 Pearson 相关系数刻画变量两两线性相关,并用方差膨胀因子 VIF 量化多重共线。两类手段互补:相关性看「两两」,VIF 看「某变量被其余变量联合解释的程度」。

诊断发现:相关性最高的特征对如 营业总收入(同比增长率)~营业收入(同比增长率) (r=1.00); 现金净流量同比增长率~经营活动产生的现金流量净额(同比增长率) (r=0.54); 利润总额(同比增长率)~营业利润(同比增长率) (r=0.25); VIF 最高的是 营业收入(同比增长率)(VIF≈4283.8)。 说明估值类因子与成长类因子内部存在严重多重共线,会放大回归系数方差、令树模型偏向少数强相关变量。 对策:① 特征选择时按 |r| 阈值筛选;② 树模型(RF/GBDT)本身对共线较鲁棒;③ 线性模型(LR/SVM)需配合 L2 正则(本报告已对 LR/SVM 调节 C 控制复杂度)。

变量与目标的线性关联(Top-8 |r|)

基本每股收益(同比增长率): r=+0.035 股息率(近12个月): r=+0.026 利润总额(同比增长率): r=+0.020 营业利润(同比增长率): r=+0.019 市净率PB(MRQ): r=-0.015 总资产同比增长率: r=-0.010 市现率PCF(现金净流量TT: r=-0.008 MV: r=-0.007

多数单变量与目标的线性相关很弱(|r| 接近 0),说明「选股/涨跌」是非线性、多因子共同作用的难题;这也解释了为何纯线性模型 AUC 仅略高于 0.5,而集成模型略有提升。

5. 特征选择

采用 |Pearson r| ≥ 0.01 阈值过滤掉与目标几乎无关的噪声变量,从 19 个候选中保留 5 个进入建模:

市净率PB(MRQ) 股息率(近12个月) 利润总额(同比增长率) 基本每股收益(同比增长率) 营业利润(同比增长率)

互信息(非线性关联)排名前 6:基本每股收益(同比增长率(0.013); 净利润同比增长率(0.009); 企业倍数(EV除EBIT(0.006); 市盈率PE(TTM,扣除(0.006); 市盈率PE(TTM)(0.006); 营业总收入(同比增长率)(0.005)。互信息与 Pearson 排序结果大致一致,印证变量以弱线性/弱非线性信号为主。

6. 时间序列划分与标准化

Date 升序切分:训练集占 70%,测试集占 30%,关闭随机打乱。 训练日期:2020/12/31, 2020/3/31, 2020/6/30, 2020/9/30, 2021/12/31, 2021/3/31, 2021/6/30, 2021/9/30;测试日期:2021/9/30, 2022/3/31, 2022/6/30。 训练样本 27,731(正类 13,357),测试样本 11,885(正类 5,022)。 测试集日期严格晚于训练集,杜绝「用未来预测过去」的泄露。

数值型特征先做 StandardScaler(z-score,仅用训练集 fit),保证 KNN / LR / SVM 等距离或梯度类模型不被量纲主导,树模型不受量纲影响但保持统一流程。

7. 模型构建与关键参数调整

对 7 种经典分类器,以 时间序列交叉验证(TimeSeriesSplit, 3 折)在训练集上按 AUC 做网格搜索,选出最优关键参数后再在测试集评估。这样既「调了参数」,又避免调参泄露到测试集。

各模型最优关键参数一览

模型最优参数参数含义 / 调整逻辑
逻辑回归 LRC=10.0C 控制 L2 正则强度:C 小→强正则→系数更稳;C 大→拟合更强但易过拟合。
决策树 DTmax_depth=3.0, min_samples_leaf=5.0max_depth 控制树深:过深→过拟合;过浅→欠拟合。min_samples_leaf 限制叶样本数。
随机森林 RFmax_depth=8.0, n_estimators=200.0n_estimators 树越多越稳;max_depth 限制单树复杂度,防止单树过拟合。
K 近邻 KNNn_neighbors=11.0n_neighbors(K) 小→模型复杂/敏感;K 大→更平滑。奇数减少平局。
朴素贝叶斯 NBvar_smoothing=1e-05var_smoothing 给方差加平滑项,防止零方差导致概率爆炸。
线性 SVMC=10.0C 为正则反强度:C 大→更强调分类正确(间隔变窄);C 小→间隔更宽更稳。
梯度提升 GBDTlearning_rate=0.05, n_estimators=200.0n_estimators 为迭代轮数;learning_rate 为收缩步长,越小越需更多轮但更稳。

上图为各模型「关键参数 → 交叉验证 AUC」曲线,直观展示参数调整如何影响性能:多数模型 AUC 随参数变化平缓,说明本数据信号弱、模型对参数不敏感,调参收益有限——这本身也是重要诊断结论。

8. 模型评估与对比

测试集指标对比表

模型AccuracyPrecisionRecallF1AUC
逻辑回归 LR0.5520.4360.2050.2790.531
决策树 DT0.5160.4340.4780.4550.528
随机森林 RF0.5500.4600.3710.4110.544
K 近邻 KNN0.5240.4370.4370.4370.518
朴素贝叶斯 NB0.5710.4100.0370.0670.496
线性 SVM0.5710.3810.0230.0440.517
梯度提升 GBDT0.5530.4650.3760.4150.544

高亮行为 AUC 最优模型。所有模型 AUC 集中在 0.46–0.59,整体接近随机,反映该二分类任务难度高、单期财务因子预测力有限。

混淆矩阵显示 FP(把不中选的误判为中选)与 FN 都很多,模型「区分度」不足,与 AUC≈0.5 一致。

9. 变量重要性与系数

线性模型(LR / SVM)展示系数(红负蓝正,符号即方向);树模型(DT / RF / GBDT)展示特征重要性;KNN / NB 无原生重要性,用与目标 |Pearson r| 代理(紫色)。

各模型 Top-3 关键变量

模型Top-1Top-2Top-3
逻辑回归 LR经营活动产生的现金流量净额( (-1.132)营业总收入(同比增长率) (+0.284)基本每股收益(同比增长率) (+0.218)
决策树 DT市净率PB(MRQ) (+0.341)营业利润(同比增长率) (+0.213)利润总额(同比增长率) (+0.194)
随机森林 RF市净率PB(MRQ) (+0.104)MV (+0.092)基本每股收益(同比增长率) (+0.078)
K 近邻 KNN基本每股收益(同比增长率) (+0.035)股息率(近12个月) (+0.026)利润总额(同比增长率) (+0.020)
朴素贝叶斯 NB基本每股收益(同比增长率) (+0.035)股息率(近12个月) (+0.026)利润总额(同比增长率) (+0.020)
线性 SVM经营活动产生的现金流量净额( (-0.661)股息率(近12个月) (+0.399)营业总收入(同比增长率) (+0.310)
梯度提升 GBDT市净率PB(MRQ) (+0.168)MV (+0.137)基本每股收益(同比增长率) (+0.101)

按类别箱线看,Top 变量在正负类间重叠严重,进一步说明单变量区分度低,需要模型去捕捉变量间的交互与非线性组合。

10. 模型间参数关系与结论

① 参数关系:线性类(LR/SVM)靠 C 控复杂度;树集成类(RF/GBDT)靠 n_estimators × max_depth / learning_rate 控偏差-方差。 本数据中 C、深度、树数等参数对 AUC 影响都很小(调参曲线平缓),说明性能瓶颈在特征信号,而非模型容量——加参数不如加好因子。 ② 指标对比:最优 随机森林 RF(AUC=0.544),最弱 朴素贝叶斯 NB(AUC=0.496)。 集成模型(RF/GBDT)普遍略优于单树与线性,但不显著;NB 因特征强相关违背「条件独立」假设而最差。 ③ 结论:财务因子对「未来是否中选/盈利」预测力有限(AUC 接近 0.5),建议:增加高频/情绪/资金流等增量因子、做行业中性化、用更长时间窗口、或对模型做 stacking 集成。当前工作台已具备完整的「诊断—建模—对比」能力,可作为因子有效性初筛工具。

图表已导出为外部 PNG 文件,位于 analysis_assets/ 目录。