4、多元线性回归:特征选择、正则化(L1/L2)、R方与调整R方
好,咱们继续往下走。上一章我们把多元线性回归的数学框架搭起来了,知道了怎么用最小二乘法去拟合一堆特征。但说实话,光会拟合远远不够。你想想看,在量化金融里,我们面对的因子可能有上百个,很多因子之间还互相纠缠。这时候,你一股脑全塞进模型里,结果往往很惨——过拟合、共线性、解释力下降,各种问题都来了。
所以这一章,我们来聊聊怎么给模型“做减法”,以及怎么判断模型到底好不好。说白了,就是特征选择、正则化,还有R方和调整R方这些评价指标。
4.1 特征选择:别让垃圾因子拖后腿
我个人习惯,在跑任何回归之前,先做一轮特征筛选。为什么?因为因子多了,模型会变得不稳定。我在项目中遇到过好几次,加了某个看似相关的因子后,回测曲线漂亮得不行,但一到实盘就崩。后来发现,那个因子跟别的因子高度相关,纯粹是噪音。
特征选择的方法有很多,我挑几个常用的说说:
- 向前选择:从一个空模型开始,每次加一个最显著的因子,直到没有显著因子可加。优点是简单,缺点是可能漏掉组合效应。
- 向后剔除:先把所有因子都放进去,然后每次剔除最不显著的因子。嗯,这里要注意,如果因子太多,初始模型可能根本跑不动。
- 逐步回归:结合了向前和向后,每加一个因子,就检查一下已有的因子是否还显著,不显著就踢掉。我个人比较喜欢这种方法,虽然计算量大一点,但结果更稳健。
4.2 正则化:给模型戴上“紧箍咒”
特征选择是硬剔除,但有时候我们不想完全丢掉某个因子,只是想让它的影响小一点。这时候,正则化就派上用场了。正则化的核心思想,就是在损失函数里加一个惩罚项,让模型系数不要太大。
常见的两种正则化方法:L1(Lasso)和L2(Ridge)。
4.2.1 L2正则化(Ridge回归)
L2正则化加的是系数平方和的惩罚。说白了,它会让所有系数都往0缩,但不会真正变成0。这样做的好处是,能有效缓解多重共线性,让模型更稳定。
数学上,Ridge回归的损失函数长这样:
Loss = MSE + λ * Σ(β_j²)
这里的λ是超参数,控制惩罚力度。λ越大,系数缩得越厉害。我在做因子组合时,经常用Ridge来处理那些相关性较高的因子组,效果还不错。
4.2.2 L1正则化(Lasso回归)
L1正则化加的是系数绝对值的和。它的特点是,会让一些不重要的系数直接变成0。这就相当于自动做了特征选择。
Loss = MSE + λ * Σ|β_j|
你想想看,Lasso把不重要的因子系数直接砍成0,多省事。但要注意,如果因子之间高度相关,Lasso可能会随机选择其中一个保留,其他的都干掉。这时候结果可能不太稳定。
4.2.3 Elastic Net:L1和L2的混合体
如果你既想要Lasso的特征选择能力,又想要Ridge的稳定性,那就用Elastic Net。它把L1和L2的惩罚项加在一起,通过一个参数r来控制两者的比例。
Loss = MSE + λ * (r * Σ|β_j| + (1-r) * Σ(β_j²))
我个人在实际项目中,Elastic Net用得最多。因为它灵活,能应对各种复杂情况。比如在选股因子中,有些因子是冗余的,有些是互补的,Elastic Net能很好地平衡。
4.3 R方与调整R方:模型到底好不好?
模型建好了,怎么评价?最直观的指标就是R方。R方衡量的是模型能解释多少因变量的方差。取值范围0到1,越接近1说明模型拟合得越好。
但R方有个大问题——它随着特征数量的增加只会变大,不会变小。哪怕你加一个完全随机的噪音因子,R方也会上升。这就尴尬了,你没法判断模型是真的变好了,还是纯粹在过拟合。
所以,我们需要调整R方。它会对特征数量进行惩罚,公式如下:
Adjusted R² = 1 - (1 - R²) * (n - 1) / (n - k - 1)
其中n是样本量,k是特征数量。你看,当k增加时,分母变小,调整R方就会下降。这样就能防止你无脑加特征。
4.4 知识体系总览
为了让你更直观地理解这一章的内容,我画了一张图,把特征选择、正则化和评价指标的关系串起来:
这张图把整个流程串起来了:从原始数据出发,先做特征选择,然后根据情况选择正则化方法,最后用R方和调整R方来评价模型。每一步都有它的意义,缺一不可。
4.5 实战中的取舍
最后,我想说说实战中的一些取舍。在量化金融里,我们经常面临一个矛盾:模型要足够复杂才能捕捉到市场规律,但又不能太复杂导致过拟合。我个人经验是,先用Lasso做一轮粗筛,把不重要的因子干掉,然后用Ridge或者Elastic Net做精细调整。这样既能控制模型复杂度,又能保留有效信息。
另外,R方和调整R方虽然好用,但别迷信。有时候R方很低,但模型在样本外表现却很好。为什么?因为市场本身噪音很大,能解释10%的方差已经不错了。关键是要看模型是否稳定,因子是否有经济含义。
公众号:蓝海资料掘金营,微信deep3321