zoukankan      html  css  js  c++  java
  • 机器学习面笔试-模型评估篇

    1.衡量分类器的好坏

    (1)常用的指标:
    查准率 precision = TP/(TP+FP) = TP/~P (~p为预测为真的数量)
    召回率 recall = TP/(TP+FN) = TP/ P
    (2)F1 score
    F1值: 2/F1 = 1/recall + 1/precision
    (3)ROC和AUC

    2. P-R图

    P-R图,即以查全率做横轴,查准率做纵轴的平面示意图,通过P-R曲线,来综合判断模型的性能。
    P-R图的画法是先对对预测结果进行排序,排在前面的是学习器认为最可能是正例的样本,排在最后面的是最不可能的样本。按顺序,依次将每一个样本划分为正例进行预测,就得到了多组查准率和查全率的值。


    p-r

    当曲线没有交叉的时候:外侧曲线的学习器性能优于内侧;
    当曲线有交叉的时候:
    第一种方法是比较曲线下面积,但值不太容易估算;
    第二种方法是比较两条曲线的平衡点,平衡点是“查准率=查全率”时的取值,在图中表示为曲线和对角线的交点。平衡点在外侧的曲线的学习器性能优于内侧。
    第三种方法是F1度量和Fβ度量。F1是基于查准率与查全率的调和平均定义的,Fβ则是加权调和平均。但在不同的应用中,对查准率和查全率的重视程度不同,需要根据其重要性,进行加权处理,故而有了Fβ度量。β是查全率对查准率的相对重要性。β>1时:查全率有更大影响;β=1时:影响相同,退化成F1度量;β<1时:查准率有更大影响。

    f1fb

    3.什么是ROC?

    ROC全称是“受试者工作特征”(Receiver Operating Characteristic)。ROC曲线的面积是AUC(Area Under the Curve)。AUC用于衡量“二分类问题”机器学习算法性能(泛化能力)。
    ROC空间是一个以假阳性率(FPR,false positive rate)为X轴,真阳性率(TPR, true positive rate)为Y轴的二维坐标系所代表的平面。
    在一个二分类模型中,对于所得到的连续结果,假设已确定一个阀值,比如说 0.6,大于这个值的实例划归为正类,小于这个值则划到负类中。如果减小阀值,减到0.5,固然能识别出更多的正类,也就是提高了识别出的正例占所有正例 的比类,即TPR,但同时也将更多的负实例当作了正实例,即提高了FPR。为了形象化这一变化,在此引入ROC,ROC曲线可以用于评价一个分类器。
    roc

    4.ROC怎么画出来的?【参考

    假设已经得出一系列样本被划分为正类的概率,然后按照大小排序,下图是一个示例,图中共有20个测试样本,“Class”一栏表示每个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率。


    draw_roc

    接下来,我们从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。举例来说,对于图中的第4个样本,其“Score”值为0.6,那么样本1,2,3,4都被认为是正样本,因为它们的“Score”值都大于等于0.6,而其他样本则都认为是负样本, 其中分类的正确的(即模型认为是正例和反例的样本,其标记刚好也是正例和反例),TP = 3, FN = 9, FP = 1, TN = 7。

    TPR=TPTP+FN=33+9=0.25
    FPR=FPTN+FP=11+7=0.125

    每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。这样一来,我们一共得到了20组FPR和TPR的值,将它们画在ROC曲线的结果如下图:


    ROC

    5.AUC物理含义及如何计算?

    AUC(Area under Curve):ROC曲线下的面积,介于0.1和1之间。AUC作为数值可以直观的评价分类器的好坏,值越大越好。
    假设分类器的输出是样本属于正类的socre(置信度),则AUC的物理意义为,任取一对(正、负)样本,正样本的score大于负样本的score的概率。从而我们能够理解对于AUC而言,并不关心具体预测的结果是标签或者概率,也不需要卡什么阈值,只要在预测结果之间有排序即可。
    那么如何计算AUC?
    这里】介绍了三种方法。

  • 相关阅读:
    算法题之丢手绢问题
    Java接口成员变量和方法默认修饰符
    清空select下拉框的方法
    Java基础数据类型的默认值
    JVM内存区域划分
    Java中匿名内部类
    Java值传递
    部署web Service到tomcat
    Tomcat环境下配置数据源
    遇到和需要解决的问题
  • 原文地址:https://www.cnblogs.com/siucaan/p/9623118.html
Copyright © 2011-2022 走看看