用学习曲线 learning curve 来判别过拟合问题

学习曲线通过绘制不同训练集大小下模型的训练和验证准确率,揭示模型的方差和偏差。高偏差(左上)可能表示欠拟合,需要增强模型复杂度;高方差(右上)则表明过拟合,可通过增大训练集或降低模型复杂度解决。理想的曲线应是两者误差小并收敛。文章以naive Bayes和SVM为例,展示了如何绘制和解读学习曲线。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文结构:

  • 学习曲线是什么?
  • 怎么解读?
  • 怎么画?

学习曲线是什么?

学习曲线就是通过画出不同训练集大小时训练集和交叉验证的准确率,可以看到模型在新数据上的表现,进而来判断模型是否方差偏高或偏差过高,以及增大训练集是否可以减小过拟合。


怎么解读?

当训练集和测试集的误差收敛但却很高时,为高偏差。
左上角的偏差很高,训练集和验证集的准确率都很低,很可能是欠拟合。
我们可以增加模型参数,比如,构建更多的特征,减小正则项。
此时通过增加数据量是不起作用的。

当训练集和测试集的误差之间有大的差距时,为高方差。
当训练集的准确率比其他独立数据集上的测试结果的准确率要高时,一般都是过拟合。
右上角方差很高,训练集和验证集的准确率相差太多,应该是过拟合。
我们可以增大训练集,降低模型复杂度,增大正则项,或者通过特征选择减少特征数。

理想情况是是找到偏差和方差都很小的情况,即收敛且误差较小。


### 如何通过学习曲线识别机器学习模型的过拟合现象 #### 学习曲线上显示的现象 当绘制训练集和验证集上的性能度量(如误差或准确率)随样本数量变化的学习曲线时,可以观察到不同类型的模式来区分过拟合情况。对于过拟合的情形,在较小的数据子集上训练时,模型能够很好地适应这些有限的例子,因此训练错误会非常低;然而,随着更多样本来增加泛化能力的需求变得明显,测试/验证集合上的表现则不会同样改善甚至恶化[^1]。 #### 训练与验证差距显著增大 具体来说,如果存在明显的过拟合问题,则会在图形中看到两个重要的特征: - **高方差**:训练损失远低于交叉验证(或开发)集上的损失; - **差异扩大趋势**:两条线之间的距离逐渐拉大而不是趋于一致,这表明尽管在已知数据上有很好的效果,但在未见过的新实例面前却失去了准确性。 #### 可视化示例 为了更直观理解这一点,下面给出了一段用于生成理想化的学习曲线对比图的Python代码片段,其中红色表示训练得分而蓝色代表验证得分: ```python import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import learning_curve def plot_learning_curves(estimator, X, y): train_sizes, train_scores, test_scores = learning_curve( estimator, X, y, cv=5, n_jobs=-1, scoring='neg_mean_squared_error', train_sizes=np.linspace(.1, 1.0, 5)) train_scores_mean = -train_scores.mean(axis=1) test_scores_mean = -test_scores.mean(axis=1) plt.figure() plt.title("Learning Curves (MSE)") plt.xlabel("Training examples") plt.ylabel("Score") plt.plot(train_sizes, train_scores_mean, 'o-', color="r", label="Training score") plt.plot(train_sizes, test_scores_mean, 'o-', color="g", label="Cross-validation score") plt.legend(loc="best") return plt ``` 此函数接受一个估计器对象`estimator`以及输入特征矩阵`X`和目标向量`y`作为参数,并返回带有标记说明的学习曲线图表。注意这里的分数是以均方误差的形式呈现出来的,所以越接近于零越好。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值