周志华《机器学习》学习笔记(2)——性能度量

2019/7/22 21:38:50 人评论 次浏览 分类:学习教程

说是学习笔记二,其实上一次的介绍已经把部分第二章模型评估与选择的内容介绍了一些,这次主要是对第二章剩余知识的理解,包括:性能度量、比较检验和偏差和方差。在上一篇中,我们解决了评估学习器泛化性能的方法,即用测试集的“测试误差”作为“泛化误差“的近似,当我们划分好训练/测试集后,那如何计算”测试误差“呢?这就是性能度量,例如:均方差,错误率等,即”测试误差“的一个评价标准。有了评估方法和性能度量,就可以计算出学习器的”测试误差“,但由于“测试误差”受到很多因素的影响,例如:算法随机性或测试集本身的选择,那如何对两个或多个学习器的性能度量结果做比较呢?这就是比较检验。最后偏差与方差是解释学习器泛化性能的一种重要工具。
##目录

文章目录

  • 2.5 性能度量
    • 2.5.1 最常见的性能度量
    • 2.5.2查准率/查全率
    • 2.5.3 ROC与AUC
    • 2.5.4 代价敏感错误率与代价曲线

2.5 性能度量

性能度量(performance measure)是衡量模型泛化能力的评价标准,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果。本节除2.5.1外,其他主要介绍分类模型的性能度量。

2.5.1 最常见的性能度量

在回归任务中,即预测连续值的问题,最常见的性能度量是”均方误差“(mean squared error),很多的经典算法都是采用了MSE作为评价函数,相比大家也十分熟悉。

在分类任务中,即预测离散值的问题,最常用的是错误率和精度,错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例,易知:错误率+精度=1。
[外链图片转存失败(img-lKkCLN4f-1563802513276)(http://puiarp73w.bkt.clouddn.com/FhqO66ZFu5bKWzSXLAyOFcwbqrlq)]

2.5.2查准率/查全率

错误率和精度虽然常用,但不能满足所有的需求,例如:在推荐系统中,我们只关心推送给用户的内容用户是否感兴趣(查准率),或者说所有用户感兴趣的内容我们推送出来了多少(即查全率)。因此,使用查准率、查全率更适合描述这类问题。对于二分类问题,分类结果的”混淆矩阵“与查准/查全率的定义如下:


查准率和查全率是一对矛盾的度量。一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。例如:我们想让推送的内容尽可能用户全都感兴趣,那只能推送我们把我高的内容,这样就漏掉一些用户感兴趣的内容,查全率就低了;如果想让用户感兴趣的内容都被推送,那只有将所有内容都推送上,宁愿推送了一些用户可能不会感兴趣的,都不要把用户可能有一丁点感兴趣的可能的内容错过,这样查准率就很低了。

”P-R曲线“正式描述查准/查全率变化的曲线,P-R曲线定义如下:根据学习器的预测结果(一般为一个实值或概率)对测试样本进行排序,将最可能是正例的样本排在前面,最不可能是”正例“的排在后面,按此顺序逐个把样本作为”正例“进行预测,每次计算出当前P值和R值,如下图所示:

而P-R曲线如何评估呢?若一个学习器A的P-R曲线被另一个学习器的P-R曲线完全包住,则称:B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。但一般来说,曲线下的面积是很难进行估算的,所以衍生除了”平衡点“(Break-Event Point,简称BEP),即当P=R时的取值,平衡点的取值越高,性能越优。

P和R指标有时会出现矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure,又称F-Score。F-Meature是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,简称FPR),ROC偏重研究基于测试样本评估值的排序好坏,


简单分析图像,可以得知:当FN=0时,TN也必须为0,反之也成立,我们可以画一个队列,试着使用不同的截断点(即阈值)去分割队列,来分析曲线的形状。(0,0)表示将所有的样本预测为负例,(1,1)则表示将所有的样本预测为正例,(0,1)表示正例全部出现在负例之前的立项情况,(1,0)则表示负例全部出现在正例之前的最差情况。限于篇幅,这里不再论述。

现实中的任务通常都是有限个测试样本,因此只能绘制出近似ROC曲线。绘制方法:首先根据测试样本的评估值对测试样本排序,接着按照以下规则进行绘制。

同样地,进行模型的性能比较时,若一个学习器A的ROC曲线被另一个学习器B的ROC曲线完全包住,则称B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。ROC曲线下的面积定义为AUC(Area 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曲线上一点的坐标为(TPR,FPR) ,则可相应计算出FNR,然后在代价平面上绘制一条从(0,FPR) 到(1,FNR) 的线段,线段下的面积即表示了该条件下的期望总体代价;如此将ROC 曲线土的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为在所有条件下学习器的期望总体代价,如图所示:

就这样模型的性能度量方法就介绍完了。
参考:https://github.com/Vay-keen/Machine-learning-learning-notes

相关资讯

    暂无相关的资讯...

共有访客发表了评论 网友评论

验证码: 看不清楚?
    -->