机器学习知识点:正则化

今天我们来聊一个解决过拟合时经常出现的方法:正则化 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)
相关推荐
爱研究的小梁1 分钟前
乾元通聚合路由及管理平台支持全面适配信创
网络·人工智能·信息与通信
水如烟21 分钟前
孤能子视角:智能系统的持续学习——从关系场存续到模块化生长
人工智能
做一个码农都是奢望23 分钟前
0722 LLM及其科研进展
人工智能
饼饼学习空间智能31 分钟前
2026数字孪生国产化进入“交付验证期”:五类头部企业能力与项目选型分析
人工智能
金銀銅鐵40 分钟前
[Python] 用 turtle 来绘制瑞典国旗
python
Albert Edison40 分钟前
【GUI 自动化测试】Pywinauto 常见操作
自动化测试·python·pywinauto
海兰41 分钟前
【高速缓存】RedisVL为文本生成嵌入向量实践指南
人工智能·python·机器学习
2601_955760071 小时前
如何用 Claude Opus 5 API 批量扩展长尾关键词和文章选题
前端·python·搜索引擎
user-猴子1 小时前
让网页“活”过来 —— 用AI打造会自主学习的动态知识图谱
人工智能·学习·知识图谱
苦瓜小生1 小时前
AI名词大扫盲!最全的面试ai名词集合
人工智能·面试