zoukankan      html  css  js  c++  java
  • 模型评估【PR|ROC|AUC】

    这里主要讲的是对分类模型的评估。

    1、准确率(Accuracy)

        准确率的定义是:【分类正确的样本】 / 【总样本个数】,其中分类正确的样本是不分正负样本的

        优点:简单粗暴

        缺点:当正负样本分布不均衡的情况(假设一种极端情况,正样本1个,负样本99个),此时即使一个比较差的模型(只会将所用的样本预测成负样本),那它也有99%的准确率。

    总结一下就是 当样本分布不均匀,该指标意义不大

        改进方案: 1、在不同样本分类下求它的准确率,然后取平均值

                        2、选取其他评价指标

    2、PR曲线

        Precision(精准率):【分类正确的正样本个数】/【被预测为正样本的个数】

        Recall(召回率):【分类正确的正样本个数】/【真实中正样本的个数】

        Precision 与 Recall是一对既矛盾又统一的变量

        矛盾是指:如果想要高的 精准率,也就要求模型有一些挑剔,对于一些不太确定的是否为正样本的,不将它预测成正样本,可以理解为模型变得“保守”了,所以【被预测为正样本的个数】变小,【分类正确的正样本个数】变小,但是他们比值是变大的,可以这么理解假设有10个样本不太确定是否是正样本,在挑剔之前,就把这个不确定的全部预测成正样本,假设在这10个中,只有4个分类正确,在挑剔之后,分子-4,分母-10,也就是不确定中可以会预测正确也可能预测错误,而追求高的精准率,就直接将这些不确定的抛弃,而此时【分类正确的正样本个数】是变小的,所以召回率变小。

        统一是指:个人感觉精准率和召回率越高都会反映模型效果会比较好

        PR曲线:是以Precision为纵坐标,Recall为横坐标的描述一个模型在不同阈值(划分正负样本的标准)下的曲线图

        绘制过程:与ROC绘制过程相同

        曲线意义:当R接近0,即在原点附近时,模型变得非常保守,十分把握才预测成正样本,也就是阈值变得很大,此时正确的可能性将也很大,即精确率很高,随着R的变大,精确率将变小。

        那如何通过PR曲线衡量不同模型的好坏呢?

        可以通过曲线下的面积,面积越大,模型越好

        缺点

        受样本影响比较大,假设负样本扩大100倍,召回率不变,精准率的分母变大了,一些负样本被预测成正样本,也就是在召回率固定的情况下,精准率变小了。

    3、ROC曲线

        真阳性 (TPR): TP / P  【分类正确的正样本个数TP】/【真实中正样本的个数P】 等于 召回率

        伪阳性(FPR): FP / N 【在负样本中被预测成正样本的个数 FP】 / 【真实中负样本的个数N】

        ROC曲线是以真阳性为纵坐标,伪阳性为横坐标描述一个模型在不同阈值(划分正负样本的标准)下的曲线图

        绘制过程:

    • 对所有样本求预测为正样本的概率,并根据概率从大到小排序
    • 分别以每一个概率作为一个划分正负样本的阈值,对于第一个就是将最大概率作为划分阈值,此时正样本个数为0(y轴为0),全部为负样本(横轴也为0),不断改变降低阈值,就会得到在该阈值下的点
    • 不同阈值下的点对构成的曲线就是roc曲线

        另外还有一个简单的绘制方法

        X轴以 1/N 为单位,Y轴以 1/P为单位,遍历所有的样本,如果当前样本为正的话,向上移动一个单位,样本为负向右移动一个单位,最终的结果就是由左下方不断往右上方移动

        每一次的移动其实都是一次改变判断正负样本阈值的过程,对于 X轴和Y轴的分母不会改变,当样本是正,阈值为大于等于该样本概率判断为正样本,所以Y轴 + 1,样本为负,表示该样本会判断成正样本,所以X轴 + 1。

        优点:

         ROC曲线不会受样本影响,相对稳定。假设负样本扩大100倍,对于X轴,分子分母等概率变化,总体结果是不变的,对于Y轴也是不变的

    4、AUC (Area under cover)

        AUC是ROC曲线的积分,表示模型分类效果,值越大分类效果越好

        一句话概括AUC就是:

        对于两个随机正负样本,将正样本预测成正样本的概率大于将负样本预测成正样本的概率。

        AUC深层解读:https://www.zhihu.com/question/39840928?from=profile_question_card

        AUC计算方法:https://blog.csdn.net/qq_22238533/article/details/78666436

  • 相关阅读:
    小朋友学数据结构(2):栈
    小朋友学数据结构(1):约瑟夫环的链表解法、数组解法和数学公式解法
    小朋友学C++(2)
    小朋友学C++(1)
    小朋友学C语言(8)
    小朋友学C语言(7)
    小朋友学C语言(6)
    小朋友学C语言(5):常量和变量,for循环
    小朋友学C语言(4):单精度浮点数与双精度浮点数
    小朋友学C语言(3):整数、浮点数、字符
  • 原文地址:https://www.cnblogs.com/zhaopAC/p/9819661.html
Copyright © 2011-2022 走看看