机器学习之性能分析

来源:互联网 发布:一人能开几个淘宝店 编辑:程序博客网 时间:2024/06/05 05:15

1.查准率(P)和查全率(R)

    以二分类为例,根据样本真实类别与学习器预测类别的组合分为真正例(TP)、假正例(FP)、真反例(TN)、假反例(FN)。分类的混淆矩阵为:
真实情况 预测正例 预测反例 正例 TP FN 反例 FP TN

查准率P=TPTP+FP
查全率R=TPTP+FN

    二者是成反比的关系,如果是挑瓜的话,如果希望把所有的好瓜都挑出来则通过增加选瓜的数量来实现(FN=0),但是这样查准率就会很低;若希望选出的瓜中好瓜比例尽可能搞,则可只挑选最有把握的瓜,但因此漏掉不少好瓜(TP=1,FP=0),使得查全率较低。    一般的P-R曲线如下图所示:

P-R曲线
比较学习器的优劣的时候,若学习器A的P-R曲线被另一个学习器B的曲线完全“包住”,则可断言后者的性能优于前者;如果两个学习器的P-R曲线存在交叉,则难以断孰优孰劣,一种合理的方法是比较二者的P-R曲线面积大小,虽能一定程度表现查准率和查全率取得相对“双高”的比例,但是通常这个值不容易估算,因此需要设计一些其他的度量方法。
一种是“平衡点”(BEP),即查准率等于查全率的取值;另一种更常用的是F1度量。

2.F1数

F1数是基于查准率和查全率的调和平均数定义的:

1F1=12(1P+1R)

Fβ则是加权调和平均数
1Fβ=11+β2(1P+β2R)

Fβ为一般形式,β=1时退化为F1的形式;β>1时侧重查全率;β<1 时侧重查准率。

3.ROC与AUC

3.1 ROC曲线

学习算法通常对测试样本产生一个概率预测,然后将这个预测值与一个分类阈值T进行对比,若大于T则归为正类,否则为负类。测试过程中对每个测试样本产生一个在[0,1]之间的实数。这个阈值将样本分为两部分,前一部分判为正例,后一部分判为负例。

在不同任务中,我们可根据任务需求来采取不同的阈值。若我们更重视“查准率”,则可以选择排序中考前的位置进行截断;若更重视“查全率”则可考虑更靠后的位置进行截断。因此排序本身质量好坏,体现了综合考虑学习器在不同任务中的“期望泛化性能”的好坏,或者说,“一般情况下”泛化性能的好坏。ROC曲线则是从这个角度研究学习器泛化性能的有力工具
ROC全称是“受试者工作特征”。“ROC曲线”的横轴为假阳性率、纵轴为真阳性率,二者定义为:

TPR=TPTP+FN

FPR=FPTN+FP

“ROC曲线”
ROC曲线的几个特征点:
(1)对角线对应于“随机猜测”模型,真阳性率和假阳性率相等;
(2)一个学习器的ROC曲线被另一个曲线完全“包住”,则后者的性能优于前者;
(3)ROC曲线越逼近左上角,性能越好。
(4)ROC比起P-R曲线,正负样本分布变化时能保持基本不变。比如如果负样本增加到原来的10倍,ROC曲线基本不变,而P-R曲线发生很大的变化。
“图 ROC及P-R随正负样本变化的趋势”

如果两个ROC曲线发生交叉,则一般难以断言两者孰优孰劣,较为合理的判据是ROC曲线下的面积,即**AUC**  .现实任务中一般为有限个测试样本。如何用有限样本绘制ROC曲线?如图b所示,我们可以绘制成分段曲线:假设给定$m_+$个正样本和$m_-$个负样本,根据学习器输出的预测结果进行排序;首先将阈值设为最大,则全部预测为负例,真阳性率和假阳性率都是0,坐标(0,0);从大到小依次取预测结果作为阈值,假设前一个点坐标为(x,y),当前若为正样本,则TP加一,坐标变为$(x,y+\frac{1}{m_+})$,若为负样本,则FP加一,坐标变为$(x+\frac{1}{m_-},y)$。最后讲所有点依次用线段连接成ROC曲线。

3.2 AUC

AUC可估算为:

AUC=12i=1m1(xi+1xi)(yi+yi+1)

形式化地看,AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密联系。给定m+个正样本和m个负样本,令D+D表示正负例集合,则损失(loss)定义为:
lrank=1m+mx+D+xD(II(f(x+)<f(x))+12II(f(x+)=f(x)))

即考虑每一对正负例,若正例的预测值小于反例则记一个“罚分”,若相等,则记0.5个“罚分”,即lrank为ROC曲线上面的面积:
AUC=1lrank

AUC的理解:AUC表示任取正样本预测结果大于任何负样本预测结果的概率。下面来自一个知乎网友的解释。

随机抽取一个样本, 对应每一潜在可能值X都对应有一个判定位正样本的概率P。对一批已知正负的样本集合进行分类,按概率从高到矮排个降序, 对于正样本中概率最高的,排序为rank_1, 比它概率小的有M-1个正样本(M为正样本个数), (rank_1 - M) 个负样本。 正样本概率第二高的, 排序为rank_2, 比它概率小的有M-2个正样本,(rank_2 - M + 1) 个 负样本。以此类推正样本中概率最小的, 排序为rank_M,比它概率小的有0个正样本,rank_M - 1 个负样本。总共有MxN个正负样本对(N为负样本个数)。把所有比较中 正样本概率大于负样本概率 的例子都算上, 得到公式(rank_1 - M + rank_2 - M + 1 …. + rank_M - 1) / (MxN) 就是正样本概率大于负样本概率的可能性了。 化简后(因为后面是个等差数列)得:

原创粉丝点击