线性模型与正则化
核心问题多个信号怎样合成一个分数,才不会过度拟合过去?
视频
待发布
预计 2026-10-15 17:30(北京时间)发布,以实际公开时间为准。
视频发布后会嵌入在这里,并加入 Bilibili 合集“量化与机器学习入门”。 预计时长约 9 分钟。
学习目标
- 理解线性打分就是给每个信号一个权重。
- 理解正则化如何把权重“拉回来”,换取更稳定的样本外表现。
- 理解怎样用验证段选择正则强度,以及为什么总要和等权打分比较。
交互演示合成数据
制作中
正则化:拖动正则强度,看权重收缩和样本内外差距
让 AI 带你做模拟数据
把下面的提示词整段复制给任意一个 AI 助手。它会先生成一份模拟的股票月度数据(设定对每一节都一样),再带你把这一节的分析做一遍。数据是模拟的,具体数字会和视频不同,但应该看到同样的规律。
任务(第 08 节):看线性模型怎样被噪声带偏,再用正则化拉回来。
1. 用前 96 个月训练线性回归(标签同第 07 节),打印五个特征的权重。
2. 再加 90 列纯随机数(一共 95 列),重新训练线性回归。比较两个模型在前 96 个月(训练期)和后 96 个月(检验期)的平均 IC。
3. 在 95 列上分别训练岭回归和 LassoCV(用交叉验证自动选约束强度),同样比较两段的平均 IC;数一数 Lasso 留下了几列真特征、几列随机数。提示词开头的模拟数据设定
请用 Python(numpy、pandas,需要时用 scikit-learn)带我做一个量化入门练习。先生成一份模拟的股票月度数据,随机种子用 42:
1. 300 只股票,192 个月(月份编号 0–191,相当于 16 年)。
2. 每只股票有一个固定的波动 sigma,从 0.05 到 0.13 均匀抽取;它的 beta = 0.5 + 5 × sigma。
3. 每个月有五个特征:mom(动量)、val(估值,越大越便宜)、size(规模)、lowvol(低波动)、prof(盈利)。
- mom、val、size、prof:第 0 个月取标准正态;之后每个月,新值 = 0.9 × 上月值 + 0.44 × 标准正态。
- lowvol = −sigma + 0.02 × 标准正态。
- 每个月把五个特征各自在 300 只股票之间标准化(减平均、除以标准差)。
4. 每个月抽一个下个月的大盘收益 mkt_next ~ 正态(0.005, 0.05);再给五个特征各抽一个当月系数 = 基础系数 + 0.01 × 标准正态,基础系数依次是 0.004、0.003、0、0.005、0.002。
5. 下个月收益 ret_next = beta × mkt_next + Σ(当月系数 × 特征) + sigma × 标准正态。
6. 整理成一张长表:每行是一只股票的一个月,列为 month、stock、sigma、五个特征、mkt_next、ret_next。打印前几行和总行数。
后面统一的口径:
- IC:每个月,某一列和 ret_next 在 300 只股票之间的 Spearman 秩相关。
- 年化收益:把每月收益连乘,再按 12 / 月数 开方后减 1。
- 等权基准:每个月 300 只股票 ret_next 的平均。
- 第 m 个月这一行的特征在第 m 个月月底已知,标签 ret_next 是第 m+1 个月的收益。训练模型时,在第 s 个月月底打分,训练只用月份 ≤ s−2 的行(中间隔开一个月)。
接下来按我的要求一步一步做。每一步先用一两句话说明在做什么,再给代码和结果。应该看到
- mom、val、lowvol 的权重明显为正;prof 也是正的,但小一些;size 在 0 附近,可正可负,因为模拟设定里它本来就没有作用。
- 加了 90 列随机数以后,训练期的 IC 变高,检验期的 IC 变低。
- 岭回归的结果和不加约束时几乎一样。这里的随机列和真特征互不相关,岭回归把所有权重按差不多的比例一起缩小,股票的排序几乎不变。
- Lasso 的检验期 IC 比 95 列的线性回归高,接近只用五个特征的结果;它留下的列里,常常还混着几列随机数。
对不上的时候,把你的结果和这几条一起发给 AI,让它解释是哪一步出了问题。
自测
加进 90 列随机数以后,训练期 IC 变高、检验期 IC 变低。这种现象叫什么?
- A. 过拟合
- B. 正则化
- C. 标准化
- D. 分组检验
看答案
答案 A。多出来的列让模型在训练数据上找到了更多巧合,这些巧合到了检验期都不算数。
岭回归和 Lasso 的区别是什么?
- A. 两者完全一样
- B. Lasso 会让权重变大
- C. 岭回归只能用于分类
- D. 岭回归把所有权重一起往小里缩,Lasso 会把一部分权重直接压成 0
看答案
答案 D。所以 Lasso 还能顺便挑掉一些没用的列。
约束收多紧(参数 λ)应该怎么定?
- A. 在检验期上试,挑最好的
- B. 只用训练数据来选,比如在训练期内部做交叉验证
- C. 越大越好
- D. 随便选一个
看答案
答案 B。拿检验期来挑参数,等于又偷看了一次答案。
常见坑
- 用测试段选参数
- 把权重大小直接当成信号的重要性(信号之间彼此相关)
下一节
信号与收益的关系不一定是直线。
09树模型与非线性非线性模型什么时候比线性模型更值得用?