学习笔记-机器学习-(7)机器学习应用建议
吴恩达-机器学习课程--10: Advice for applying Machine Learning的学习总结:
当我们发现建立的模型预测错误率很高时,通常会采取以下措施:
Get more training data
Try a smaller set a features
Try getting additional features
Adding polynomial features
Building your own, new, better features
Try decreasing or increasing λ
我们可以运用机器学习的诊断法来判断为了改进算法性能需要做哪些改变,不过诊断法也需要花费一定的时间。
评估预测模型:
将数据集7/3分,分为训练集和测试集,训练集训练模型,测试集测试误差
训练集 测试集例如逻辑回归算法的误差测试如下:
逻辑回归算法误差测试可以计算误分类率也就是分类错误的比率:
错误情况 误分类率计算模型选择:
不同次数多项式模型把数据集分为三部分
1 - Training set (60%) -
2 - Cross validation set(CV) (20%) --交叉验证集
3 - Test set(20%)
使用训练集训练不同模型参数θ,再用交叉验证集验证所有模型的误差,选择误差最小的那个模型(比如五次)。最后用测试集来测试模型。
诊断高偏差or高方差
算法表现不理想可能是出现了以下两种情况种的一种:
高偏差(high bias)--欠拟合
高方差(hign variance)--过拟合
画出下图可做诊断,x轴为多项式次数,y轴为误差。次数越大越拟合训练集,但因为过拟合,在验证集中表现不好。易知训练集和验证集的误差和次数的关系如图中所示。
诊断图所以训练集和验证集的误差都高,则发生了欠拟合的情况
训练集误差低而验证集误差高,则发生了过拟合情况
正则化对高偏差/高方差的影响:
以线性回归的正则化为例:
线性回归的正则化如果λ选取过大,则可能出现欠拟合情况
如果λ选取过小,趋于0,那基本等于没有正则化,可能出现过拟合情况
如何选择合适的λ值呢
--用递增的λ,带入模型测试:
递增的λ易知训练集和验证集的误差率与λ选取的关系图:
误差率与λ值的关系学习曲线:
画出学习曲线可以帮助我们检查算法的情况,例如训练集大小与训练集和验证集误差的关系:
训练集m小,模型能很好的拟合数据集,误差极小,而模型泛化能力差,误差极大。
m增大,模型不能很好的拟合所有训练集了,误差增大,而训练集越大越能训练出合适的模型,泛化能力越好,误差减小。
练集大小与误差关系如果出现欠拟合情况,学习曲线如下图:
欠拟合误差曲线和的误差趋于水平,接近且都很高,此时增加数据集对改进算法没有帮助。
如果出现过拟合情况,学习曲线如下图:
过拟合误差曲线训练集和验证集误差相距很大。当训练集m增大,和的误差率会靠近,增加数据集对改进算法可能有帮助。
回到最开始,当我们发现建立的模型预测错误率很高时,通过学习曲线判断情况,选择合适的方式提高算法性能:
Get more examples --> helps to fix high variance
Smaller set of features --> fixes high variance
Try adding additional features --> fixes high bias (because hypothesis is too simple, make hypothesis more specific)
Add polynomial terms --> fixes high bias
Decreasing λ --> fixes high bias
Increases λ --> fixes high variance