图像处理-评价指标

来源:互联网 发布:mac os x 10.7.5软件 编辑:程序博客网 时间:2024/06/03 19:38

      图像处理、深度学习评价指标

这里写图片描述

一、分类

1. 精确率与召回率

  精确率与召回率多用于二分类问题。精确率(Precision)指的是模型判为正的所有样本中有多少是真正的正样本,即对于给定的测试数据集,分类器正确分类的样本数与总样本数之比;召回率(Recall)指的是所有正样本有多少被模型判为正样本,即召回。设模型输出的正样本集合为A,真正的正样本集合为B,则有:

Precision(A,B)=|AB||A|,Recall(A,B)=|AB||B|

有时候我们需要在精确率与召回率间进行权衡,一种选择是画出精确率-召回率曲线(Precision-Recall Curve),曲线下的面积被称为AP分数(Average precision score);另外一种选择是计算Fβ分数:

Fβ=(1+β2)precisionrecallβ2precision+recall

β=1称为F1分数,是分类与信息检索中最常用的指标之一。
2. ROC

设模型输出的正样本集合为A,真正的正样本集合为B,所有样本集合为C,我们称|AB||B|为真正率(True-positive rate),|AB||CB|为假正率(False-positive rate)。

ROC曲线适用于二分类问题,以假正率为横坐标,真正率为纵坐标的曲线图,如:

AUC分数是曲线下的面积(Area under curve),越大意味着分类器效果越好。
3. 对数损失

对数损失(Log loss)亦被称为逻辑回归损失(Logistic regression loss)或交叉熵损失(Cross-entropy loss)。

对于二分类问题,设y{0,1}p=Pr(y=1),则对每个样本的对数损失为:

Llog(y,p)=logPr(y|p)=(ylog(p)+(1y)log(1p))

可以很容易地将其扩展到多分类问题上。设Y为指示矩阵,即当样本i的分类为kyi,k=1;设P为估计的概率矩阵,即pi,k=Pr(ti,k=1),则对每个样本的对数损失为:

Llog(Yi,Pi)=logPr(Yi|Pi)=k=1Kyi,klogpi,k
4. 铰链损失

铰链损失(Hinge loss)一般用来使“边缘最大化”(maximal margin)。

铰链损失最开始出现在二分类问题中,假设正样本被标记为1,负样本被标记为-1,y是真实值,w是预测值,则铰链损失定义为:

LHinge(w,y)=max{1wy,0}=|1wy|+

然后被扩展到多分类问题,假设yw是对真实分类的预测值,yt是对非真实分类预测中的最大值,则铰链损失定义为:

LHinge(yw,yt)=max{1+ytyw,0}

注意,二分类情况下的定义并不是多分类情况下定义的特例。
5. 混淆矩阵

混淆矩阵(Confusion Matrix)又被称为错误矩阵,通过它可以直观地观察到算法的效果。它的每一列是样本的预测分类,每一行是样本的真实分类(反过来也可以),顾名思义,它反映了分类结果的混淆程度。混淆矩阵ij列的原始是原本是类别i却被分为类别j的样本个数,计算完之后还可以对之进行可视化:

  1. kappa系数

kappa系数(Cohen’s kappa)用来衡量两种标注结果的吻合程度,标注指的是把N个样本标注为C个互斥类别。计算公式为

=pope1pe=11po1pe

其中po是观察到的符合比例,pe是由于随机性产生的符合比例。当两种标注结果完全相符时,=1,越不相符其值越小,甚至是负的。

是不是云里来雾里去的,现在举个栗子,对于50个测试样本的二分类问题,预测与真实分布情况如下表:
GROUND
1 0
PREDICT 1 20 5
0 10 15

预测与真实值相符共有20+15个,则观察到的符合比例为po=(20+15)/50=0.7。计算pe比较复杂,PREDICT预测为1的比例为0.5,GROUND中1的比例为0.6,从完全随机的角度来看,PREDICT与GROUND均为1的概率为0.5*0.6=0.3,PREDICT与GROUND均为0的概率为0.5*0.4=0.2,则PREDICT与GROUND由于随机性产生的符合比例为0.2+0.3=0.5,即pe=0.5,最后求得=pope1pe=0.70.510.5=0.4
7. 准确率

准确率(Accuracy)衡量的是分类正确的比例。设ŷ i是是第i个样本预测类别,yi是真是类别,在nsample个测试样本上的准确率为

accuracy=1nsamplei=1nsample1(ŷ i=yi)

其中1(x)是indicator function,当预测结果与真实情况完全相符时准确率为1,两者越不相符准确率越低。

虽然准确率适用范围很广,可用于多分类以及多标签等问题上,但在多标签问题上很严格,在有些情况下区分度较差。
8. 海明距离

海明距离(Hamming Distance)用于需要对样本多个标签进行分类的场景。对于给定的样本iŷ ij是对第j个标签的预测结果,yij是第j个标签的真实结果,L是标签数量,则ŷ iyi间的海明距离为

DHamming(ŷ i,yi)=1Lj=1L1(ŷ ijyij)

其中1(x)是indicator function。当预测结果与实际情况完全相符时,距离为0;当预测结果与实际情况完全不符时,距离为1;当预测结果是实际情况的真子集或真超集时,距离介于0到1之间。

我们可以通过对所有样本的预测情况求平均得到算法在测试集上的总体表现情况,当标签数量L为1时,它等于1-Accuracy,当标签数L>1时也有较好的区分度,不像准确率那么严格。
9. 杰卡德相似系数

杰卡德相似系数( Jaccard similarity coefficients)也是用于需要对样本多个标签进行分类的场景。对于给定的样本iŷ i是预测结果,yi是真实结果,L是标签数量,则第i个样本的杰卡德相似系数为

J(ŷ i,yi)=|ŷ iyi||yi^yi|

它与海明距离的不同之处在于分母。当预测结果与实际情况完全相符时,系数为1;当预测结果与实际情况完全不符时,系数为0;当预测结果是实际情况的真子集或真超集时,距离介于0到1之间。

我们可以通过对所有样本的预测情况求平均得到算法在测试集上的总体表现情况,当标签数量L为1时,它等于Accuracy。
10. 多标签排序

在这节我们介绍一些更精细化的多标签分类效果衡量工具。设真实标签分类情况为y{0,1}nsamples×nlabels,分类器预测情况为f̂ nsamples×nlabels
10.1 涵盖误差

涵盖误差(Coverage error)计算的是预测结果中平均包含多少真实标签,适用于二分类问题。涵盖误差定义为:

coverage(y,f̂ )=1nsamplesi=1nsamplesmaxj:yij=1rankij

其中rankij={k:f̂ ikf̂ ij}。可以看到它实际衡量的是真实标签中有多少排在预测结果的前面。
10.2 标签排序平均精度

标签排序平均精度(Label ranking average precision)简称LRAP,它比涵盖误差更精细:

LRAP(y,f̂ )=1nsamplesi=1nsamples1|yi|j:yij=1|ij|rankij

其中ij={k:yik=1,f̂ ikf̂ ij}rankij={k:f̂ ikf̂ ij}
10.3 排序误差

排序误差(Ranking loss)进一步精细考虑排序情况:

ranking(y,f̂ )=1nsamplesi=1nsamples1|yi|(nlabels|yi|))ij

其中ij={(k,l):f̂ ik<f̂ ij,yik=1,yil=0}
二、拟合

拟合问题比较简单,所用到的衡量指标也相对直观。假设yi是第i个样本的真实值,ŷ i是对第i个样本的预测值。
1. 平均绝对误差

平均绝对误差MAE(Mean Absolute Error)又被称为l1范数损失(l1-norm loss):

MAE(y,ŷ )=1nsamplesi=1nsamples|yiŷ i|
2. 平均平方误差

平均平方误差MSE(Mean Squared Error)又被称为l2范数损失(l2-norm loss):

MSE(y,ŷ )=1nsamplesi=1nsamples(yiŷ i)2
3. 解释变异

解释变异( Explained variance)是根据误差的方差计算得到的:

explainedvariance(y,ŷ )=1Var{yŷ }Vary
4. 决定系数

决定系数(Coefficient of determination)又被称为R2分数:

R2(y,ŷ )=1nsamplesi=1(yiŷ i)2nsamplesi=1(yiy¯)2

其中y¯=1nsamplesnsamplesi=1yi
三、聚类
1 . 兰德指数

兰德指数(Rand index)需要给定实际类别信息C,假设K是聚类结果,a表示在CK中都是同类别的元素对数,b表示在CK中都是不同类别的元素对数,则兰德指数为:

RI=a+bCnsamples2

其中Cnsamples2数据集中可以组成的总元素对数,RI取值范围为[0,1],值越大意味着聚类结果与真实情况越吻合。

对于随机结果,RI并不能保证分数接近零。为了实现“在聚类结果随机产生的情况下,指标应该接近零”,调整兰德系数(Adjusted rand index)被提出,它具有更高的区分度:

ARI=RIE[RI]max(RI)E[RI]

具体计算方式参见Adjusted Rand index。

ARI取值范围为[1,1],值越大意味着聚类结果与真实情况越吻合。从广义的角度来讲,ARI衡量的是两个数据分布的吻合程度。
2. 互信息

互信息(Mutual Information)也是用来衡量两个数据分布的吻合程度。假设UV是对N个样本标签的分配情况,则两种分布的熵(熵表示的是不确定程度)分别为:

H(U)=i=1|U|P(i)log(P(i)),H(V)=j=1|V|P(j)log(P(j))

其中P(i)=|Ui|/N,P(j)=|Vj|/NUV之间的互信息(MI)定义为:

MI(U,V)=i=1|U|j=1|V|P(i,j)log(P(i,j)P(i)P(j))

其中P(i,j)=|UiVj|/N。标准化后的互信息(Normalized mutual information)为:

NMI(U,V)=MI(U,V)H(U)H(V)

与ARI类似,调整互信息(Adjusted mutual information)定义为:

AMI=MIE[MI]max(H(U),H(V))E[MI]

利用基于互信息的方法来衡量聚类效果需要实际类别信息,MI与NMI取值范围为[0,1],AMI取值范围为[1,1],它们都是值越大意味着聚类结果与真实情况越吻合。
3. 轮廓系数

轮廓系数(Silhouette coefficient)适用于实际类别信息未知的情况。对于单个样本,设a是与它同类别中其他样本的平均距离,b是与它距离最近不同类别中样本的平均距离,轮廓系数为:

s=bamax(a,b)

对于一个样本集合,它的轮廓系数是所有样本轮廓系数的平均值。

轮廓系数取值范围是[1,1],同类别样本越距离相近且不同类别样本距离越远,分数越高。
四、信息检索

信息检索评价是对信息检索系统性能(主要满足用户信息需求的能力)进行评估,与机器学习也有较大的相关性,感兴趣的可以参考这篇不错的博文。
四、总结

上面介绍了非常多的指标,实际应用中需要根据具体问题选择合适的衡量指标。那么具体工作中如何快速使用它们呢?优秀的Python机器学习开源项目Scikit-learn实现了上述绝指标的大多数,使用起来非常方便。

机器学习(ML),自然语言处理(NLP),信息检索(IR)等领域,评估(Evaluation)是一个必要的 工作,而其评价指标往往有如下几点:准确率(Accuracy),精确率(Precision),召回率(Recall)和F1-Measure。(注: 相对来说,IR 的 ground truth 很多时候是一个 Ordered List, 而不是一个 Bool 类型的 Unordered Collection,在都找到的情况下,排在第三名还是第四名损失并不是很大,而排在第一名和第一百名,虽然都是“找到了”,但是意义是不一样的,因此 更多可能适用于 MAP 之类评估指标。)

本文将简单介绍其中几个概念。中文中这几个评价指标翻译各有不同,所以一般情况下推荐使用英文。

现在我先假定一个具体场景作为例子。

假如某个班级有男生80人,女生20人,共计100人.目标是找出所有女生.现在某人挑选出50个人,其中20人是女生,另外还错误的把30个男生也当作女生挑选出来了.作为评估者的你需要来评估(evaluation)下他的工作

首先我们可以计算准确率(accuracy),其定义是: 对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。也就是损失函数是0-1损失时测试数据集上的准确率[1].

这样说听起来有点抽象,简单说就是,前面的场景中,实际情况是那个班级有男的和女的两类,某人(也就是定义中所说的分类器)他又把班级中的人分为男女两类。accuracy需要得到的是此君分正确的人占总人数的比例。很容易,我们可以得到:他把其中70(20女+50男)人判定正确了,而总人数是100人,所以它的accuracy就是70 %(70 / 100).

由准确率,我们的确可以在一些场合,从某种意义上得到一个分类器是否有效,但它并不总是能有效的评价一个分类器的工作。举个例子,google抓取 了argcv 100个页面,而它索引中共有10,000,000个页面,随机抽一个页面,分类下,这是不是argcv的页面呢?如果以accuracy来判断我的工 作,那我会把所有的页面都判断为”不是argcv的页面”,因为我这样效率非常高(return false,一句话),而accuracy已经到了99.999%(9,999,900/10,000,000),完爆其它很多分类器辛辛苦苦算的值,而我这个算法显然不是需求期待的,那怎么解决呢?这就是precision,recall和f1-measure出场的时间了.

在说precision,recall和f1-measure之前,我们需要先需要定义TP,FN,FP,TN四种分类情况.
按照前面例子,我们需要从一个班级中的人中寻找所有女生,如果把这个任务当成一个分类器的话,那么女生就是我们需要的,而男生不是,所以我们称女生为”正类”,而男生为”负类”.
相关(Relevant),正类 无关(NonRelevant),负类
被检索到(Retrieved) true positives(TP 正类判定为正类,例子中就是正确的判定”这位是女生”) false positives(FP 负类判定为正类,”存伪”,例子中就是分明是男生却判断为女生,当下伪娘横行,这个错常有人犯)
未被检索到(Not Retrieved) false negatives(FN 正类判定为负类,”去真”,例子中就是,分明是女生,这哥们却判断为男生–梁山伯同学犯的错就是这个) true negatives(TN 负类判定为负类,也就是一个男生被判断为男生,像我这样的纯爷们一准儿就会在此处)

通过这张表,我们可以很容易得到这几个值:
TP=20
FP=30
FN=0
TN=50

精确率(precision)的公式是,它计算的是所有”正确被检索的item(TP)”占所有”实际被检索到的(TP+FP)”的比例.

在例子中就是希望知道此君得到的所有人中,正确的人(也就是女生)占有的比例.所以其precision也就是40%(20女生/(20女生+30误判为女生的男生)).

召回率(recall)的公式是,它计算的是所有”正确被检索的item(TP)”占所有”应该检索到的item(TP+FN)”的比例。

在例子中就是希望知道此君得到的女生占本班中所有女生的比例,所以其recall也就是100%(20女生/(20女生+ 0 误判为男生的女生))

F1值就是精确值和召回率的调和均值,也就是

调整下也就是

例子中 F1-measure 也就是约为 57.143%().

需要说明的是,有人[2]列了这样个公式

将F-measure一般化.

F1-measure认为精确率和召回率的权重是一样的,但有些场景下,我们可能认为精确率会更加重要,调整参数a,使用Fa-measure可以帮助我们更好的evaluate结果.

话虽然很多,其实实现非常轻松,点击此处可以看到我的一个简单的实现.

原创粉丝点击