今天我们来聊一个解决过拟合时经常出现的方法:正则化 Regularization.前面我们讲过,过拟合是模型在训练集上表现很好,但在测试集上表现变差。那怎么让模型不要学得太复杂、太死呢?一个常用答案就是:给模型加一点"约束"。这就是正则化的核心思想。
01 什么是正则化?
正则化是一种控制模型复杂度的方法。它的目标不是让模型在训练集上拿到最高分,而是让模型在新数据上表现更稳定。一句话理解:正则化就是在训练模型时,限制参数不要变得过大,从而降低过拟合风险。如果模型参数特别大,模型往往会对训练数据中的细节和噪声非常敏感。正则化就是提醒模型:
别太复杂别太极端学规律,不要死记噪声
02 为什么参数太大会有问题?
以线性模型为例:
y = w1x1 + w2x2 + ... + b
其中 w1、w2这些就是模型参数。如果某些参数特别大,说明模型对某些特征非常敏感。这样模型可能会为了拟合训练集中的少数样本,把决策边界变得很复杂。结果就是:
训练集表现很好测试集表现下降
这就是过拟合的典型表现。
03 正则化怎么做?
正则化通常是在原来的损失函数后面,加上一个惩罚项。原本模型只关心:
预测误差尽可能小
加入正则化后,模型同时关心:
预测误差要小参数也不要太大
为方便大家学习 这里给大家整理了一份学习资料包 需要的同学 根据下图自取即可

可以理解为:
最终目标 = 预测误差 + 参数复杂度惩罚
这样模型就不会为了训练集表现无限增加复杂度。
04 常见的两种正则化
最常见的是:
L1 正则化L2 正则化
L1 正则化
L1 正则化会惩罚参数绝对值之和:
|w1| + |w2| + |w3| + ...
它的一个特点是:可能让某些参数变成 0。所以 L1 正则化常用于特征选择。
L2 正则化
L2 正则化会惩罚参数平方和:
w1² + w2² + w3² + ...
它的特点是:让参数整体变小,但通常不会直接变成 0。
L2 正则化更常用于让模型更平滑、更稳定。
05 实现代码:对比有无正则化
下面用逻辑回归演示正则化的使用。在 scikit-learn`中,逻辑回归默认就带有 L2 正则化。from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegressionfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import accuracy_score# 生成一个分类数据集X, y = make_classification( n_samples=800, n_features=30, n_informative=8, n_redundant=10, random_state=42)# 划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, random_state=42)# 较弱正则化:C 越大,正则化越弱weak_reg_model = LogisticRegression( C=100, max_iter=1000)weak_reg_model.fit(X_train, y_train)weak_train_pred = weak_reg_model.predict(X_train)weak_test_pred = weak_reg_model.predict(X_test)print("弱正则化训练集准确率:", accuracy_score(y_train, weak_train_pred))print("弱正则化测试集准确率:", accuracy_score(y_test, weak_test_pred))# 较强正则化:C 越小,正则化越强strong_reg_model = LogisticRegression( C=0.1, max_iter=1000)strong_reg_model.fit(X_train, y_train)strong_train_pred = strong_reg_model.predict(X_train)strong_test_pred = strong_reg_model.predict(X_test)print("强正则化训练集准确率:", accuracy_score(y_train, strong_train_pred))print("强正则化测试集准确率:", accuracy_score(y_test, strong_test_pred))
06 C 参数怎么理解?
在 LogisticRegression中,参数 C控制正则化强度。需要注意:
C 越大,正则化越弱C 越小,正则化越强
为方便大家学习 这里给大家整理了一份学习资料包 需要的同学 根据下图自取即可

可以这样记:
C 大:模型更自由,可能更容易过拟合C 小:模型更受约束,可能更稳,但太小也可能欠拟合
所以,正则化不是越强越好。它的关键是找到一个合适的平衡点。
07 今日总结
一句话理解正则化:正则化就是给模型复杂度加惩罚,让模型少记噪声,多学规律。它常用于缓解过拟合。常见类型:
L1 正则化:可能让参数变成 0,适合特征选择L2 正则化:让参数整体变小,模型更平滑稳定
核心参数:
C 越大,正则化越弱C 越小,正则化越强
今日关键词
正则化RegularizationL1L2过拟合模型复杂度LogisticRegression
今日代码核心
LogisticRegression(C=0.1, max_iter=1000)