精华内容
下载资源
问答
  • 机器学习分类算法常用评价指标

    千次阅读 2018-10-16 17:42:31
    目录 1. 准确率,召回率,精确率,F1-...3. Python3 sklearn实现分类评价指标 1. 准确率,召回率,精确率,F1-score,Fβ,ROC曲线,AUC值 为了评价模型以及在不同研究者之间进行性能比较,需要统一的评价标准。...

    目录

    1.  准确率,召回率,精确率,F1-score,Fβ,ROC曲线,AUC值

    2. 宏平均(Macro-averaging)和微平均(Micro-averaging)

    3. Python3  sklearn实现分类评价指标


    1.  准确率,召回率,精确率,F1-score,Fβ,ROC曲线,AUC值

            为了评价模型以及在不同研究者之间进行性能比较,需要统一的评价标准。根据数据挖掘理论的一般方法,评价模型预测能力最广泛使用的是二维混淆矩阵(Confusion matrix)(如下表所示)。

                                                                                                二维混淆矩阵

    真实类别

                                                                     预测结果

    类别1(正例)

    类别2(反例)

    类别1(正例)

    真正例(True Positive) TP

    假反例(False Negatibe) FN

    类别2(反例)

    假正例(False Positive)FP

    真反例(True Negatibe) TN 

    (1)准确率(Accuracy)表示正确分类的测试实例的个数占测试实例总数的比例,计算公式为:

    (2)召回率(Recall),也叫查全率,表示正确分类的正例个数占实际正例个数的比例,计算公式为:

    (3)精确率(Precision),也叫查准率,表示正确分类的正例个数占分类为正例的实例个数的比例,计算公式为:

    (4)F1-score是基于召回率(Recall)与精确率(Precision)的调和平均,即将召回率和精确率综合起来评价,计算公式为:

    (5) Fβ加权调和平均

              Fβ是F1度量的一般形式,能让我们表达出对查准率、查全率的不同偏好,计算公式如下:

             其中,β>0度量了查全率对查准率的相对重要性。β=1时退化为标准的F1;β>1时查全率有更大影响;β<1时查准率有更大影响。 

    (6)度量分类中的非均衡性的工具ROC曲线(ROC Curve)

    TPR(True Positive Rate)表示在所有实际为阳性的样本中,被正确地判断为阳性的比率,即:TPR=TP/(TP+FN);    FPR( False Positive Rate)表示在所有实际为阴性的样本中,被错误地判断为阳性的比率,即:FPR=FP/(FP+TN)

    ROC曲线是以FPR作为X轴TPR作为Y轴。FPR越大表明预测正类中实际负类越多,TPR越大,预测正类中实际正类越多。ROC曲线如下图所示:

    (7)AUC值(Area Unser the Curve)是ROC曲线下的面积,AUC值给出的是分类器的平均性能值。使用AUC值可以评估二分类问题分类效果的优劣,计算公式如下:

          一个完美的分类器的AUC为1.0,而随机猜测的AUC为0.5,显然AUC值在0和1之间,并且数值越高,代表模型的性能越好。

    2. 宏平均(Macro-averaging)和微平均(Micro-averaging)

             在n个二分类混淆矩阵上综合考虑查准率和查全率时使用。

    (1)宏平均(macro-ave)

             先在各混淆矩阵上分别计算出查准率,查全率和F1,然后再计算平均值,这样就得到“宏查准率”(macro-P)、“宏查全率”(macro-R)、“宏F1”(macro-F1),计算公式分别如下:

    (2)微平均(micro-ave)

             先将各混淆矩阵的对应元素进行平均,得到TP、FP、TN、FN的平均值,再基于这些平均值计算出“微查准率”(micro-P)、“微查全率”(micro-R)、“微F1”(micro-F1),计算公式分别如下:

    3. Python3  sklearn实现分类评价指标

    (1)KC4数据准备:KC4数据下载

    (2)使用随机森林实现分类并输出评价指标

    # -*- coding: utf-8 -*-
    
    import pandas as pd
    from sklearn.ensemble import RandomForestClassifier
    from sklearn import metrics
    import matplotlib.pyplot as plt
    
    """
    函数说明:文件处理
    Parameters:
         filename:数据文件
    Returns:
         list_datasets:数据集特征列表
         category_labels:数据标签列表
    """
    def data_handle(filename):
        read_data = pd.read_csv(filename)
        list_datasets = []
        category_labels = []
        for i in range(len(read_data)):
            list_data = []
            for j in range(len(read_data.iloc[i, :]) - 1):
                row_data = read_data.iloc[i, j]  # 读取每个样本的每个数据
                list_data.append(row_data)  #将每个数据存入列表
            list_datasets.append(list_data)  #将每个样本的数据存入列表
    
            row_data_label = read_data.iloc[i, len(read_data.iloc[i, :]) - 1]  # 读取每个样本的类别标签
            if row_data_label == 'N':
                category_labels.append(0)  # 将二分类标签转化为0和1,0代表软件正常,1代表软件缺陷
            else:
                category_labels.append(1)
        return list_datasets, category_labels
    
    """
    函数说明:绘制ROC曲线
    Parameters:
         labels:测试标签列表
         predict_prob:预测标签列表
    """
    def plot_roc(labels, predict_prob):
        false_positive_rate, true_positive_rate, thresholds = metrics.roc_curve(labels, predict_prob)
        roc_auc = metrics.auc(false_positive_rate, true_positive_rate)  #计算AUC值
        print('AUC=' + str(roc_auc))
        plt.title('PC5-ROC')
        plt.plot(false_positive_rate, true_positive_rate, 'b', label='AUC = %0.4f' % roc_auc)
        plt.legend(loc='lower right')
        plt.plot([0, 1], [0, 1], 'r--')
        plt.ylabel('TPR')
        plt.xlabel('FPR')
        # plt.savefig('figures/PC5.png') #将ROC图片进行保存
        plt.show()
    
    if __name__ == '__main__':
        datasets, labels = data_handle('MDP/KC4.csv')  # 对数据集进行处理
        # 训练集和测试集划分
        X_train = datasets[:115]
        y_train = labels[:115]
        X_test = datasets[90:]
        y_test = labels[90:]
        # 随机森林分类器
        clf = RandomForestClassifier()
        clf = RandomForestClassifier(n_estimators=200, random_state=0)
        clf.fit(X_train, y_train)  # 使用训练集对分类器训练
        y_predict = clf.predict(X_test)  # 使用分类器对测试集进行预测
    
        print('准确率:', metrics.accuracy_score(y_test, y_predict)) #预测准确率输出
        print('宏平均精确率:',metrics.precision_score(y_test,y_predict,average='macro')) #预测宏平均精确率输出
        print('微平均精确率:', metrics.precision_score(y_test, y_predict, average='micro')) #预测微平均精确率输出
        print('宏平均召回率:',metrics.recall_score(y_test,y_predict,average='macro'))#预测宏平均召回率输出
        print('平均F1-score:',metrics.f1_score(y_test,y_predict,average='weighted'))#预测平均f1-score输出
        print('混淆矩阵输出:',metrics.confusion_matrix(y_test,y_predict))#混淆矩阵输出
    
        print('分类报告:', metrics.classification_report(y_test, y_predict))#分类报告输出
        plot_roc(y_test, y_predict)  #绘制ROC曲线并求出AUC值
    
    
    

    评价指标结果如下:

     

     

    参考资料:周志华机器学习  blog

    交流学习资料共享欢迎入QQ群:955817470

     

    展开全文
  • 主要指标包括:1. TPR、FPR&TNR。。。2. 精确率Precision、召回率Recall和F1值。。。3. 综合评价指标F-measure。。。4. ROC曲线和AUC

    转载自:https://www.cnblogs.com/maybe2030/p/5375175.html

      考虑一个二分问题,即将实例分成正类(positive)或负类(negative)。对一个二分问题来说,会出现四种情况。如果一个实例是正类并且也被 预测成正类,即为真正类(True positive),如果实例是负类被预测成正类,称之为假正类(False positive)。相应地,如果实例是负类被预测成负类,称之为真负类(True negative),正类被预测成负类则为假负类(false negative)。

      TP:正确肯定的数目;

      FN:漏报,没有正确找到的匹配的数目;

      FP:误报,给出的匹配是不正确的;

      TN:正确拒绝的非匹配对数;

      列联表如下表所示,1代表正类,0代表负类:

     预测1预测0
    实际1True Positive(TP)False Negative(FN)
    实际0False Positive(FP)True Negative(TN)

    回到顶部

    1. TPR、FPR&TNR

      从列联表引入两个新名词。其一是真正类率(true positive rate ,TPR), 计算公式为

    TPR = TP / (TP + FN)

    刻画的是分类器所识别出的 正实例占所有正实例的比例。

      另外一个是负正类率(false positive rate, FPR),计算公式为

    FPR = FP / (FP + TN)

    计算的是分类器错认为正类的负实例占所有负实例的比例。

      还有一个真负类率(True Negative Rate,TNR),也称为specificity,计算公式为

    TNR = TN /(FP + TN) = 1 - FPR

    回到顶部

    2. 精确率Precision、召回率Recall和F1值

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

      一般来说,Precision就是检索出来的条目(比如:文档、网页等)有多少是准确的,Recall就是所有准确的条目有多少被检索出来了,两者的定义分别如下:

    Precision = 提取出的正确信息条数 /  提取出的信息条数     

    Recall = 提取出的正确信息条数 /  样本中的信息条数    

      为了能够评价不同算法的优劣,在Precision和Recall的基础上提出了F1值的概念,来对Precision和Recall进行整体评价。F1的定义如下:

    F1值  = 正确率 * 召回率 * 2 / (正确率 + 召回率) 

      不妨举这样一个例子:

      某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目的。撒一大网,逮着了700条鲤鱼,200只虾,100只鳖。那么,这些指标分别如下:

      正确率 = 700 / (700 + 200 + 100) = 70%

      召回率 = 700 / 1400 = 50%

      F1值 = 70% * 50% * 2 / (70% + 50%) = 58.3%

      不妨看看如果把池子里的所有的鲤鱼、虾和鳖都一网打尽,这些指标又有何变化:

      正确率 = 1400 / (1400 + 300 + 300) = 70%

      召回率 = 1400 / 1400 = 100%

      F1值 = 70% * 100% * 2 / (70% + 100%) = 82.35%        

      由此可见,正确率是评估捕获的成果中目标成果所占得比例;召回率,顾名思义,就是从关注领域中,召回目标类别的比例;而F值,则是综合这二者指标的评估指标,用于综合反映整体的指标。

      当然希望检索结果Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下有矛盾的。比如极端情况下,我们只搜索出了一个结果,且是准确的,那么Precision就是100%,但是Recall就很低;而如果我们把所有结果都返回,那么比如Recall是100%,但是Precision就会很低。因此在不同的场合中需要自己判断希望Precision比较高或是Recall比较高。如果是做实验研究,可以绘制Precision-Recall曲线来帮助分析。

    回到顶部

    3. 综合评价指标F-measure

      Precision和Recall指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure(又称为F-Score)。

      F-Measure是Precision和Recall加权调和平均

      当参数α=1时,就是最常见的F1。因此,F1综合了P和R的结果,当F1较高时则能说明试验方法比较有效。

    回到顶部

    4. ROC曲线和AUC

      4.1 为什么引入ROC曲线?

      Motivation1:在一个二分类模型中,对于所得到的连续结果,假设已确定一个阀值,比如说 0.6,大于这个值的实例划归为正类,小于这个值则划到负类中。如果减小阀值,减到0.5,固然能识别出更多的正类,也就是提高了识别出的正例占所有正例 的比类,即TPR,但同时也将更多的负实例当作了正实例,即提高了FPR。为了形象化这一变化,引入ROC,ROC曲线可以用于评价一个分类器。

      Motivation2:在类不平衡的情况下,如正样本90个,负样本10个,直接把所有样本分类为正样本,得到识别率为90%。但这显然是没有意义的。单纯根据Precision和Recall来衡量算法的优劣已经不能表征这种病态问题。

      4.2 什么是ROC曲线?

      ROC(Receiver Operating Characteristic)翻译为"接受者操作特性曲线"。曲线由两个变量1-specificity 和 Sensitivity绘制. 1-specificity=FPR,即负正类率。Sensitivity即是真正类率,TPR(True positive rate),反映了正类覆盖程度。这个组合以1-specificity对sensitivity,即是以代价(costs)对收益(benefits)。

           此外,ROC曲线还可以用来计算“均值平均精度”(mean average precision),这是当你通过改变阈值来选择最好的结果时所得到的平均精度(PPV)。

      为了更好地理解ROC曲线,我们使用具体的实例来说明:

      如在医学诊断中,判断有病的样本。那么尽量把有病的揪出来是主要任务,也就是第一个指标TPR,要越高越好。而把没病的样本误诊为有病的,也就是第二个指标FPR,要越低越好。

      不难发现,这两个指标之间是相互制约的。如果某个医生对于有病的症状比较敏感,稍微的小症状都判断为有病,那么他的第一个指标应该会很高,但是第二个指标也就相应地变高。最极端的情况下,他把所有的样本都看做有病,那么第一个指标达到1,第二个指标也为1。

      我们以FPR为横轴,TPR为纵轴,得到如下ROC空间。

      我们可以看出,左上角的点(TPR=1,FPR=0),为完美分类,也就是这个医生医术高明,诊断全对。点A(TPR>FPR),医生A的判断大体是正确的。中线上的点B(TPR=FPR),也就是医生B全都是蒙的,蒙对一半,蒙错一半;下半平面的点C(TPR<FPR),这个医生说你有病,那么你很可能没有病,医生C的话我们要反着听,为真庸医。上图中一个阈值,得到一个点。现在我们需要一个独立于阈值的评价指标来衡量这个医生的医术如何,也就是遍历所有的阈值,得到ROC曲线。

      还是一开始的那幅图,假设如下就是某个医生的诊断统计图,直线代表阈值。我们遍历所有的阈值,能够在ROC平面上得到如下的ROC曲线。

      曲线距离左上角越近,证明分类器效果越好。

     

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

      4.3 什么是AUC?

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

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

      0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。

      AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。

      AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。

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

      4.4 怎样计算AUC?

      第一种方法:AUC为ROC曲线下的面积,那我们直接计算面积可得。面积为一个个小的梯形面积之和。计算的精度与阈值的精度有关。

      第二种方法:根据AUC的物理意义,我们计算正样本score大于负样本的score的概率。取N*M(N为正样本数,M为负样本数)个二元组,比较score,最后得到AUC。时间复杂度为O(N*M)。

      第三种方法:与第二种方法相似,直接计算正样本score大于负样本的概率。我们首先把所有样本按照score排序,依次用rank表示他们,如最大score的样本,rank=n(n=N+M),其次为n-1。那么对于正样本中rank最大的样本,rank_max,有M-1个其他正样本比他score小,那么就有(rank_max-1)-(M-1)个负样本比他score小。其次为(rank_second-1)-(M-2)。最后我们得到正样本大于负样本的概率为

      时间复杂度为O(N+M)。

    回到顶部

    5. 参考内容

      1. 机器学习指标大汇总:http://www.36dsj.com/archives/42271

     

    展开全文
  • 机器学习分类算法模型评价指标

    千次阅读 2019-10-14 11:18:13
    目前,业内对于机器学习,数据挖掘,推荐系统等算法模型都有比较流行的评价标准,这些评价标准在一定程度上反映了模型性能的优劣,如准确率(Prescision-rate),召回率(Recall-rate)还有F值(F-measure)。...

    概览

    目前,业内对于机器学习,数据挖掘,推荐系统等算法模型都有比较流行的评价标准,这些评价标准在一定程度上反映了模型性能的优劣,如准确率(Prescision-rate),召回率(Recall-rate)还有F值(F-measure)。
    这篇文章主要总结的是分类算法(二分类)的一些模型评价指标。

    1.混淆矩阵

    要了解准确率和召回率,先要知道什么是混淆矩阵,它反映的是预测值与真实值的预测情况,它共有四种参数(这里我们用一个二分类的例子,预测肿瘤是良性还是恶性):

    1)真阳性(True-Positive,TP)

    真阳性即真实值为正例,预测值也为正例。即真实情况是肿瘤是良性的,而预测也是良性的。

    2)假阳性(False-Positive,FP)

    假阳性即真实值为反例,但预测值为正例。即真实情况是恶性肿瘤,而预测为良性肿瘤。

    3)真阴性(True-Negative,TN)

    真阴性即真实值为反例,而预测值也为反例。即真实情况是恶性肿瘤,而预测也为恶性。

    4)假阴性(False-Negative,FN)

    假阴性即真实值为正例,而预测值为反例。即真实情况是良性肿瘤,而预测值为恶性。

    构成混淆矩阵

    在这里插入图片描述

    2.评价指标

    1)准确率(accuracy-rate)

    acc=(TP+TN)/(TP+FP+TN+FN)
    反映的是正确预测的数量占全体数量的比重,准确率越高,模型效果越好。

    2)错误率(error-rate)

    error=(FP+FN)/(TP+FP+TN+FN)
    与准确率互斥,反映的是预测错误的数量占全体数量的比重
    因此,error = 1 - acc

    3)灵敏度(sensitive)

    sensitive = TP/P,即正确被分类到正例的数量占所有真实正例数量的比重,反映了模型对于正例的识别能力。

    4)特效度(specificity)

    specificity = TN/N,即正确被分类到反例的数量占所有真实反例数量的比重,反映了模型对于反例的识别能力

    5)精确度(precision)

    precision = TP/(TP+FP),即正确被分类到正例的数量占所有被分类到正例数量的比重。

    6)召回率(recall-rate)

    recall = TP/(TP+FN),可以看出recall = TP/P = sensitive,与灵敏度是等价的

    7)综合评价指标(F-measure)

    F = ((a^2 + 1) x precision x recall) / (a ^ 2 + precison + recall)
    P和R指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure(又称为F-Score)。
    F-Measure是Precision和Recall加权调和平均。

    8)其他评价指标

    计算速度:分类器训练和预测需要的时间;

    鲁棒性:处理缺失值和异常值的能力;

    可扩展性:处理大数据集的能力;

    可解释性:分类器的预测标准的可理解性,像决策树产生的规则就是很容易理解的,而神经网络的一堆参数就不好理解,我们只好把它看成一个黑盒子。

    ROC曲线和PR曲线:

    ROC曲线

    ROC曲线由假阳性(x轴)和假阴性(y轴)构成的点连接而成。
    例如在肿瘤预测的分类中(1表示良性,0表示恶性),有如下样本:
    真实情况:(1,1,0,0,1)

    而预测情况要根据所给定的阈值threshold来确定最终预测的是1还是0。因为最终的预测值p(假定预测为良性肿瘤)是一个概率值,即0<=p<=1。因此我们需要给定一个阈值来判断预测的类别,比如我们给定threshold = 0.5,当p>=0.5时,我们规定预测值为1,即良性肿瘤,others为恶性肿瘤。当给定的threshold不同,则预测的情况也不同,例如下方给定几个threshold:
    先给出预测情况:(0.5,0.6,0.55,0.4,0.7)
    当threshold = 0.4,则预测为:(1,1,1,1,1),
    则fp-rate = FP/N = 0,tp-rate = TP/P = 1作为roc曲线上的点,同理下方的点。
    当threshold = 0.5,则预测为:(1,1,1,0,1)
    当threshold = 0.6,则预测为:(0,1,0,0,1)
    当threshold = 0.7,则预测为:(0,0,0,0,1)
    如此,生成的点连成的线就是roc曲线,而roc曲线下方的面积就是auc,而auc越大表示模型性能越好。为什么呢?
    取两个极端,下图中的A点和B点,A点(0,1)表示fp-rate=0,tp-rate=1,说明什么呢?说明预测正例全是对的,而没有预测错的正例。即模型的正确率是100%。相反,B点(1,0)说明模型的正确率为0。因此当roc曲线越靠近左上角,性能越好,而越靠近右下角性能越差。因此下图L2比L1性能更好。
    而C(1,1)点表示所有样本全都预测为良性肿瘤,D(0,0)表示全都预测为恶性肿瘤。
    综上,当模型处于最好的情况,即最靠近左上角,那么这条线就是DAC这个没有弧度的像是直角的线,而此时的auc即DAC下方的面积也是最大的时候。
    在这里插入图片描述
    虽然ROC曲线相比较于Precision和Recall等衡量指标更加合理,但是其在高不平衡数据条件下的的表现仍然过于理想,不能够很好的展示实际情况。

    PR曲线

    即,PR(Precision-Recall)曲线。
    举个例子(例子来自Paper:Learning from eImbalanced Data):
    假设N_c>>P_c(即Negative的数量远远大于Positive的数量),若FP很大,即有很多N的sample被预测为P,因为:
    在这里插入图片描述
    因此FP_rate的值仍然很小(如果利用ROC曲线则会判断其性能很好,但是实际上其性能并不好),但是如果利用PR,因为Precision综合考虑了TP和FP的值,因此在极度不平衡的数据下(Positive的样本较少),PR曲线可能比ROC曲线更实用。

    参考链接:机器学习算法中的准确率(Precision)、召回率(Recall)、F值(F-Measure)

    展开全文
  • 机器学习算法——评价指标汇总

    千次阅读 2018-08-13 17:48:05
    准确率,精确率,召回率和F1 准确率(Accuracy), 精确...对于分类器,或者说分类算法评价指标主要有precision,recall,F-score,以及我们今天要讨论的ROC和AUC。下图是一个ROC曲线的示例。ROC更好的参考 正如我们...

    准确率,精确率,召回率和F1

    准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure

    ROC-AUC

    ROC曲线

    需要提前说明的是,我们这里只讨论二值分类器。对于分类器,或者说分类算法,评价指标主要有precision,recall,F-score,以及我们今天要讨论的ROC和AUC。下图是一个ROC曲线的示例。
    ROC更好的参考
    正如我们在这个ROC曲线的示例图中看到的那样,ROC曲线的横坐标为false positive rate(FPR),纵坐标为true positive rate(TPR)。下图中详细说明了FPR和TPR是如何定义的。(真阳性/假阳性=roc)(acu为roc曲线下的面积0.5到1)

    混淆矩阵.png

     

    下面考虑ROC曲线图中的虚线y=x上的点。这条对角线上的点其实表示的是一个采用随机猜测策略的分类器的结果,例如(0.5,0.5),表示该分类器随机对于一半的样本猜测其为正样本,另外一半的样本为负样本。

    如何画ROC曲线

    假如我们已经得到了所有样本的概率输出(属于正样本的概率),现在的问题是如何改变“discrimination threashold”?我们根据每个测试样本属于正样本的概率值从大到小排序。下图是一个示例,图中共有20个测试样本,“Class”一栏表示每个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率[^4]。

    样例.png

     

    接下来,我们从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。举例来说,对于图中的第4个样本,其“Score”值为0.6,那么样本1,2,3,4都被认为是正样本,因为它们的“Score”值都大于等于0.6,而其他样本则都认为是负样本。每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。这样一来,我们一共得到了20组FPR和TPR的值,将它们画在ROC曲线的结果如下图:

    为什么使用ROC曲线

    既然已经这么多评价标准,为什么还要使用ROC和AUC呢?因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。下图是ROC曲线和Precision-Recall曲线[^5]的对比:

    信用评分的简单小结(ROC,IV,WOE)

    常见的用于信用评分的模型就是logistic回归,这是一种处理二分类因变量的广义线性模型。这种模型的理论基础比较扎实,但是对于不同的问题当然也存在一些特殊的处理方式,我最大的困惑就在于建模时对分类自变量的处理方法。
    由于制作评分卡的某些需要,通常会在建立评分模型时将自变量做离散化处理(等宽切割,等高切割,或者利用决策树来切割),但是模型本身没办法很好地直接接受分类自变量的输入,因此需要对自变量进行再次的处理。比较常规的做法有两种:做dummy变量,做基于目标的变量编码。

    dummy变量是比较顺其自然的操作,例如某个自变量m有3种取值分别为m1,m2,m3,那么可以构造两个dummy变量M1,M2:当m取m1时,M1取1而M2取0;当m取m2时,M1取0而M2取1;当m取m3时,M1取0且M2取0。这样,M1和M2的取值就确定了m的取值。之所以不构造M3变量,是基于信息冗余和多重共线性之类的考虑。但是,构造dummy变量也存在一些缺点,例如无法对自变量的每一个取值计算其信用得分,并且回归模型筛选变量时可能出现某个自变量被部分地舍弃的情况。

    另一种处理分类变量的方法是基于目标对其进行编码,在信用评分中比较常见的就是用WOE编码。WOE叫做证据权重(Weight of Evidence),表示的其实是自变量取某个值的时候对违约比例的一种影响。
    信用评分的简单小结(ROC,IV,WOE)

    直观地可以认为WOE蕴含了自变量取值对目标变量(违约概率)的某种影响,因此可以自然地将自变量重新编码:当自变量取值Ai时,编码为相应的WOEi。

    KS

    风控分类模型种类(决策、排序)比较与模型评估体系(ROC/gini/KS/lift)
    区分度指标(KS)是度量具体模型下正常样本和违约样本分布的最大差距,首先按照样本的信用分数或预测违约率从小到大进行排序,然后计算每一个分数或违约率下好坏样本的累计占比。正常和违约样本的累计占比差值的最大值即为区分度指标(KS)。区分度指标(KS)的示意如图2所示。区分度指标(KS)小于0.2代表模型准确性差,超过0.75则代表模型准确性高。

    实际上是就是你建立好模型后,按照评分从大到小排列后:检验你所谓的好客户和坏客户两类客户分布的差异性,即模型区分度。分布根据好坏两个客户评分的累积密度分布曲线,画出来的:比如好坏客户共100个,按照评分排序后前百分之十的客户即10个,其中好的客户有8个,坏的客户有2个(总体样本中好客户80个,坏客户20个),那么前10%的客户的累积密度为:好客户10%,坏客户10%。同理前20%的客户中其中好的客户有15个,坏的客户有5个那么前20%的客户的累积密度为:好客户18.75%,坏客户25%
    以此类推可以得出前30%,40%。。。。100%的累积密度。以10%,20%,30%。。。100%为横坐标,以两类客户累积密度为纵坐标,即可画出KS曲线图。

    群体稳定指数(PSI)————模型的稳定性

    群体稳定性指标(population stability index),
    公式: psi = sum((实际占比-预期占比)/ln(实际占比/预期占比))

    psi.png

    举个例子解释下,比如训练一个logistic回归模型,预测时候会有个概率输出p。你测试集上的输出设定为p1吧,将它从小到大排序后10等分,如0-0.1,0.1-0.2,......。
    现在你用这个模型去对新的样本进行预测,预测结果叫p2,按p1的区间也划分为10等分。
    实际占比就是p2上在各区间的用户占比,预期占比就是p1上各区间的用户占比。
    意义就是如果模型跟稳定,那么p1和p2上各区间的用户应该是相近的,占比不会变动很大,也就是预测出来的概率不会差距很大。
    一般认为psi小于0.1时候模型稳定性很高,0.1-0.25一般,大于0.25模型稳定性差,建议重做。
    模型的稳定性用PSI指标来检验




    转自:https://www.jianshu.com/p/f60f7755a847
     

    展开全文
  • 在使用机器学习算法解决一些分类问题的过程中,往往需要不同的模型评估指标,主要有一下三类指标: 1.混淆矩阵相关 1.1混淆矩阵 混淆矩阵是监督学习中的一种可视化工具,主要用于比较分类结果和实例的真实信息。矩阵...
  • 读完机器学习算法常识之后,你已经知道了什么是欠拟合和过拟合、偏差和方差以及贝叶斯误差。在这篇给大家介绍一些机器学习中离线评估模型性能的一些指标。 当我们训练得到了多个模型之后,如何衡量这几个模型的性能...
  • 聚类算法评价指标
  • 机器学习算法模型评价指标ROC AUC

    千次阅读 2018-03-04 21:12:52
    当然,在进行实验的时候,一种或两种衡量指标并不能说明一个模型的好坏,因此我们需要了解常用的几种机器学习算法衡量指标。 本文整理介绍了7种最常用的机器学习算法衡量指标:分类精度、对数损失、混淆矩阵、曲线下...
  • ​ 对于自然语言处理(NLP)、机器学习(ML)、信息检索(IR)等领域,评估(Evaluation)是一个必要的工作,而这其中所涉及到的评价指标一般包括:准确率(Accuracy)、精确率(Precision)、召回率(Recall)以及F1-measure ...
  • 机器学习性能评价指标汇总

    千次阅读 2019-04-04 19:10:22
    注:在正负样本不平衡的情况下,准确率这个评价指标有很大的缺陷。比如在互联网广告里面,点击的数量是很少的,一般只有千之几,如果用acc,即使全部预测成负类(不点击)acc 也有 99% 以上,没有意义 1.1.2 ...
  • 分类算法的效果评估 1,准确率accuracy_score from sklearn.metrics import accuracy_score 2,精确率/查准率precision_score from sklearn.metrics import precision_score 分为宏平均(macro)和微平均(micro)...
  • 主要为大家详细介绍了python机器学习之KNN分类算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 机器学习模型的常用评价指标

    千次阅读 2020-07-05 13:34:54
    在看论文的过程中发现了有很多模型好坏的评价指标,有比较常见的指标,也有一些从未了解到的评价指标,是时候整理一波了,以便后续学习查缺补漏。 常见概念: 真正(True Positive , TP):被模型预测为正的正...
  • 对于二类分类器/分类算法评价指标主要有accuracy, [precision,recall,F-score,pr曲线],ROC-AUC曲线 accurary(准确率):也就是说真实值是1,预测值也是1;真实值为0,预测值也为0。就是正确的分类 #使用...
  • 机器学习评价指标

    千次阅读 2018-10-05 21:19:37
    2 拟合(回归) 2.1 平均绝对误差 2.2 平均平方误差 2.3 解释变异 2.4 决定系数 3 聚类 3.1 兰德指数 3.2 互信息 3.3 轮廓系数 4 信息检索 在使用机器学习算法的过程中,针对不同场景需要不同的评价指标。...
  • 机器学习算法评价指标

    千次阅读 2017-07-21 15:11:08
    在使用机器学习算法的过程中,针对不同场景需要不同的评价指标,在这里对常用的指标进行一个简单的汇总。一、分类 1. 精确率与召回率 描述:精确率与召回率多用于二分类问题。精确率(Precision)指的是模型判为正...
  • 机器学习模型评价指标总结 1. 混淆矩阵(Confusion Matrix) (以下先考虑二分类问题) 其中: TP(实际为正预测为正),FP(实际为负但预测为正) TN(实际为负预测为负),FN(实际为正但预测为负) 2. ...
  • 机器学习算法评价指标之group auc(gauc)

    万次阅读 热门讨论 2019-02-23 14:55:30
    机器学习算法中,很多情况我们都是把auc当成最常用的一个评价指标,而auc反映整体样本间的排序能力,但是有时候auc这个指标可能并不能完全说明问题,有可能auc并不能真正反映模型的好坏,以CTR预估算法(推荐算法...
  • 机器学习模型的评价指标和方法

    万次阅读 2018-08-24 10:32:13
    对于分类器,或者说分类算法评价指标主要有accuracy, [precision,recall,宏平均和微平均,F-score,pr曲线],ROC-AUC曲线,gini系数。 对于回归分析,主要有mse和r2/拟合优度。 分类模型的评估 机器学习系统...
  • 机器学习的回归评价指标 回归类算法的模型评估一直都是回归算法中的一个难点,但不像无监督学习算法中的轮廓系数等等评估指标,回归类与分类型算法的模型评估其实是相似的法则——找真实标签和预测值的差异。只不过...
  • 在分类中,有直接结果(标签)的输出,并且分类的结果有正误之,所以使用预测的准确度,混淆矩阵,ROC曲线等指标来进行评估。但无论如何评估,都是在”模型找到正确答案“的能力。而回归中,由于要拟合数据,我们...
  • 机器学习评价指标大汇总

    千次阅读 2018-09-20 19:43:35
    在使用机器学习算法的过程中,针对不同场景需要不同的评价指标,在这里对常用的指标进行一个简单的汇总。 一、分类 1. 精确率与召回率 精确率与召回率多用于二分类问题。精确率(Precision)指的是模型判为正的...
  • 机器学习中的各种评价指标

    千次阅读 2018-11-29 14:50:23
    分类器评价指标主要有: 1,Accuracy 2,Precision  3,Recall  4,F1 score  5,ROC 曲线 6,AUC 7,PR 曲线 8,Log损失 混淆矩阵 混淆矩阵是监督学习中的一种可视化工具,主要用于比较分类结果和实例的真实...
  • 多分类场景下的性能度量指标有:准确率、精确率、召回率和F1-score; 根据多分类下的混淆矩阵,计算macro“宏平均”和micro“微平均”两种形式的查准率查全率的计算公式。当混淆矩阵不平衡时(长方形),如何计算微...
  • 点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达 本文转自:磐创AI1. 典型聚类算法1.1 基于划分的方法代表:kmeans算法·指定k个聚类中心...
  • 客观评价-基于指标客观评价-基于模型R&S®UPV音频分析仪小结那么我们现在用哪些评价方法呢?基于深度学习的方法:AutoMOS, QualityNe, NISQA, MOSNetMOSNet(`absolute.mosnet`或`mosnet`)语音质量的感知评估...
  • 机器学习之聚类概述及评价指标

    万次阅读 多人点赞 2018-06-21 17:11:22
    聚类是一种无监督学习算法,训练样本的标记未知,按照某个标准或数据的内在性质及规律,将样本划分为若干个不相交的子集,每个子集称为一个簇(cluster),每个簇中至少包含一个对象,每个对象属于且仅属于一个簇;...
  • 机器学习算法工程师面试考点汇总

    千次阅读 多人点赞 2019-07-01 08:44:45
    2019-06-29 10:41:12 ...本篇根据各个公司的机器学习相关岗位面试中问的问题进行总结,后面还会更新面试中考察所占比例。 知识点思维导图 数学基础: 1、微积分 1、SGD,Momentum,Adagard,Adam原...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,503
精华内容 9,401
关键字:

机器学习分来算法评价指标