机器学习分类问题性能度量的方法
–date 2019.8.29
码完F1度量,ROC、AUC待天填坑
–date 2019.9.3
码完ROC、AUC,更换标题,代价曲线待天填坑
–date 2019.9.4
码完代价曲线,本博文完结
性能度量的目的
对于训练出来的学习器,我们最关注的还是它的泛化能力。即在训练样本外的学习能力,性能度量就是为了衡量泛化能力而诞生的。
性能度量的方法
最简单的:我们采用错误率进行统计,那么对于一般的回归问题,我们可以直接采用均方误差来统计
E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f;D)=\frac{1}{m}\sum_{i=1}^m(f(x_i)-y_i)^2 E(f;D)=m1i=1∑m(f(xi)−yi)2
对于有概率密度的,均方误差可如此描述
E ( f ; D ) = ∫ x − D ( f ( x ) − y ) 2 p ( x ) d x E(f;D)=\int_{x-D}(f(x)-y)^2p(x)dx E(f;D)=∫x−D(f(x)−y)2p(x)dx
同时我们定义了精度与错误率。精度是:分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例,显然有:
P 错 = n 错 N 样 P 精 = 1 − P 错 P_错=\frac{n_错}{N_样}\\ P_精=1-P_错 P错=N样n错P精=1−P错
但是仅仅使用错误率与精度,并不能满足所有的任务需求,因为我们并不仅仅关注于整体的错误与正确率,我们还经常会考虑该分类在所有正例或者反例中的表现情况。所以我们提出了F1度量法
F1度量法
在了解F1度量法前我们首先需要知道的是查准率(precison)与查全率(recall)。我们拿二分类问题来说,那么其两者的定义为。
查准率指的做出了判断后,判断正确的准确率
P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP
查全率指的是做出判断后,有多少正确的被囊括进来了
R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP
查准率与查全率是一对矛盾的度量,虽然我们好像会认为可以通过加强学习器的能力来使得对于每一个样本得到准确的判断从而使得P=T=1,但是实际上当我们想要囊括进更多的正例的时候,R变高,调低阈值必然会使得判断不准确,P减小。
P值与R值在一定程度上都可以反映出该学习器的性能,所以显然的我们可以画出这样的一幅P-R图。
首先我们要注意的是P-R图在大多数情况下并非一条直线,并且不满足P+R=1这一关系。(如果想不明白继续参考定义)
P-R图直观的反映出了学习器在查全率与查准率上的表现,因此在比较不同的学习器的时候,我们可以有这样的直观比较方法:若曲线A完全位于B之上,那么A的查准率与查全率都同时在其之上,那么性能一定更优。比如此处的A、C,而两者有交叉则得视情况而定,如此处A、B。
P-R图还有一点需要注意的地方,我们将其称为平衡点(Break-Event Point),即为PR相等点。我们可以做出BEP直线来得到该学习器的BEP点。在PR图上,我们可以采用BEP度量,一般来说在采用BEP度量时,我们认为平衡点越高越好(因为这意味着PR越大),所以此时我们可以认为A优于B。
但BEP也还是太简单了,所以最常用的是我们真正的主角——F1度量
F1度量的具体形式
F1度量是基于查准率P与查全率R的调和平均值,对于每一组PR值我们都可以得出这样的一个F1的值
F1定义式:
1 F 1 = 1 2 ⋅ ( 1 P + 1 R ) \frac{1}{F1}=\frac{1}{2}·(\frac{1}{P}+\frac{1}{R}) F11=21⋅(P1+R1)
F1化简式:
F 1 = 2 × P × R P + R = 2 × T P 样 例 总 数 + T P − T N F1=\frac{2\times P \times R}{P+R}=\frac{2\times TP}{样例总数+TP-TN} F1=P+R2×P×R=样例总数+TP