【漫话机器学习系列】200.过度拟合(Overfitting)

什么是过度拟合(Overfitting)?

1. 过度拟合的定义

过度拟合(Overfitting)是指机器学习模型在训练数据上表现得非常好,但在新数据(测试集)上的表现很差。原因是模型把训练数据的特征甚至噪声都记住了,导致泛化能力差。


2. 公式理解

假设数据分布:

y = f(x) + ϵ

正常目标: 找到一个接近 f(x) 的函数 h(x),使得:

L = \frac{1}{n} \sum_{i=1}^{n} (h(x_i) - y_i)^2

尽可能小,同时在未知数据上表现良好。

但过拟合的现象是:

导致训练误差极低,测试误差极高。


4. 代码实战演示(Python)

数据集:sin曲线 + 噪声
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# 构造数据
np.random.seed(0)
X = np.linspace(0, 10, 20)
y = np.sin(X) + np.random.normal(0, 0.2, 20)

# 训练高阶多项式模型
poly = PolynomialFeatures(degree=15)
X_poly = poly.fit_transform(X.reshape(-1, 1))

model = LinearRegression()
model.fit(X_poly, y)

# 预测
X_test = np.linspace(0, 10, 100)
X_test_poly = poly.transform(X_test.reshape(-1, 1))
y_pred = model.predict(X_test_poly)

# 可视化
plt.scatter(X, y, label='Train Data')
plt.plot(X_test, y_pred, color='r', label='Overfitting Model')
plt.legend()
plt.show()

 


5. 如何避免 Overfitting?

方法思路技术实现
简化模型降低复杂度减少特征、多项式降阶
增加数据增强泛化数据扩充、数据增强
正则化惩罚复杂度L1 / L2 正则
交叉验证提高可靠性K-Fold CV
提前停止防止过拟合Early Stopping
Dropout随机丢弃神经元深度学习常用

6. 小结

过度拟合是机器学习模型中的重要陷阱。它提醒我们:模型不在于追求训练集的完美拟合,而在于对未知数据的良好预测。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值