1.误差分析
构建一个学习算法的推荐方法为:
1.从一个简单的能快速实现的算法开始,实现该算法并用交叉验证集数据测试这个算法
2.绘制学习曲线,决定是增加更多数据,或者添加更多特征,还是其他选择
3.进行误差分析:人工检查交叉验证集中算法产生预测误差的实例,看看这些实例是否有某种系统化的趋势(共同的特征和规律)
以垃圾邮件过滤器为例,误差分析要做的既是检验交叉验证集中算法产生错误预测的所有邮件,看:是否能将这些邮件按照类分组。例如医药品垃圾邮件,仿冒品垃圾邮件或者密码窃取邮件等。然后看分类器对哪一组邮件的预测误差最大,并着手优化。
思考怎样能改进分类器。例如,发现是否缺少某些特征,记下这些特征出现的次数。例如记录下错误拼写出现了多少次,异常的邮件路由情况出现了多少次等等,然后从出现次数最多的情况开始着手优化。
误差分析并不总能帮助我们判断应该采取怎样的行动。有时我们需要尝试不同的模型,然后进行比较,在模型比较时,用数值来判断哪一个模型更好更有效,通常我们是看交叉验证集的误差。
4.数值分析
改进学习算法的时候,如果算法能够返回一个数值评价指标来估计算法执行的效果,将会很有帮助。可能算法是准确的,也有可能是错误的,但这个数字(能够看出误差变大还是变小、效果变好还是变坏)能够告诉我们学习算法的效果怎么样。
2.分类模型的评估
精确率(Precision)
精确率:预测结果为正例样本中真实为正例的比例(查得准)
查准率=TP/(TP+FP)
召回率(Recall)
召回率:真实为正例的样本中预测结果为正例的比例(查的全)
查全率=TP/(TP+FN)。
3.查准率和查全率之间的权衡
将不同阀值情况下,查全率与查准率的关系绘制成图表,曲线的形状根据数据的不同而不同,以Logistic回归模型为例:
通常以F1值来帮助选择阈值,计算公式为:
其中,P为查准率,R为查全率
选择使得F1值最高的阈值。