27-如何度量分类算法的性能好坏(Scoring metrics for classification)

最近两天拥抱了北京这个城市,感觉大气粗犷,整个人都更有精神了。紫禁城好大,颐和园更大,不自量力的我买了联票,结果根本没法逛完。北京人民也热情,坐在船上,开船大爷不停招呼:这边可以拍十七孔桥了,视野好面积大;那边可以拍玉带桥了;坐着我帮你拍几张;你手托着塔,自然点没事。然后走在路上,问一个姑娘东宫门在哪呢,一个走路风风火火的大妈不打自招:就在前面右拐……北京人民的热情,足以抵御漫长的寒冬。

回来也要好好学习了,今天学习度量分类算法的性能好坏的几个重要指标:)

首先申明下缩写:P: Positive; N: Negative; TP: True Positive; FP: False Positive; TPR: True Positive Rate; TN, FN, FPR:你懂的。

1. 准确率(accuracy)

对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。

A = (TP + TN)/(P+N) = (TP + TN)/(TP + FN + FP + TN);    反映了分类器统对整个样本的判定能力——能将正的判定为正,负的判定为负。

2. 混淆矩阵(confusion matrix)

 

3. 精确率(Precision), 召回率(Recall)和F1-Measure

精确率(Precision):

PRE = TP/(TP+FP) ;  反映了被分类器判定的正例中真正的正例样本的比重。

召回率(Recall),也称为 True Positive Rate:

REC = TP/(TP+FN) ;  反映了被正确判定的正例占总的正例的比重。

F1-Measure,可以理解为精确率和召回率的几何平均:

F1 = 2 *  PRE *  REC/ (PRE+REC);

另外一个有用的函数是classification_report,它对所有分类类别(y的所有取值)都提供了精确率, 召回率, fscore计算 。

以上几个metrics特别适用于实践中经常遇到的两种情况:

1.不平衡的类别:即某一类别比其他类别出现频率高得多;

2.不对等的代价:即某一分类错误比其他分类错误需要付出更高的代价(如把癌症患者判断为非癌症,后果不堪设想)。

4. ROC & AUC

首先理解两个公式:

TPR = TP / (TP + FN)  ——  可以理解为对正例的敏感度

FPR = FP / (FP + TN)  ——  可以理解为对正例的瞎敏感度

WIKI定义:

The ROC curve is created by plotting the true positive rate (TPR) against the false positive rate (FPR) at various threshold settings.

ROC曲线画的是当threshold变化时,FPR(x)和TPR(y)的对应关系。当测试样本是正样本的概率值大于某个阈值时(常用0.5),即认为它是正样本,这里的阈值就是threshold。

举个例子:如果threshold很低(如0.1),那么很容易测试样本是正样本的概率值>0.1,因此FPR会很高(对正例太敏感),同时TPR也很高,假设 threshold=0.1时,FPR=TPR=1,可以在坐标系中画第一个点(1,1);同理,随着threshold的增大,FPR和TPR都会逐渐降低,最后甚至为0。画出的曲线形状通常如下:

如果分类器效果很好, 那么曲线应该靠近左上角(TPR大,FPR小)。

AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方(对应随机猜测),所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。

下周学习决策树,干货多多,敬请期待:)

时间: 2024-11-09 10:32:36

27-如何度量分类算法的性能好坏(Scoring metrics for classification)的相关文章

通过Precision/Recall判断分类结果偏差极大时算法的性能

当我们对某些问题进行分类时,真实结果的分布会有明显偏差. 例如对是否患癌症进行分类,testing set 中可能只有0.5%的人患了癌症. 此时如果直接数误分类数的话,那么一个每次都预测人没有癌症的算法也是性能优异的. 此时,我们需要引入一对新的判别标准:Precision/Recall来进行算法的性能评判,它们的定义如下: 可以看出,Precision表示:预测一件事件发生,它实际发生的概率是多少.换言之:预测准的概率如何. Recall表示:一件事情实际发生了,能把它预测出来的概率是多少.

R语言与分类算法的绩效评估(转)

关于分类算法我们之前也讨论过了KNN.决策树.naivebayes.SVM.ANN.logistic回归.关于这么多的分类算法,我们自然需要考虑谁的表现更加的优秀. 既然要对分类算法进行评价,那么我们自然得有评价依据.到目前为止,我们讨论分类的有效性都是基于分类成功率来说的,但是这个指标科学吗?我们不妨考虑这么一个事实:一个样本集合里有95个正例,5个反例,分类器C1利用似然的思想将所有的实例均分成正例,分类成功率为95%:分类器C2成功分出了80个正例,3个反例,分类成功率仅83%.我们可以说

二分类算法评估指标

我们都知道机器学习要建模,但是对于模型性能的好坏我们并不知道是怎样的,很可能这个模型就是一个差的模型,对测试集不能很好的预测.那么如何知道这个模型是好是坏呢?必须有个评判的标准,需要用某个指标来衡量,这就是性能度量的意义.有了一个指标,就可以对比不同模型了,从而知道哪个模型更好,或者通过这个指标来调参优化选用的模型. 对于分类.回归.聚类等,分别有各自的评判标准.本篇主要介绍二分类算法(多分类可以扩展转化成二分类)的相关指标.评估一个二分类的分类器的性能指标有:准确率.查准率.查全率.F1值.A

机器学习---K最近邻(k-Nearest Neighbour,KNN)分类算法

K最近邻(k-Nearest Neighbour,KNN)分类算法 1.K最近邻(k-Nearest Neighbour,KNN) K最近邻(k-Nearest Neighbour,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别.用官方的话来说,所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实

Netflix工程总监眼中的分类算法:深度学习优先级最低

Netflix工程总监眼中的分类算法:深度学习优先级最低 摘要:不同分类算法的优势是什么?Netflix公司工程总监Xavier Amatriain根据奥卡姆剃刀原理依次推荐了逻辑回归.SVM.决策树集成和深度学习,并谈了他的不同认识.他并不推荐深度学习为通用的分类技术. [编者按]针对Quora上的一个老问题:不同分类算法的优势是什么?Netflix公司工程总监Xavier Amatriain近日给出新的解答,他根据奥卡姆剃刀原理依次推荐了逻辑回归.SVM.决策树集成和深度学习,并谈了他的不同

KNN邻近分类算法

K邻近(k-Nearest Neighbor,KNN)分类算法是最简单的机器学习算法了.它采用测量不同特征值之间的距离方法进行分类.它的思想很简单:计算一个点A与其他所有点之间的距离,取出与该点最近的k个点,然后统计这k个点里面所属分类比例最大的,则点A属于该分类. 下面用一个例子来说明一下: 电影名称 打斗次数 接吻次数 电影类型 California Man 3 104 Romance He’s Not Really into Dudes 2 100 Romance Beautiful Wo

基于K-近邻分类算法的手写识别系统

前言 本文将继续讲解K-近邻算法的项目实例 - 手写识别系统. 该系统在获取用户的手写输入后,判断用户写的是什么. 为了突出核心,简化细节,本示例系统中的输入为32x32矩阵,分类结果也均为数字.但对于汉字或者别的分类情形原理都是一样的. 有了前面学习的基础,下面直接进入项目开发步骤. 第一步:收集并准备数据 在用户主目录的trainingDigits子目录中,存放的是2000个样本数据. 每个样本一个文件,其中一部分如下所示: 文件命名格式为: 分类标签_标签内序号 如 0_20.txt 就表

分类算法评价标准

一.引言 分类算法有很多,不同分类算法又用很多不同的变种.不同的分类算法有不同的特定,在不同的数据集上表现的效果也不同,我们需要根据特定的任务进行算法的选择,如何选择分类,如何评价一个分类算法的好坏,前面关于决策树的介绍,我们主要用的正确率(accuracy)来评价分类算法. 正确率确实是一个很好很直观的评价指标,但是有时候正确率高并不能代表一个算法就好.比如某个地区某天地震的预测,假设我们有一堆的特征作为地震分类的属性,类别只有两个:0:不发生地震.1:发生地震.一个不加思考的分类器,对每一个

聚类算法和分类算法总结

原文:http://blog.chinaunix.net/uid-10289334-id-3758310.html 聚类算法的种类: 基于划分聚类算法(partition clustering) k-means: 是一种典型的划分聚类算法,它用一个聚类的中心来代表一个簇,即在迭代过程中选择的聚点不一定是聚类中的一个点,该算法只能处理数值型数据 k-modes: K-Means算法的扩展,采用简单匹配方法来度量分类型数据的相似度 k-prototypes: 结合了K-Means和K-Modes两种