“性能度量(performance measure)”即衡量模型泛化能力的评价标准。
模型的“好坏”不仅取决于算法和数据,还决定于任务需求,而性能度量所反映的就是任务需求。
在测试任务中,给定样例集:D={(x1,y1),(x2,y2),…,(xm,ym)}D=\{(\boldsymbol{x_1},y_1),(\boldsymbol{x_2},y_2),…,(\boldsymbol{x_m},y_m)\}D={(x1,y1),(x2,y2),…,(xm,ym)},其中yiy_iyi是示例xi\boldsymbol{x_i}xi的真实标记。通过对比学习器预测结果f(x)f(x)f(x)与真是标记yyy实现学习器fff的性能度量。
回归任务中常见的性能度量
均方根误差(Root mean square error)
RMSE(D,f)=1m∑i=1m(f(xi)−yi)2 RMSE(D,f)=\sqrt{\frac{1}{m}\sum_{i=1}^m\Bigl(f(\boldsymbol{x_i})-y_i\Bigl)^2} RMSE(D,f)=m1i=1∑m(f(xi)−yi)2
在实际应用中常用**均方误差(mean square error,简称MSE)**来代替RMSE。因为最小化MSE要比最小化RMSE更为简单,但两者效果相同。
MSE(D,f)=1m∑i=1m(f(xi)−yi)2
MSE(D,f)=\frac{1}{m}\sum_{i=1}^m\Bigl(f(\boldsymbol{x_i})-y_i\Bigl)^2
MSE(D,f)=m1i=1∑m(f(xi)−yi)2
虽然RMSE(或MSE)通常是回归任务中的首选性能度量,但是在某些情况下,如:当有很多离群区域(outlier districts)时,平均绝对误差可能更加适合。
平均绝对误差(Mean absolute error)
MAE(D,f)=1m∑i=1m∣f(xi)−yi∣
MAE(D,f)=\frac{1}{m}\sum_{i=1}^m|f(\boldsymbol{x_i})-y_i|
MAE(D,f)=m1i=1∑m∣f(xi)−yi∣
RMSE和MAE均 运用于测量预测向量和目标值向量之间的距离。而距离(或范数)的测度可以有多种:
- RMSE对应欧几里得距离(Euclidean distance),也称l2l_2l2范数,记作∣∣•∣∣2||•||_2∣∣•∣∣2或∣∣•∣∣||•||∣∣•∣∣。
- MAE对应曼哈顿距离(Manhattan distance),也称l1l_1l1范数,记作∣∣•∣∣1||•||_1∣∣•∣∣1。
- 一般地,包含n个元素的向量vkv_kvk的范数可以定义为∣∣v∣∣k=(∣v0∣k+∣v1∣k+…+∣vn∣k)1k||\boldsymbol{v}||_k=(|v_0|^k+|v_1|^k+…+|v_n|^k)^\frac{1}{k}∣∣v∣∣k=(∣v0∣k+∣v1∣k+…+∣vn∣k)k1。l0l_0l0给出向量的基数,即元素的数量。l∞l_∞l∞给出向量中最大的绝对值。
- **范数指数越高,越关注大的价值,忽视小的价值。**所以,RMSE要比MAE更加敏感。当异常值较少时,RMSE表现更为优异。
- 对于连续属性,可由概率密度函数进行代替。
分类任务中常见的性能度量
错误率与精度
错误率是分类错误的样本数占样本总数的比例。对样例集DDD,分类错误率定义为:
E(D,f)=1m∑i=1mI(f(x1)≠yi)
E(D,f)=\frac{1}{m}\sum_{i=1}^mI\Bigl(f(\boldsymbol{x_1})\neq {y_i}\Bigl)
E(D,f)=m1i=1∑mI(f(x1)=yi)
其中,I(•)I(•)I(•)为指示函数,当•••为真时取值为1,为假时取值为0。
精度是分类正确的样本数占样本总数的比例。精度定义为:
acc(D,f)=1m∑i=1mI(f(x1)=yi)=1−E(D,f)
acc(D,f)=\frac{1}{m}\sum_{i=1}^mI\Bigl(f(\boldsymbol{x_1})={y_i}\Bigl)=1-E(D,f)
acc(D,f)=m1i=1∑mI(f(x1)=yi)=1−E(D,f)同样,对于连续属性,可有概率密度函数p(•)p(•)p(•)进行描述。
查准率、查全率与F1F_1F1
首先,以二分类为例,引入混淆矩阵(confusion matrix)的概念。在混淆矩阵中,矩阵的行表示真实类别,矩阵的列表示实际类别。按照真是类别与学习器预测类别的组合将样例划分为4种情形:真正例(TPTPTP)、假正例(FPFPFP)、真反例(TNTNTN)、假反例(FNFNFN)。
“查准率(precision)”又称为“准确率”,定义如下:
P=TPTP+FP
P=\frac{TP}{TP+FP}
P=TP+FPTP
“查全率(recall)“又称”召回率“,定义如下:
R=TPTP+FN
R=\frac{TP}{TP+FN}
R=TP+FNTP一般地,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。以查准率为纵轴查全率为横轴作图,得到“查准率-查全率曲线”,简称"P-R曲线"。
通常情况下,若一个学习器的P-R曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者。如果两个学习器的P-R曲线发生交叉,则很难断言两者孰优孰劣,只能在具体的查准率和查全率条件下进行比较。如果硬要将A和B两学习器比个优劣,一个比较合理地判据是比较P-R曲线下的面积,但这个值并不好计算。因此人们设计了一些综合考虑查准率、查全率的性能度量。平衡点(Break-Even Point,简称EBP)就是这样一个度量,也就是指“查准率=查全率”时的取值。但EBP过于简单,更常用的是F1F_1F1度量。
F1F_1F1度量定义如下:
F1=2×P×RP+R=2×TP样例总数+TP−TN
F_1=\frac{2×P×R}{P+R}=\frac{2×TP}{样例总数+TP-TN}
F1=P+R2×P×R=样例总数+TP−TN2×TP
F1F_1F1度量的一般形式FβF_βFβ度量——来表达查准率与查全率的不同偏好,其定义为:
Fβ=(1+β2)×P×R(β2×P)+R
F_β=\frac{(1+β^2)×P×R}{(β^2×P)+R}
Fβ=(β2×P)+R(1+β2)×P×R
其中β>0β>0β>0度量了查全率对查准率的相对重要性。β=1β=1β=1时退化为标准的F1F_1F1;当β>1β>1β>1时对查全率有更大影响;当β<1时对查准率有更大影响。
若在n个二分类器混淆矩阵上综合考虑查准率和查全率,可以直接现在各混淆矩阵上分别计算查准率和查全率,记为(P1,R1),(P2,R2),…,(Pn,Rn)(P_1,R_1),(P_2,R_2),…,(P_n,R_n)(P1,R1),(P2,R2),…,(Pn,Rn),在计算平均值,可得
宏查准率(macro-P):
macroP=1n∑i=1nPi
macroP=\frac{1}{n}\sum_{i=1}^nP_i
macroP=n1i=1∑nPi
宏查全率(macro-R):
macroR=1n∑i=1nRi
macroR=\frac{1}{n}\sum_{i=1}^nR_i
macroR=n1i=1∑nRi
宏F1F_1F1(macro-F1F_1F1):
macroF1=2×macroP×macroRmacroP+macroR
macroF_1=\frac{2×macroP×macroR}{macroP+macroR}
macroF1=macroP+macroR2×macroP×macroR
另一种方法为先将个混淆矩阵的对应元素进行平均,得到TP、FP、TN、FNTP、FP、TN、FNTP、FP、TN、FN的平均值,分别记为:TP‾、FP‾、TN‾、FN‾\overline{TP}、\overline{FP}、\overline{TN}、\overline{FN}TP、FP、TN、FN,根据这些平均值得
微查准率(micro-P):
microP=TP‾TP‾+FP‾
microP=\frac{\overline{TP}}{\overline{TP}+\overline{FP}}
microP=TP+FPTP
微查全率(micro-R):
microR=TP‾TP‾+FN‾
microR=\frac{\overline{TP}}{\overline{TP}+\overline{FN}}
microR=TP+FNTP
微F1F_1F1(micro-F1F_1F1):
microF1=2×microP×microRmicroP+microR
microF_1=\frac{2×microP×microR}{microP+microR}
microF1=microP+microR2×microP×microR
ROC与AUC
很多学习器是为测试样本产生一个实值或概率预测,将这一预测值与一个分类阈值进行比较,若大于阈值则分为正类,否则为反类。事实上,可以根据这个实值或概率预测结果,将样本进行排序,“最可能”的正例放在前面,“最不可能”的正例放在后面。而分类过程就相当于在这个排序中以某个“截断点(cut point)”将样本分为两部分,前一部分为正例,后一部分为反例。
根据不同任务需求选择不同的截断点,若更重视“查准率”,则可选择排序中排序靠前的位置;若更重视”查全率“,则可选择靠后的位置进行截断。这也是”查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低“的原因之一。
综上,排序质量的好坏,体现了综合考虑学习器在不用任务下的“期望泛化性能“的好坏。ROC曲线则是从这一角度来评价学习器泛化性能。
ROC全称是**“受试者工作特征(Receiver Operating Characteristic)”曲线**,以“真正例率(True Positive Rate,简称TPR)”为纵轴,以“假正例率(False Positive Rate,简称FPR)”为横轴。
TPR=TPTP+FN
TPR=\frac{TP}{TP+FN}
TPR=TP+FNTP
EPR=FPTN+FP EPR=\frac{FP}{TN+FP} EPR=TN+FPFP
与P-R曲线相似,若一个学习器的ROC曲线被另一个完全包围,则可断言后者更优;如果出现交叉点,则难以判断孰优孰劣。如果一定要进行比较,则较为合理的判据是比较ROC曲线下的面积,即AUC(Area Under ROC Curve)。
假定ROC曲线由坐标(x1,y1),(x2,y2),...,(xm,ym){(x_1,y_1),(x_2,y_2),...,(x_m,y_m)}(x1,y1),(x2,y2),...,(xm,ym)的点按序链接而形成(x1=0,xm=1)(x_1=0,x_m=1)(x1=0,xm=1),则AUC可估算为:
AUC=12∑i=1n−1(xi+1−xi)(yi+yi+1)
AUC=\frac{1}{2}\sum_{i=1}^{n-1}(x_{i+1}-x_i)(y_i+y_{i+1})
AUC=21i=1∑n−1(xi+1−xi)(yi+yi+1)
从形式上来看,AUC考虑地是样本预测的排序质量,与排序误差紧密联系。给定m+m^+m+个正例和m−m^-m−个反例,另D+D^+D+和D−D^-D−分别表示正、反例集合,则排序损失定义为
lrank=1m+m−∑x+∈D+∑x−∈D−(I(f(x+)<f(x−))+12I(f(x+)=f(x−)))
l_{rank}=\frac{1}{m^+m^-}\sum_{x^+∈D^+}\sum_{x^-∈D^-}\biggl(I\Bigl(f(x^+)<f(x^-)\Bigl)+\frac{1}{2}I\Bigl(f(x^+)=f(x^-)\Bigl)\biggl)
lrank=m+m−1x+∈D+∑x−∈D−∑(I(f(x+)<f(x−))+21I(f(x+)=f(x−)))
因此有
AUC=1−lrank
AUC=1-l_{rank}
AUC=1−lrank
代价敏感错误率与代价曲线
为衡量不同类型错误所导致的损失不同,可为错误赋予“非均等代价(unequal cost)”。
前面介绍的性能度量大都隐式假设了均等代价。而在非均等代价下,不再是简单地最小化错误次数,而是希望最小化“总体代价(total cost)。以二分类任务为例,令D+D^+D+与D−D^-D−分别代表样例集DDD的正例子集和反例子集,costijcost_{ij}costij表示第iii类样本预测为第jjj类样本的代价。
所以,“代价敏感(cost-sensitive)”错误率为
E(D,f,cost)=1m(∑xi∈D+I(f(xi)≠yi)×cost01+∑x+∈D−I(f(xi)≠yi)×cost10)
E(D,f,cost)=\frac{1}{m}\biggl(\sum_{x_i∈D^+}I\Bigl(f(x_i)\neq{y_i}\Bigl)×cost_{01}+\sum_{x^+∈D^-}I\Bigl(f(x_i)\neq{y_i}\Bigl)×cost_{10}\biggl)
E(D,f,cost)=m1(xi∈D+∑I(f(xi)=yi)×cost01+x+∈D−∑I(f(xi)=yi)×cost10)
类似地,可基于分布定义的代价敏感错误率,以及一些其他性能度量。若令costijcost_{ij}costij中的i、ji、ji、j取值不限于0、1,则可定义出多分类的代价敏感性能度量。
在非均等代价下,常用“代价曲线(cost curve)”反应学习器的期望总体价值。
代价曲线图的横轴取值为[0,1][0,1][0,1]的正例概率代价
P(+)cost=p×cost01p×cost01+(1−p)×cost10
P(+)cost=\frac{p×cost_{01}}{p×cost_{01}+(1-p)×cost_{10}}
P(+)cost=p×cost01+(1−p)×cost10p×cost01
其中ppp为样例为正例的概率;
纵轴是取值为[0,1][0,1][0,1]的归一化代价
costnorm=FNR×p×cost01+FPR×(1−p)×cost10p×cost01×(1−p)×cost10
cost_{norm}=\frac{FNR×p×cost_{01}+FPR×(1-p)×cost_{10}}{p×cost_{01}×(1-p)×cost_{10}}
costnorm=p×cost01×(1−p)×cost10FNR×p×cost01+FPR×(1−p)×cost10
其中FNR=1−TPRFNR=1-TPRFNR=1−TPR是假反例率。
聚类任务中常见的性能度量
聚类任务的目标就是使聚类结果的“簇内相似度(intra-cluster similarity)”高且“簇间相似度(inter-cluster similarity)”低。
聚类的性能度量大致分为两类:
外部指标(external index)
将聚类结果与某个“参考模型(reference model)“进行比较,称为”外部指标“。
对数据集D={xi,x2,...,xm}D=\{\boldsymbol{x_i,x_2,...,x_m}\}D={xi,x2,...,xm}通过聚类给出的簇划分为C={C1,C2,...,Ck}C=\{C_1,C_2,...,C_k\}C={C1,C2,...,Ck},参考模型给出的簇划分为C∗={C1∗,C2∗,...,Cs∗}C^*=\{C_{1}^*,C_{2}^*,...,C_{s}^*\}C∗={C1∗,C2∗,...,Cs∗}。相应地,令λλλ与λ∗λ^*λ∗分别表示与CCC和C∗C^*C∗对应的簇标记向量。将样本两两配对,定义
a=∣SS∣,SS={(xi,xj)∣λi=λj,λi∗=λj∗,i<j},b=∣SD∣,SD={(xi,xj)∣λi=λj,λi∗≠λj∗,i<j},c=∣DS∣,DS={(xi,xj)∣λi≠λj,λi∗=λj∗,i<j},d=∣DD∣,DD={(xi,xj)∣λi≠λj,λi∗≠λj∗,i<j},
a=|SS|, SS=\{(\boldsymbol{x_i,x_j})|λ_i=λ_j,λ_{i}^*=λ_{j}^*,i<j\},\\
b=|SD|, SD=\{(\boldsymbol{x_i,x_j})|λ_i=λ_j,λ_{i}^*\neq{λ_{j}^*},i<j\},\\
c=|DS|, DS=\{(\boldsymbol{x_i,x_j})|λ_i\neqλ_j,λ_{i}^*={λ_{j}^*},i<j\},\\
d=|DD|, DD=\{(\boldsymbol{x_i,x_j})|λ_i\neqλ_j,λ_{i}^*\neq{λ_{j}^*},i<j\},
a=∣SS∣,SS={(xi,xj)∣λi=λj,λi∗=λj∗,i<j},b=∣SD∣,SD={(xi,xj)∣λi=λj,λi∗=λj∗,i<j},c=∣DS∣,DS={(xi,xj)∣λi=λj,λi∗=λj∗,i<j},d=∣DD∣,DD={(xi,xj)∣λi=λj,λi∗=λj∗,i<j},
可以推出a+b+c+d=m(m−1)2a+b+c+d=\frac{m(m-1)}{2}a+b+c+d=2m(m−1)成立。
基于以上各式推出常用的聚类度量的外部指标:
Jaccard系数(Jaccard Coefficient,简称JC)
JC=aa+b+c JC=\frac{a}{a+b+c} JC=a+b+ca
FM指数(Fowlkes and Mallows Index,简称FMI)
FMI=aa+b•aa+c FMI=\sqrt{\frac{a}{a+b}•\frac{a}{a+c}} FMI=a+ba•a+ca
Rand指数(Rand Index,简称RI)
RI=2(a+b)m(m−1) RI=\frac{2(a+b)}{m(m-1)} RI=m(m−1)2(a+b)
上述性能度量的结果取值均在[0,1][0,1][0,1]区间,值越大越好。
内部指标(internal index)
不利用任何参考模型直接考察聚类结果,称为“内部指标”。考虑通过聚类给出的簇划分为C={C1,C2,...,Ck}C=\{C_1,C_2,...,C_k\}C={C1,C2,...,Ck},定义
簇CCC内样本间的平均距离avg(C)avg(C)avg(C):
avg(C)=2∣C∣(∣C∣−1)∑1≤i<j≤∣C∣dist(xi,yi)
avg(C)=\frac{2}{|C|(|C|-1)}\sum_{1≤i<j≤|C|}dist(\boldsymbol{x_i,y_i})
avg(C)=∣C∣(∣C∣−1)21≤i<j≤∣C∣∑dist(xi,yi)
簇CCC内样本间的最远距离diam(C)diam(C)diam(C):
diam(C)=max1≤i<j≤∣C∣dist(xi,yi)
diam(C)=max_{1≤i<j≤|C|}dist(\boldsymbol{x_i,y_i})
diam(C)=max1≤i<j≤∣C∣dist(xi,yi)
簇CiC_iCi与簇CjC_jCj最近样本间的距离dmin(Ci,Cj)d_{min}(C_i,C_j)dmin(Ci,Cj):
dmin(Ci,Cj)=minxi∈Ci,xj∈Cjdist(xi,yi)
d_{min}(C_i,C_j)=min_{\boldsymbol{x}_i∈C_i,\boldsymbol{x}_j∈C_j}dist(\boldsymbol{x_i,y_i})
dmin(Ci,Cj)=minxi∈Ci,xj∈Cjdist(xi,yi)
簇CiC_iCi与簇CjC_jCj中心点的距离dcen(Ci,Cj)d_{cen}(C_i,C_j)dcen(Ci,Cj):
dcen(Ci,Cj)=dist(μi,μj)
d_{cen}(C_i,C_j)=dist(\boldsymbol{μ}_i,\boldsymbol{μ}_j)
dcen(Ci,Cj)=dist(μi,μj)
其中,dist(•,•)dist(•,•)dist(•,•)用于计算两个样本之间的距离;μ\boldsymbol{μ}μ代表簇CCC的中心点μ=1∣C∣∑1≤i≤∣C∣xi\boldsymbol{μ}=\frac{1}{|C|}\sum_{1≤i≤|C|}\boldsymbol{x_i}μ=∣C∣1∑1≤i≤∣C∣xi。
基于以上各式推出常用的聚类度量的内部指标:
DB指数(Davies-Bouldin Index,简称DBI)
DBI=1k∑i=1kmaxj≠i(avg(Ci)+avg(Cj)dcen(Ci,Cj)) DBI=\frac{1}{k}\sum_{i=1}^k\max_{j\neq{i}}\Bigl(\frac{avg(C_i)+avg(C_j)}{d_{cen}(C_i,C_j)}\Bigl) DBI=k1i=1∑kj=imax(dcen(Ci,Cj)avg(Ci)+avg(Cj))
Dunn指数(Dunn Index,简称DI)
DI=min1≤i≤k{minj≠i(dmin(Ci,Cj)max1≤l≤kdiam(Cl))} DI=\min_{1≤i≤k}\biggr\{\min_{j\neq{i}}\Bigl(\frac{d_{min}(C_i,C_j)}{\max_{1≤l≤k}diam(C_l)}\Bigl)\biggr\} DI=1≤i≤kmin{j=imin(max1≤l≤kdiam(Cl)dmin(Ci,Cj))}
显然,DBIDBIDBI的值越小越好,而DIDIDI的值越大越好。