机器学习的建议
改进机器学习系统性能,常常有以下方法:
- 尝试减少特征的数量 ——解决高方差
- 尝试获得更多的特征——解决高偏差
- 尝试增加多项式特征——解决高偏差
- 尝试减少正则化程度𝜆——解决高偏差
- 尝试增加正则化程度𝜆——解决高方差
- 获得更多的训练样本——解决高方差
本文告诉你如何运用一些机器学习诊断法来帮助我们选择这些方法。
1.通过交叉验证集选择模型
使用 60%的数据作为训练集,使用 20%的数据作为交叉验证集,使用 20%的数据作为测试集。
模型选择的方法为:
- 使用训练集训练出几个备选模型
- 用这些模型分别对交叉验证集计算得出交叉验证误差Jcv(代价函数的值)
- 选取代价函数值Jcv最小的模型
- 用选出的模型对测试集计算得出推广误差Jtest(代价函数的值)
当运行的算法的表现不理想,那么多半是出现两种情况:
1.要么是偏差比较大,欠拟合问题(underfit)。
2.要么是方差比较大,过拟合问题(overfit)。
1.1多项式阶数d和偏差/方差
将训练集和交叉验证集的代价函数误差与多项式的次数绘制在同一张图表上,我们可根据来确定是欠拟合问题还是过拟合问题。
• 当 𝑑 较小时,模型拟合程度更低,训练集误差和交叉验证集误差都较大且近似:高偏差/欠拟合
• 随着 𝑑 的增长,拟合程度提高,训练集误差减小,交叉验证集误差呈现先减小后增大的趋势,交叉验证集误差远大于训练集误差时:高方差/过拟合
1.2正则化λ和偏差/方差
同时将训练集和交叉验证集模型的代价函数误差与 λ 的值绘制在一张图表上。
• 当 𝜆 较小时,训练集误差较小而交叉验证集误差较大(高方差/过拟合)
• 随着 𝜆 的增加,训练集误差不断增加,而交叉验证集误差则是先减小后增加(高偏差/欠拟合)
1.3选择数据集大小
学习曲线是将训练集误差和交叉验证集误差与训练集实例数量(𝑚)的函数绘制的图表。
高偏差问题
高偏差的模型往往阶次低(比如一条直线),拟合越来越多的数据会越来越困难,所以训练误差越来越大。交叉验证集的误差慢慢减小到接近训练误差,但误差仍然很大。
• 所以在高偏差/欠拟合的情况下,增加样本数据帮助不大
高方差问题
假设我们使用一个非常高次的多项式模型,并且正则化非常小,可以看出,当交叉验证集误差远大于训练集误差时,往训练集增加更多数据可以提高模型的效果。
•也就是说在高方差/过拟合的情况下,增加更多数据到训练集可能可以提高算法效果
2.评估假设hθ(x)
我们将数据分成训练集和测试集,通常用 70%的数据作为训练集, 30%的数据作为测试集,训练集和测试集均要含有各种类型的数据。通过训练集得出模型参数后,计算在测试集上的误差来评估该假设模型。
- 对于线性回归模型,利用代价函数J。
- 对于逻辑回归模型,除了可以利用测试数据集来计算代价函数J外,还可以计算误分类的比率:
3.类偏斜的误差度量
类偏斜情况:是我们的训练集中有非常多的同一种类的实例,而其他类非常少的实例。这时,误差的大小是不能视为评判算法效果的依据的,所以要利用其他的方法来度量误差:查准率(Precision)和查全率/召回率(Recall)
首先将预测结果分成四类:
F1分数:又称为平衡F分数,它被定义为精确率和召回率的调和平均数