分类模型评估
判断一个分类器对所用样本的分类能力或者在不同的应用场合时,需要有不同的指标。
Scikit-Learn中,评价指标计算可对每个样本施加权重,权重通过参数sample_weight指定。
分类模型的评价指标:
logistic/负log似然损失(log_loss):
其中C为类别数目,为第i个样本的标签的onehot编码向量,为模型预测第i个样本为类别c的概率。
当C=2时,为两类分类:
为第i个样本的类别,为模型预测第i个样本为类别1的概率。
分类模型的评价指标:
0-1损失(zero_one_loss):
其中I(.)为示性函数(indicator function),当括号中条件满足时函数值为1,否则为0。
0-1损失可视为错误率。
合页损失(hinge_loss):
其中,为决策函数(样本到决策面的带符号距离)。
正确率(accuracy_score):
混淆矩阵(confusion_matrix):对C类分类问题,混淆矩阵为C*C的矩阵
手写数字识别的混淆矩阵:
矩阵的第i行第j列的元素值表示将真实类别标签为i类的样本预测为第j类的样本数目。
对角线元素越大越好。
两类分类任务中更多评价指标
ROC/AUC
PR曲线/AP
mAP
马修斯相关性系数(Matthews Correlation coefficient,MCC)
Precision、 TPR、FPR
精度、准确率:预测结果为真的样本中真正为真的比例
召回率:预测结果召回了多少真正的真样本;
真阳率:有多少真正的正样本被预测为真
假阳率:预测结果将多少假的样本预测成了真
F1分数
F1分数:Precision和Recall合一
:检测结果真正为正的比例(质)
:被正确检测到的正样本的比例(量)
F1分数:Precision和Recall调和平均值
准确率和召回率是相互影响的。一般情况下准确率高、召回率就低;召回率低、准确率高。
Matthews相关性系数(MCC)
Matthews相关性系数用一个值综合混淆矩阵,度量真实值和预测值之间的相关性,定义为:
分母中任意一对括号相加之和如果为0,那么整个MCC的值就为0。
MCC值在[-1,1]之间:
1:分类器是完美的
0:分类器是随机分类器
-1:分类器是最差,所有预测结果和实际相反
垃圾邮件分类
假如有100封测试邮件,其中50封为垃圾50封为非垃圾,某分类器的预测结果:TP=40封,TN=40封,FP=10封,FN=10封。
还是100封测试邮件,其中垃圾邮件为98封,非垃圾邮件为2封(分布不均衡)。如果有一个傻傻的分类器,永远只做出垃圾邮件判断,那么TP=98,TN=0,FN=0,FP=2。
简单粗暴的方式和随机分类器没有差别。
Receiver Operaing Characteristic (ROC)曲线
给定阈值的TPR(真阳率)和FPR(假阳率)
如果不是只考虑一个阈值,而是在一些列阈值上运行检测器,并画出TPR和FPR为阈值的隐式函数,得到ROC曲线。
例:根据文章特征x(文章长度、作者的数目、作者之前投递给该杂志的文章数据、...),判断该文章是否会被杂志接受。
测试样本数目:500,其中250篇被接收(红色),250篇被拒绝(蓝色)。
现有一个分类器1,给定文章特征,输出该文章被接收的概率。下图为分类器1输出的被接收概率对应的正样本数目和负样本数目。
假设取阈值为概率阈值0.5:判断140篇文章被拒绝,360篇文章被接收。线右边共有235个红色样本,125个被接受,10个被拒绝,TPR==0.94,FPR==0.5,对应ROC曲线上的点(x,y)=(0.5,0.94)。
假设取阈值为概率0.8:判断50篇文章被接收,450篇被拒绝。线的右边有50个红色样本,线的右边有0个蓝色样本均接收,
TPR=,FPR=0,对应ROC曲线上的点(x,y)=(0,0.2)。
•现有一个分类器2,给定文章特征,输出该文章被接收的概率。下图为分 类器2输出的被接收概率对应的正样本数目和负样本数。
假设取阈值为概率阈值0.6:线的右边有200个红色样本,线的右边有0个蓝色样本,TPR==0.8,FPR=0,对应ROC曲线上的点(x,y)=(0,0.8)。
ROC曲线越偏左上角表示分类器性能越好。
AUC(Area Under Curve):ROC曲线下的面积,取值在[0.5,1.0],0.5表示随机猜测分类器,1表示完美分类器。
ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。
在实际的数据集中经常会出现类不平衡现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。
PR曲线
Precision and Recall(PR曲线):用于稀有事件检测,如目标检测、信息检测、推荐系统。
负样本非常多(很大),因此FPR=很小,比较TPR和FPR没有太大意义(ROC曲线中只有左边很小一部分有意义)
Precision(精度,查准率):预测结果为真的样本中真正为真的比例
Recall(召回率,查全率):预测结果召回了多少真正的真样本
Precision and Recall(PR曲线):阈值变化时的P和R
:检测结果真正为正的比例
:被正确检测到的正样本的比例
F1分数:PR合一:
准确率和召回率是相互影响的。一般情况下准确率高、召回率就低;召回率低、准确率高。
AP
Precision只考虑了返回结果中相关文档的数目,没有考虑文档之间的顺序。
对一个搜索引擎或推荐系统而言,返回的结果是有序的,且越相关的文档越靠前越好,于是有了AP(Average Precision)的概念。
AP:对不同召回率点上的精度进行平均:
即PR曲线下的面积(Recall:AUC为ROC下的面积)。
mAP
平均AP(Mean Average Precision,mAP):多个AP的平均
物体检测中经常用mAP评价模型性能:多个物体类别的AP的平均
Scikit-Learn中分类模型性能评价
类似回归模型的性能评价,Scikit-Learn中对分类模型性能评价提供3种不同的API:
estimator的score方法:每个学习器都有score方法,提供一个缺省的评估方法(分类为正确率)。
Scoring参数:使用交叉验证评估模型的工具有Scoring参数。
Metric:metrics模块实现了一些函数,用来评估预测误差。
多类(Multiclass)分类:相对于两类(binary)分类而言,标签y的取值有多种,如对水平进行分类,水果可能是橙子、苹果或梨。多类分类的假设是,每个样本被分配到一个和唯一一个标签:一个水果可以是苹果或梨,但不是同时两个。
多标签(Multilabel)分类:给每个样本分配一套目标标签,这些标签不相互排斥(类似物体属性,可以有多种属性)。例如与文档相关的主题,文本可能同时是关于宗教、政治、金融或教育的,或者不属于这些主题。
从两类分类到多类分类和多标签
好些评价指标(如f1_score,roc_auc_score)都是用于二分类任务。
将两类分类指标扩展到多类或多标签问题:在多类或多标签问题中。可将其视为多个两类分类问题的集合,每个类别一个。
采用不同的平均方式(通过average参数指定),可将多个两类分类指标合并得到多类或多标签问题相应的评价指标。
宏观“macro”:每个类别(二分类)评价指标,再求平均,每个类别的权重相同,会放大少数类(样本数目较少的类的影响)
微观“micro”:对每个样本(不分类别)计算全局的评价指标,每个样本的权重相同。多标签任务中首选,也可用于多类分类。
加权“weighted”:计算每个类别的指标,每类的权重与该类样本数目有关,可处理不同类别样本数目不均衡问题。
样本“samples”:计算每个样本的评价指标,然后再求平均,仅适用于多标签问题。
“average=None”:返回一个数组,包含每个类的分数。