机器学习知识点:正则化

今天我们来聊一个解决过拟合时经常出现的方法:正则化 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)
相关推荐
手写码匠7 小时前
从零实现一个轻量级向量搜索引擎(Python 版)
人工智能·深度学习·算法·aigc
行者-全栈开发7 小时前
【AI交通安全】IoT智能机车实战:ESP32+MQTT+Flink全栈方案,事故率降65%
人工智能·物联网·mqtt·flink·时序数据库·influxdb·智能机车
a752066287 小时前
Windows 11运行OpenClaw(小龙虾)完整指南:从下载到Gateway在线
人工智能·windows·gateway·小龙虾·ai 办公自动化·小龙虾一键部署
这张生成的图像能检测吗7 小时前
(论文速读)基于GAN的一维医学数据增强
人工智能·生成对抗网络·图像生成·一维影像组学·数据扩充
AI2512247 小时前
AI短剧制作工具工作流对比,从项目画布到团队交付
人工智能
初心未改HD7 小时前
LLM应用开发之Prompt工程详解
人工智能
杨连江7 小时前
人生时序堆叠推演神经网络(LTSI-Net)——基于个人全维度生活时序数据的未来轨迹预测模型
人工智能·经验分享·深度学习·神经网络·生活
hsg777 小时前
简述:视觉语言大模型(VLM)
人工智能·深度学习
RSTJ_16257 小时前
PYTHON+AI LLM DAY FIFITY-FOUR
人工智能·深度学习·神经网络