机器学习 评测指标 - 问题思考

这些问题可以思考一下,答案会不断的补充。

评测指标有哪些?

这主要介绍一些评测指标,我们拿二分类问题来看,二分类问题中主要分为正分类和负分类,那么训练一个模型后,模型的预测分类结果可能有:

  • 1、真正类:样本标签值为正类,预测结果也为正类,简称:TP,全称:True Positive。
  • 2、假负类:样本标签值为正类,预测结果也为负类,简称:FN,全称:False Negative。
  • 3、真负类:样本标签值为负类,预测结果也为负类,简称:TN,全称:True Negative。
  • 4、假真类:样本标签值为负类,预测结果也为正类,简称:FP,全称:False Positive。

网上经常用一个图来展示这种情况,

标签\预测真类负类
真类TPFN
负类FPTN

由此,来计算得到真正类率(true positive rate ,TPR), 计算公式为:
T P R = T P T P + F N TPR = \frac{TP}{TP+FN} TPR=TP+FNTP
还有一个指标,负正类率(false positive rate, FPR),计算公式为:
F P R = F P F P + T N FPR = \frac{FP} {FP + TN} FPR=FP+TNFP
同时,还有一个指标:Aaccuracy。分类器对整个样本的判定能力,即将正的判定为正,负的判定为负,公式为:
A = T P + T N T P + F N + F P + T N A = \frac{TP + TN}{TP + FN + FP + TN} A=TP+FN+FP+TNTP+TN

精确率(正确率)和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。其中精度是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率。

  • Precision:检索出来的条目(比如:文档、网页等)有多少是准确的,公式:
    P r e c i s i o n = 查 询 信 息 正 确 个 数 查 询 信 息 总 数 Precision = \frac{查询信息正确个数}{查询信息总数} Precision=
  • Recall:所有准确的条目有多少被检索出来了。
    R e c a l l = 查 询 信 息 正 确 个 数 样 本 信 息 总 数 Recall = \frac{查询信息正确个数}{样本信息总数} Recall=
    为了能够评价不同算法的优劣,在Precision和Recall的基础上提出了F1值的概念,来对Precision和Recall进行整体评价。F1的定义如下:
    F 1 = 2 ∗ P ∗ R P + R F1 = 2 * \frac{P*R}{P+R} F1=2P+RPR

举个例子:搜索新闻的时候,一共有100篇新闻,60篇财经新闻,40篇科技新闻,现在根据 财经 关键词搜索财经类新闻,结果出现了6篇财经新闻,4篇科技新闻,那么准确率、召回率、F1值该是如何计算的?
P r e c i s i o n = 6 6 + 4 = 60 % R e c a l l = 6 60 = 10 % F 1 = 2 ∗ 60 % ∗ 10 % 60 % + 10 % = 6 35 = 17.1 % Precision = \frac{6}{6+4} = 60\% \\ Recall = \frac{6}{60} = 10\%\\ F1 = 2* \frac{60\%*10\%}{60\%+10\%} = \frac{6}{35} = 17.1\% Precision=6+46=60%Recall=606=10%F1=260%+10%60%10%=356=17.1%
如果说搜索100篇文章出来了呢?我们来看下各个指标的情况
P r e c i s i o n = 60 60 + 40 = 60 % R e c a l l = 60 60 = 100 % F 1 = 2 ∗ 60 % ∗ 100 % 60 % + 100 % = 3 4 = 75 % Precision = \frac{60}{60+40} = 60\% \\ Recall = \frac{60}{60} = 100\%\\ F1 = 2* \frac{60\%*100\%}{60\%+100\%} = \frac{3}{4} = 75\% Precision=60+4060=60%Recall=6060=100%F1=260%+100%60%100%=43=75%
我们非常希望准确率和召回率能同时提高,但从上述结果我们可以看到准确率、召回率 存在一个矛盾,两者并不能同时达到比较高的值,如果想要使得准确率非常高可以检索一条满足条件的新闻,这样准确率就是100%了,所以用F1值来衡量这个指标是一个不错的选择。
但其实F1值是一个特殊情况,准确的指标叫做F-Measure,它是Precision和Recall加权调和平均:
F = ( a 2 + 1 ) P ∗ R a 2 ( P + R ) F=\frac{(a^2+1)P*R}{a^2(P+R)} F=a2(P+R)(a2+1)PR
a=1时就是F1指标。F1综合了P和R的结果,当F1较高时则能说明试验方法比较有效。

ROC曲线

ROC(Receiver Operating Characteristic)翻译为"接受者操作特性曲线",那么为什么会有ROC曲线?

  • 在分类中,多分类结果中,训练模型分类结果一般是概率值,我们设定一个阈值,超过该阈值的是真类,反之是负类,如果这个阈值从0.8下降到0.5,那么越来越多的样本被分为正类,即提高了TPR,当然越多负类也被划分当正类中,即提高了FPR。
  • 在类不平衡的情况下,如正样本90个,负样本10个,直接把所有样本分类为正样本,得到识别率为90%。但这显然是没有意义的。单纯根据Precision和Recall来衡量算法的优劣已经不能表征这种病态问题。

基于此人们提出了ROC曲线,曲线由两个变量1-specificity 和 Sensitivity绘制。 1-specificity=FPR,即负正类率。Sensitivity即是真正类率,TPR(True positive rate),反映了正类覆盖程度。这个组合以1-specificity对sensitivity,即是以代价(costs)对收益(benefits)。我们希望 代价少收益高,也就是这样的一个图:

我们希望x坐标值越小,y坐标值越大,如上三条ROC曲线,在0.23处取一条直线。那么,在同样的低FPR=0.23的情况下,红色分类器得到更高的PTR。也就表明,ROC越往上,分类器效果越好。我们用一个标量值AUC来量化它。

AUC

AUC值为ROC曲线所覆盖的区域面积,显然,AUC越大,分类器分类效果越好。

AUC = 1,是完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。

  • 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
  • AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
  • AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。

AUC的物理意义:假设分类器的输出是样本属于正类的socre(置信度),则AUC的物理意义为,任取一对(正、负)样本,正样本的score大于负样本的score的概率。

问题一 :评价的指标中如何结合着来看?指标与指标间会有什么样的关系?

我们看评价指标主要看我们分析的目的。比如分类问题,我们想要不计一切预测少数类,则只需要看recall. 如果只是准确率,就看accuracy. 一般来说,指标和指标直接不会同时达到满意值,比如precision和recall。对于准确率和召回率,我们应该用F1作为评价指标,它可以权衡准确率和召回率。正常来说准确率高,召回率就低,召回率高,准确率就低,这两者相互升降。

问题二 :如何通过各个指标选择最好的模型?本业务中该选择那种评价指标最合适?不同的评价指标的选择场景?

其实不同的任务有不同的评测指标,如果是分类任务,建议看ROC曲线和AUC曲线。

问题三: 多分类的情况下,混淆矩阵的召回率,精准率怎么表示比较友好?

多分类下的ROC和AUC ,参考这个博客:https://blog.csdn.net/YE1215172385/article/details/79443552

问题四: 二分类问题对其中一个类别准确率较低的原因是什么,是由于上采样破坏了原数据的分布吗?一般有什么方法解决?

应该是样本不平衡的原因,对小样本分类要么小样本上采样,要么大样本下采样,采样后依然类别间差距过大,可以考虑用设置类别间权重,logistic、svm、DecisionTree都有该参数。
这里解释一下上采样、下采样,主要是针对这个场景:二分类数据集中类别为1的样本数有10000个,类别为2的样本有100个,这样两个类别样本个数相差太多了,怎么解决?

  • 上采样(Oversampling,过采样):针对样本少的类别,复制多份,用来切割数据集,比如上述类别为2的样本复制多份,减少了跟类别1的样本个数差距
  • 下采样(Undersampling, 欠采样):针对样本多的类别,选取部分样本参与训练模型,这样跟小样本类别的样本个数就能匹配上

这几天看了一些博客,好像数据不平衡问题的解决方法挺多的,这种不平衡的讲解都可以单独的用一篇文章来讲解了,参考博客在下面,大家可以自己看下。

问题五: 模型评估是算的准确率和ROC的值,那么选择模型上 是按照训练集上计算的结果为标准,还是按照测试集上的结果为标准?

综合来看吧,通常,在训练有监督的机器学习模型的时候,会将数据划分为训练集、验证集和测试集,划分比例一般为0.6 : 0.2 : 0.2。对原始数据进行三个集合的划分,是为了能够选出效果(可以理解为准确率)最好的、泛化能力最佳的模型。

  • 训练集(Training set)
    作用是用来拟合模型,通过设置分类器的参数,训练分类模型。后续结合验证集作用时,会选出同一参数的不同取值,拟合出多个分类器。

  • 验证集(Cross Validation set)
    作用是当通过训练集训练出多个模型后,为了能找出效果最佳的模型,使用各个模型对验证集数据进行预测,并记录模型准确率。选出效果最佳的模型所对应的参数,即用来调整模型参数。如svm中的参数c和核函数等。

  • 测试集(Test set)
    通过训练集和验证集得出最优模型后,使用测试集进行模型预测。用来衡量该最优模型的性能和分类能力。即可以把测试集当做从来不存在的数据集,当已经确定模型参数后,使用测试集进行模型性能评价。

对原始数据进行三个数据集的划分,也是为了防止模型过拟合。当使用了所有的原始数据去训练模型,得到的结果很可能是该模型最大程度地拟合了原始数据,亦即该模型是为了拟合所有原始数据而存在。当新的样本出现,再使用该模型进行预测,效果可能还不如只使用一部分数据训练的模型。

参考博客

Algorithm 机器学习算法常用指标总结
严重数据倾斜文本分类,比如正反比1:20~100,适合什么model,查准一般要做到多少可以上线?
机器学习︱非平衡数据处理方式与评估

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值