过拟合与正则化
过拟合是记住训练噪声;正则化通过约束复杂度改善泛化。
前置知识
通俗直觉
模型可以在有限样本中记住一些偶然细节,训练损失越低并不总意味着新数据表现越好。正则化通过约束目标或模型自由度,把“怎样拟合”与“允许怎样复杂”同时纳入训练。
它不是把错误藏起来,也不能替代正确划分、可靠标签与代表性数据。用泄漏实验选择出的正则强度,仍没有可信独立证据。
常见显式正则化把数据损失与参数惩罚相加,例如 L2 平方范数或 L1 绝对值和;结构限制、早停和数据增强也可以起到相关但不同的约束作用。
强度控制两项之间的取舍。不同库对数据损失的 sum/mean、常数因子和参数命名可能不同,应先核对目标,再比较数值大小。
不是强迫模型“什么都不学”,而是要求额外复杂度有足够数据证据支持。约束太弱可能追随噪声,约束太强也可能抹去真正规律,造成欠拟合。
原有 Ridge 小例子的收缩来自哪里
对 X=[1,2,3]、y=[1.2,1.9,3.4],中心化后的最小二乘斜率为 2.2/2=1.1。采用 sklearn Ridge 的平方残差和加 alpha×w² 约定,alpha=1 时斜率变为 2.2/(2+1)≈0.7333。
下面代码打印的就是这个收缩值。惩罚使训练拟合与权重大小发生权衡,但这三条构造数据没有提供独立测试,不能据此断言新样本误差一定变小。
核心原理
惩罚通过改变优化目标影响参数,并不直接保证泛化提升。训练误差变大可能是预期取舍,但是否值得仍需在相同验证协议下比较。
特征单位影响权重大小,因而影响参数惩罚的含义。缩放、特征构造与正则必须一起放进训练边界审查,不能先用全数据选好尺度再宣称独立验证。
强度通常在训练内部选择,并结合学习曲线、验证波动与实际成本判断。不要因为一张图的差距缩小,就忽略两条曲线都很差的可能。
稀疏或较小的系数仍是模型条件下的关系,不是因果证明。过拟合还可能来自标签泄漏或分布变化,不能只通过增加惩罚来修复。
数学公式
λ 决定拟合训练数据与限制参数大小之间的权衡。
工作流程
- 观察训练/验证误差差距
- 选择正则化方法
- 用验证集调整强度
- 在测试集确认泛化
代码示例
Python
example.pyfrom sklearn.linear_model import Ridge
model = Ridge(alpha=1.0)
model.fit([[1], [2], [3]], [1.2, 1.9, 3.4])
print(model.coef_)- Ridge 使用 L2 正则化
- alpha 越大约束通常越强
Ridge 在线性回归损失中加入权重平方惩罚,减少参数对少量训练样本的过度适配。
本机核对输出
example.py[0.73333333]应用场景
- 小样本建模
- 高维特征选择
- 稳定模型参数
常见误区
- 正则越强不一定越好
- 用测试集调参会造成信息泄漏
推荐学习资料
参考库不会生成虚假资源或无效外部链接。