目录
【此为本人学习吴恩达的机器学习课程的笔记记录,有错误请指出!】
误差分析
在本次课程中,我们将会讲到误差分析( Error Analysis)的概念。如果你准备研究机器学习的东西,或者构造机器学习应用程序,最好的实践方法不是建立一个非常复杂的系统,拥有多么复杂的变量,而是构建一个简单的算法,这样你可以很快地实现它。
构建一个学习算法的推荐方法为:
1. 从一个简单的能快速实现的算法开始,实现该算法并用交叉验证集数据测试这个算法。
2. 绘制学习曲线,决定是增加更多数据,或者添加更多特征,还是其它选择。
3. 进行误差分析:人工检查交叉验证集中算法产生预测误差的实例,看看这些实例是否有某种系统化的趋势。
如:以垃圾邮件过滤器为例,误差分析要做的是检验交叉验证集中我们的算法产生错误预测的所有邮件,看是否能将这些邮件按照类分组。例如医药品垃圾邮件,仿冒品垃圾邮件或者密码窃取邮件等。然后看分类器对哪一组邮件的预测误差最大,并着手优化。
思考怎样能改进邮件分类器。例如,发现是否缺少某些特征,记下这些特征出现的次数, 然后从出现次数最多的情况开始着手优化。
误差分析并不总能帮助我们判断应该采取怎样的行动。有时我们需要尝试不同的模型,然后进行比较,在模型比较时,用数值来判断哪一个模型更好更有效,通常做法是看交叉验证集的误差。
推荐在交叉验证集上来实施误差分析,而不是在测试集上。
类偏斜的误差度量
类偏斜情况表现为训练集中有非常多的同一种类的实例,只有很少或没有其它类的实例。
在类偏斜的情况下, 交叉验证集误差的大小是不能视为评判算法效果的依据(因为如果某类样本占大部分比率,如99%,即使模型最后把交叉验证集都判定为该类,得到的误差也是1%,虽然得到的误差很小,但是该模型的效果并不是合理)。
我们将算法预测的结果分成四种情况:
查准率/精确率( Precision): (Precision) = TP / (TP + FP)
查全率/召回率( Recall) : (Recall) = TP / (TP + FN)
如负类样本占大部分比率,如99%,即使模型最后把交叉验证集都判定为负类, 得到查全率是 0。
查准率和查全率之间的权衡
查准率和查全率作为偏斜类问题的评估度量值,在很多应用中,我们希望能够保证查准率和查全率的相对平衡。
假设算法输出的结果在 0-1 之间,我们使用阀值 0.5 来预测真和假。在不同阀值情况下,把查全率与查准率的关系绘制成图表, 曲线的形状根据数据的不同而不同:
我们希望有一个帮助我们选择这个阀值的方法。一种方法是计算 F1 值( F1 Score),其计算公式为:
我们选择使得 F1 值最高的阀值。
机器学习的数据
将不同的算法用于不同大小的训练集中,可以发现,随着训练集的增加,不同算法都能得到不错的预测效果:
这些趋势非常明显, 大部分算法都具有相似的性能。
这样的结果,在机器学习中引起了普遍共识: "取得成功的人不是拥有最好算法的人,而是拥有最多数据的人"。
这句话不是在所有的情况下都正确的,所以我们要先诊断算法是处于高偏差还是高方差,在高方差的情况下是正确的,而在高偏差的情况下并无效果。