机器学习评价指标大汇总

转自: http://www.zhaokv.com/2016/03/ml-metric.html

在使用机器学习算法的过程中,针对不同场景需要不同的评价指标,在这里对常用的指标进行一个简单的汇总。

(分类和拟合的评价指标,正好应用到本人的论文中,开心)

一、分类

1. 精确率与召回率

精确率与召回率多用于二分类问题。精确率(Precision)指的是模型判为正的所有样本中有多少是真正的正样本;召回率(Recall)指的是所有正样本有多少被模型判为正样本,即召回。设模型输出的正样本集合为 AA ,真正的正样本集合为 BB ,则有:

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

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

Fβ=(1+β2)precisionrecallβ2precision+recallFβ=(1+β2)⋅precision⋅recallβ2⋅precision+recall 。

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

2. ROC

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

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

../_images/plot_roc_0011.png

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

3. 对数损失

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

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

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

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

Llog(Yi,Pi)=logPr(Yi|Pi)=Kk=1yi,klogpi,kLlog(Yi,Pi)=−log⁡Pr(Yi|Pi)=∑k=1Kyi,klog⁡pi,k 。

 4. 铰链损失

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

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

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

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

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

注意,二分类情况下的定义并不是多分类情况下定义的特例。

5. 混淆矩阵

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

混淆矩阵可视化

6. kappa系数

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

K=pope1pe=11po1peK=po−pe1−pe=1−1−po1−pe 。

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

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

  GROUND
1 0
PREDICT 1 20 5
0 10 15

预测与真实值相符共有20+15个,则观察到的符合比例为 po=(20+15)/50=0.7po=(20+15)/50=0.7 。计算 pepe 比较复杂,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.5pe=0.5 ,最后求得 K=pope1pe=0.70.510.5=0.4K=po−pe1−pe=0.7−0.51−0.5=0.4 。

7. 准确率

准确率(Accuracy)衡量的是分类正确的比例。设 ^yiy^i 是是第 ii 个样本预测类别, yiyi 是真是类别,在 nsamplensample 个测试样本上的准确率为

accuracy=1nsamplensamplei=11(^yi=yi)accuracy=1nsample∑i=1nsample1(y^i=yi) 。

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

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

8. 海明距离

海明距离(Hamming Distance)用于需要对样本多个标签进行分类的场景。对于给定的样本 ii , ^yijy^ij 是对第 jj 个标签的预测结果, yijyij是第 jj 个标签的真实结果, LL 是标签数量,则 ^yiy^i 与 yiyi 间的海明距离为

DHamming(^yi,yi)=1LLj=11(^yijyij)DHamming(y^i,yi)=1L∑j=1L1(y^ij≠yij) 。

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

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

9. 杰卡德相似系数

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

J(^yi,yi)=|^yiyi||^yiyi|J(y^i,yi)=|y^i⋂yi||yi^⋃yi| 。

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

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

10. 多标签排序

在这节我们介绍一些更精细化的多标签分类效果衡量工具。设真实标签分类情况为 y{0,1}nsamples×nlabelsy∈{0,1}nsamples×nlabels ,分类器预测情况为 ^fRnsamples×nlabelsf^∈Rnsamples×nlabels 。

10.1 涵盖误差

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

coverage(y,^f)=1nsamplesnsamplesi=1maxj:yij=1rankijcoverage(y,f^)=1nsamples∑i=1nsamplesmaxj:yij=1rankij ,

其中 rankij={k:^fik^fij}rankij=|{k:f^ik≥f^ij}| 。可以看到它实际衡量的是真实标签中有多少排在预测结果的前面。

10.2 标签排序平均精度

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

LRAP(y,^f)=1nsamplesnsamplesi=11|yi|j:yij=1|Lij|rankijLRAP(y,f^)=1nsamples∑i=1nsamples1|yi|∑j:yij=1|Lij|rankij ,

其中 Lij={k:yik=1,^fik^fij}Lij={k:yik=1,f^ik≥f^ij} , rankij={k:^fik^fij}rankij=|{k:f^ik≥f^ij}| 。

10.3 排序误差

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

ranking(y,^f)=1nsamplesnsamplesi=11|yi|(nlabels|yi|))Lijranking(y,f^)=1nsamples∑i=1nsamples1|yi|(nlabels−|yi|))|Lij| ,

其中 Lij={(k,l):^fik<^fij,yik=1,yil=0}Lij={(k,l):f^ik<f^ij,yik=1,yil=0} 。

二、拟合

拟合问题比较简单,所用到的衡量指标也相对直观。假设 yiyi 是第 ii个样本的真实值, ^yiy^i 是对第 ii 个样本的预测值。

1. 平均绝对误差

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

MAE(y,^y)=1nsamplesnsamplesi=1|yi^yi|MAE(y,y^)=1nsamples∑i=1nsamples|yi−y^i| 。

2. 平均平方误差

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

MSE(y,^y)=1nsamplesnsamplesi=1(yi^yi)2MSE(y,y^)=1nsamples∑i=1nsamples(yi−y^i)2 。

3. 解释变异

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

explainedvariance(y,^y)=1Var{y^y}Varyexplainedvariance(y,y^)=1−Var{y−y^}Vary 。

4. 决定系数

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

R2(y,^y)=1nsamplesi=1(yi^yi)2nsamplesi=1(yi¯y)2R2(y,y^)=1−∑i=1nsamples(yi−y^i)2∑i=1nsamples(yi−y¯)2 ,

其中 ¯y=1nsamplesnsamplesi=1yiy¯=1nsamples∑i=1nsamplesyi 。

三、聚类

1 . 兰德指数

兰德指数(Rand index)需要给定实际类别信息CC,假设KK是聚类结果, aa 表示在 CC 与 KK 中都是同类别的元素对数, bb 表示在 CC 与 KK 中都是不同类别的元素对数,则兰德指数为:

RI=a+bCnsamples2RI=a+bC2nsamples ,

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

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

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

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

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

2. 互信息

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

H(U)=|U|i=1P(i)log(P(i)),H(V)=|V|j=1P(j)log(P(j))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|/NP(i)=|Ui|/N,P′(j)=|Vj|/N 。 UU 与 VV 之间的互信息(MI)定义为:

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

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

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

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

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

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

3. 轮廓系数

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

s=bamax(a,b)s=b−amax(a,b) 。

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

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

四、信息检索

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

四、总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330857.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里Druid连接池监控的两个坑

转载自 注意&#xff1a;阿里Druid连接池监控的两个坑阿里的Druid大家都知道是最好的连接池&#xff0c;其强大的监控功能是我们追求的重要特性。但在实际情况中也有不少坑&#xff0c;说下最近遇到的一个坑吧&#xff01; 问题1&#xff1a;不断打印error级别的错误日志sessio…

List集合相关应用

1.定义一个Collection类型的集合&#xff0c;存储以下字符串&#xff1a; “JavaEE企业级开发指南”, “Oracle高级编程”, “MySQL从入门到精通”, “Java基础教程” 完成以下功能 1.删除书名字符小于10个的元素&#xff0c;并打印 2.打印书名中包含“Java”的元素 public cl…

消息中间件ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Kafka如何选型

转载自 消息中间件ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Kafka如何选型&#xff1f; 最近要为公司的消息队列中间件进行选型&#xff0c;市面上相关的开源技术又非常多&#xff0c;如ActiveMQ、RabbitMQ、ZeroMQ、Kafka&#xff0c;还有阿里巴巴的RocketMQ等。 这么多技术&am…

机器学习(周志华)- 第2章模型评估与选择笔记

转自&#xff1a; https://samanthachen.github.io/2016/08/03/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0_%E5%91%A8%E5%BF%97%E5%8D%8E_%E7%AC%94%E8%AE%B02/ 经验误差与过拟合 错误率&#xff1a; 分类错误样本数占样本总数 精度&#xff1a; 1 - 错误率 误差&#xff1a;学习器…

单列集合Set的实现类TreeSet

Set接口 [Collection】的子类 TreeSet a.特点【无序&#xff0c;不可重复&#xff0c;查询快&#xff0c;可自动排序】&#xff0c;但需要指定排序规则&#xff0c;API中有一些类已经实现了Comparable接口],给出了默认排序规则&#xff0c;如:Integer:数值大小[升序] String:…

关于Java你不知道的10件事

转载自 关于Java你不知道的10件事 作为 Java 书呆子&#xff0c;比起实用技能&#xff0c;我们会对介绍 Java 和 JVM 的概念细节更感兴趣。因此我想推荐 Lukas Eder 在 jooq.org 发表的原创作品给大家。 你是从很早开始就一直使用 Java 吗&#xff1f;那你还记得它的过去吗&…

模型评估与选择 ( Bias(偏差),Error(误差),和Variance(方差) )

转自&#xff1a; https://github.com/familyld/Machine_Learning/blob/master/02model_evaluation_and_model_selection.md 机器学习中的Bias(偏差)&#xff0c;Error(误差)&#xff0c;和Variance(方差)有什么区别和联系&#xff1f; 参见 https://www.zhihu.com/question…

单列集合Set的实现类HashSet

Set接口 [Collection】的子类 HashSet 特点【无序&#xff0c;不可重复,不能排序】 默认比较地址值【地址相同的值相同】&#xff0c;重写后可比较内容【内容相同的值相同】 1.比较地址值【默认】 public class Demo1 {public static void main(String[] args) {HashSet<…

双列集合Map的实现类

Map接口【和Collection接口并列】 Map接口 成员方法【实现于Map接口&#xff0c;TreeMap也可实现&#xff0c;这里以HashMap为例】 //HashMap实现类 :无序[HashSet底存原理] 哈希表 public class Demo1 {public static void main(String[] args) {HashMap<String, Intege…

机器学习指标大汇总

转自&#xff1a; http://www.36dsj.com/archives/42271 作者&#xff1a;无影随想 在使用机器学习算法的过程中&#xff0c;针对不同场景需要不同的评价指标&#xff0c;在这里对常用的指标进行一个简单的汇总。 一、分类 1. 精确率与召回率 精确率与召回率多用于二分类问题。…

到底什么是分布式系统

转载自 到底什么是分布式系统分布式系统背景 说分布式系统必须要说集中式系统&#xff0c;集中式系统中整个项目就是一个独立的应用&#xff0c;整个应用也就是整个项目&#xff0c;所有的东西都在一个应用里面。 如下图所示如一个网站就是一个应用&#xff0c;最后是多个增加多…

Map集合相关应用

1.键盘录入一个字符串&#xff0c;求该字符串中每一个字符出现的次数。 要求&#xff1a;按照字母顺序打印 如: 录入的字符串为"apple"&#xff0c;打印 a(1) e(1) l(1) p(2) public class Demo4 {public static void main(String[] args) {//键盘录入Scanner sc n…

机器学习算法常用指标总结

转自&#xff1a; http://www.cnblogs.com/maybe2030/p/5375175.html#_label2 阅读目录 1. TPR、FPR&TNR 2. 精确率Precision、召回率Recall和F1值 3. 综合评价指标F-measure 4. ROC曲线和AUC 5. 参考内容 考虑一个二分问题&#xff0c;即将实例分成正类&#xff08;positi…

SLA服务可用性4个9是什么意思?怎么达到?

转载自 SLA服务可用性4个9是什么意思&#xff1f;怎么达到&#xff1f;SLA&#xff1a;服务等级协议&#xff08;简称&#xff1a;SLA&#xff0c;全称&#xff1a;service level agreement&#xff09;。是在一定开销下为保障服务的性能和可用性&#xff0c;服务提供商与用户间…

ROC和AUC介绍以及如何计算AUC

转自&#xff1a; http://alexkong.net/2013/06/introduction-to-auc-and-roc/ ROC&#xff08;Receiver Operating Characteristic&#xff09;曲线和AUC常被用来评价一个二值分类器&#xff08;binary classifier&#xff09;的优劣&#xff0c;对两者的简单介绍见这里。这篇…

为什么Netty这么火?与Mina相比有什么优势?

转载自 为什么Netty这么火&#xff1f;与Mina相比有什么优势&#xff1f;Netty是什么&#xff1f;为什么这么火&#xff1f; Netty是目前最流行的由JBOSS提供的一个Java开源框架NIO框架&#xff0c;Netty提供异步的、事件驱动的网络应用程序框架和工具&#xff0c;用以快速开发…

一张图告诉你为什么是服务网关

转载自 一张图告诉你为什么是服务网关&#xff0c;文末有现金抽奖。网关服务是单一访问点&#xff0c;并充当多项服务的代理。服务网关启用了跨所有服务的路由转发、过滤和公共处理等。在微服务实践中远不止这点功能&#xff0c;它可以做到统一接入、流量管控、安全防护、业务隔…

offer复习日志

&#xff08;1&#xff09;复习mysql&#xff0c;只需要 2.5 个小时&#xff1b;

File类对文件的操作应用

1.在不存在的文件夹下创建文件 //在当前模块下aaa文件下ddd下eee中创建一个e.txt文件 public class Demo2 {public static void main(String[] args) throws IOException {File file new File("day11_myFile\\aaa\\ddd\\eee");//createNewFile()建立文件需要文件夹…

一张图告诉你什么是系统架构师

转载自 一张图告诉你什么是系统架构师这张图从架构师的综合能力、岗位认识、岗位职责等方面&#xff0c;清楚的画出了作为一个架构的基本准则。人人都想成为架构师&#xff0c;可作为架构你达到了上面的要求了吗&#xff1f; 系统架构师是个神奇的岗位。为什么这么说&#xff0…