周志华《Machine Learning》学习笔记(2)--性能度量 本篇主要是对第二章剩余知识的理解包括性能度量、比较检验和偏差与方差。在上一篇中我们解决了评估学习器泛化性能的方法即用测试集的“测试误差”作为“泛化误差”的近似当我们划分好训练/测试集后那如何计算“测试误差”呢这就是性能度量例如均方差错误率等即“测试误差”的一个评价标准。有了评估方法和性能度量就可以计算出学习器的“测试误差”但由于“测试误差”受到很多因素的影响例如算法随机性或测试集本身的选择那如何对两个或多个学习器的性能度量结果做比较呢这就是比较检验。最后偏差与方差是解释学习器泛化性能的一种重要工具。写到后面发现冗长之后读起来十分没有快感故本篇主要知识点为性能度量。2.5 性能度量性能度量performance measure是衡量模型泛化能力的评价标准在对比不同模型的能力时使用不同的性能度量往往会导致不同的评判结果。本节除2.5.1外其它主要介绍分类模型的性能度量。2.5.1 最常见的性能度量在回归任务中即预测连续值的问题最常用的性能度量是“均方误差”mean squared error,很多的经典算法都是采用了MSE作为评价函数想必大家都十分熟悉。在分类任务中即预测离散值的问题最常用的是错误率和精度错误率是分类错误的样本数占样本总数的比例精度则是分类正确的样本数占样本总数的比例易知错误率精度1。2.5.2 查准率/查全率/F1错误率和精度虽然常用但不能满足所有的需求例如在推荐系统中我们只关心推送给用户的内容用户是否感兴趣即查准率或者说所有用户感兴趣的内容我们推送出来了多少即查全率。因此使用查准/查全率更适合描述这类问题。对于二分类问题分类结果混淆矩阵与查准/查全率定义如下初次接触时FN与FP很难正确的理解按照惯性思维容易把FN理解成False-Negtive即将错的预测为错的这样FN和TN就反了后来找到一张图描述得很详细为方便理解把这张图也贴在了下边正如天下没有免费的午餐查准率和查全率是一对矛盾的度量。例如我们想让推送的内容尽可能用户全都感兴趣那只能推送我们把握高的内容这样就漏掉了一些用户感兴趣的内容查全率就低了如果想让用户感兴趣的内容都被推送那只有将所有内容都推送上宁可错杀一千不可放过一个这样查准率就很低了。“P-R曲线”正是描述查准/查全率变化的曲线P-R曲线定义如下根据学习器的预测结果一般为一个实值或概率对测试样本进行排序将最可能是“正例”的样本排在前面最不可能是“正例”的排在后面按此顺序逐个把样本作为“正例”进行预测每次计算出当前的P值和R值如下图所示P-R曲线如何评估呢若一个学习器A的P-R曲线被另一个学习器B的P-R曲线完全包住则称B的性能优于A。若A和B的曲线发生了交叉则谁的曲线下的面积大谁的性能更优。但一般来说曲线下的面积是很难进行估算的所以衍生出了“平衡点”Break-Event Point简称BEP即当PR时的取值平衡点的取值越高性能更优。P和R指标有时会出现矛盾的情况这样就需要综合考虑他们最常见的方法就是F-Measure又称F-Score。F-Measure是P和R的加权调和平均即特别地当β1时也就是常见的F1度量是P和R的调和平均当F1较高时模型的性能越好。有时候我们会有多个二分类混淆矩阵例如多次训练或者在多个数据集上训练那么估算全局性能的方法有两种分为宏观和微观。简单理解宏观就是先算出每个混淆矩阵的P值和R值然后取得平均P值macro-P和平均R值macro-R在算出Fβ或F1而微观则是计算出混淆矩阵的平均TP、FP、TN、FN接着进行计算P、R进而求出Fβ或F1。2.5.3 ROC与AUC如上所述学习器对测试样本的评估结果一般为一个实值或概率设定一个阈值大于阈值为正例小于阈值为负例因此这个实值的好坏直接决定了学习器的泛化性能若将这些实值排序则排序的好坏决定了学习器的性能高低。ROC曲线正是从这个角度出发来研究学习器的泛化性能ROC曲线与P-R曲线十分类似都是按照排序的顺序逐一按照正例预测不同的是ROC曲线以“真正例率”True Positive Rate简称TPR为横轴纵轴为“假正例率”False Positive Rate简称FPRROC偏重研究基于测试样本评估值的排序好坏。简单分析图像可以得知当FN0时TN也必须0反之也成立我们可以画一个队列试着使用不同的截断点即阈值去分割队列来分析曲线的形状0,0表示将所有的样本预测为负例1,1则表示将所有的样本预测为正例0,1表示正例全部出现在负例之前的理想情况1,0则表示负例全部出现在正例之前的最差情况。限于篇幅这里不再论述。现实中的任务通常都是有限个测试样本因此只能绘制出近似ROC曲线。绘制方法首先根据测试样本的评估值对测试样本排序接着按照以下规则进行绘制。同样地进行模型的性能比较时若一个学习器A的ROC曲线被另一个学习器B的ROC曲线完全包住则称B的性能优于A。若A和B的曲线发生了交叉则谁的曲线下的面积大谁的性能更优。ROC曲线下的面积定义为AUCArea Uder ROC Curve不同于P-R的是这里的AUC是可估算的即AOC曲线下每一个小矩形的面积之和。易知AUC越大证明排序的质量越好AUC为1时证明所有正例排在了负例的前面AUC为0时所有的负例排在了正例的前面。2.5.4 代价敏感错误率与代价曲线上面的方法中将学习器的犯错同等对待但在现实生活中将正例预测成假例与将假例预测成正例的代价常常是不一样的例如将无疾病–有疾病只是增多了检查但有疾病–无疾病却是增加了生命危险。以二分类为例由此引入了“代价矩阵”cost matrix。在非均等错误代价下我们希望的是最小化“总体代价”这样“代价敏感”的错误率2.5.1节介绍为同样对于ROC曲线在非均等错误代价下演变成了“代价曲线”代价曲线横轴是取值在[0,1]之间的正例概率代价式中p表示正例的概率纵轴是取值为[0,1]的归一化代价。代价曲线的绘制很简单设ROC曲线上一点的坐标为(TPRFPR) 则可相应计算出FNR然后在代价平面上绘制一条从(0FPR) 到(1FNR) 的线段线段下的面积即表示了该条件下的期望总体代价如此将ROC 曲线土的每个点转化为代价平面上的一条线段然后取所有线段的下界围成的面积即为在所有条件下学习器的期望总体代价如图所示在此模型的性能度量方法就介绍完了以前一直以为均方误差和精准度就可以了现在才发现天空如此广阔~