4、多元线性回归:特征选择、正则化(L1/L2)、R方与调整R方

好,咱们继续往下走。上一章我们把多元线性回归的数学框架搭起来了,知道了怎么用最小二乘法去拟合一堆特征。但说实话,光会拟合远远不够。你想想看,在量化金融里,我们面对的因子可能有上百个,很多因子之间还互相纠缠。这时候,你一股脑全塞进模型里,结果往往很惨——过拟合、共线性、解释力下降,各种问题都来了。

所以这一章,我们来聊聊怎么给模型“做减法”,以及怎么判断模型到底好不好。说白了,就是特征选择、正则化,还有R方和调整R方这些评价指标。

4.1 特征选择:别让垃圾因子拖后腿

我个人习惯,在跑任何回归之前,先做一轮特征筛选。为什么?因为因子多了,模型会变得不稳定。我在项目中遇到过好几次,加了某个看似相关的因子后,回测曲线漂亮得不行,但一到实盘就崩。后来发现,那个因子跟别的因子高度相关,纯粹是噪音。

特征选择的方法有很多,我挑几个常用的说说:

  • 向前选择:从一个空模型开始,每次加一个最显著的因子,直到没有显著因子可加。优点是简单,缺点是可能漏掉组合效应。
  • 向后剔除:先把所有因子都放进去,然后每次剔除最不显著的因子。嗯,这里要注意,如果因子太多,初始模型可能根本跑不动。
  • 逐步回归:结合了向前和向后,每加一个因子,就检查一下已有的因子是否还显著,不显著就踢掉。我个人比较喜欢这种方法,虽然计算量大一点,但结果更稳健。
我的小技巧:在做特征选择时,别忘了看VIF(方差膨胀因子)。如果某个因子的VIF大于10,说明它跟其他因子高度共线性,建议直接剔除。我曾经因为忽略这一点,导致模型系数符号都反了,排查了好久才发现。

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可能会随机选择其中一个保留,其他的都干掉。这时候结果可能不太稳定。

避坑指南:我曾经在选λ时吃过亏。λ太小,正则化没效果;λ太大,所有系数都变成0了。建议用交叉验证来选λ,比如sklearn里的LassoCV和RidgeCV,它们会自动帮你找到最优的λ。

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方就会下降。这样就能防止你无脑加特征。

核心要点:在量化金融中,我更看重调整R方。因为我们的目标是找到真正有预测能力的因子,而不是堆砌噪音。如果加了新因子后,调整R方反而下降了,那就说明这个因子是多余的。

4.4 知识体系总览

为了让你更直观地理解这一章的内容,我画了一张图,把特征选择、正则化和评价指标的关系串起来:

多元线性回归核心流程 原始数据(含多个特征) 特征选择(向前/向后/逐步) L1正则化(Lasso) L2正则化(Ridge) Elastic Net(混合) 训练回归模型 R方 / 调整R方 评价

这张图把整个流程串起来了:从原始数据出发,先做特征选择,然后根据情况选择正则化方法,最后用R方和调整R方来评价模型。每一步都有它的意义,缺一不可。

4.5 实战中的取舍

最后,我想说说实战中的一些取舍。在量化金融里,我们经常面临一个矛盾:模型要足够复杂才能捕捉到市场规律,但又不能太复杂导致过拟合。我个人经验是,先用Lasso做一轮粗筛,把不重要的因子干掉,然后用Ridge或者Elastic Net做精细调整。这样既能控制模型复杂度,又能保留有效信息。

另外,R方和调整R方虽然好用,但别迷信。有时候R方很低,但模型在样本外表现却很好。为什么?因为市场本身噪音很大,能解释10%的方差已经不错了。关键是要看模型是否稳定,因子是否有经济含义。

一句话总结:特征选择帮你剔除噪音,正则化帮你控制复杂度,R方和调整R方帮你判断模型好坏。三者结合,才能构建出真正有效的Alpha模型。

公众号:蓝海资料掘金营,微信deep3321