机器学习知识点:正则化

今天我们来聊一个解决过拟合时经常出现的方法:正则化 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)
相关推荐
stephon_1006 小时前
Agent 接入 MCP 后上下文爆炸、工具选串?一种“按需激活“的工具加载方案(含实现)
人工智能·python·ai
TickDB6 小时前
统一行情 API 查 A 股、港股、美股和数字货币:code=0 不代表 symbol 一个没少
人工智能·python·websocket·mcp·行情数据 api
菜鸡爱玩9 小时前
线性代数矩阵相乘
线性代数·算法·矩阵
滴图服务-七七12 小时前
滴滴地图:精准定位赋能企业数字化转型
大数据·人工智能·地图服务·甲级测绘资质·商业授权
爱学习的程序媛12 小时前
2026上半年大模型全景技术解读:推理融合、Agent 爆发与多模态统一
人工智能·ai
devilnumber13 小时前
Java 递归算法 详解 + 核心要点 + 实战运用 + 避坑指南
java·开发语言·算法
A.说学逗唱的Coke13 小时前
【大模型专题】向量数据库深度解析:从原理到实战,构建企业级 AI 知识检索底座
数据库·人工智能
果丁智能14 小时前
智能锁赋能网约房民宿数字化管控:身份核验+远程授权,筑牢安全防线、降本增效
网络·数据库·人工智能·安全·智能家居
V搜xhliang024614 小时前
AI智能体的数据安全与合规实践
人工智能·学习·数据分析·自动化·ai编程
大貔貅喝啤酒14 小时前
Python Requests库教程
自动化测试·python·requests库