精华内容
下载资源
问答
  • 机器学习模型的评价指标和方法

    万次阅读 多人点赞 2016-09-18 15:04:55
    ... 对于二类分类器/分类算法,评价指标主要有accuracy, [precision,recall,F-score,pr曲线],ROC-AUC曲线,gini系数。 对于多类分类器/分类算法,评价指标主要有accuracy, [宏平均和微...

    http://blog.csdn.net/pipisorry/article/details/52574156

    衡量分类器的好坏

            对于二类分类器/分类算法,评价指标主要有accuracy, [precision,recall,F-score,pr曲线],ROC-AUC曲线,gini系数。

            对于多类分类器/分类算法,评价指标主要有accuracy, [宏平均和微平均,F-score]。

            对于回归分析,主要有mse和r2/拟合优度。

     

    二分类模型的评估

    机器学习系统设计系统评估标准

    1. Error Metrics for Skewed Classes有偏类的错误度量精确度召回率
      1. PrecisionRecall精确度召回率
    2. Trading Off Precision and Recall权衡精度和召回率F1值
      1. A way to choose this threshold automatically How do we decide which of these algorithms is best
    3. Data For Machine Learning数据影响机器学习算法的表现

    [Machine Learning - XI. Machine Learning System Design机器学习系统设计(Week 6)系统评估标准 ]

    准确率/召回率/精度/F1值

    混淆矩阵

    混淆矩阵赋予一个分类器性能表现更全面的认识,同时它通过计算各种分类度量,指导你进行模型选择。

    对于二分类问题,可将样例根据其真实类别和分类器预测类别划分为:

    真正例(True Positive,TP):真实类别为正例,预测类别为正例。

    假正例(False Positive,FP):真实类别为负例,预测类别为正例。

    假负例(False Negative,FN):真实类别为正例,预测类别为负例。

    真负例(True Negative,TN):真实类别为负例,预测类别为负例。

    然后可以构建混淆矩阵(Confusion Matrix)如下表所示。

    真实类别

    预测类别

    正例

    负例

    正例

    TP

    FN

    负例

    FP

    TN

    准确率、识别率(Classification Accuracy)

    分类器正确分类的比例

    (TP+TN) /(TP+TN+FN+FP)

    错误率、误分类率(Classification Error):分类器误分类的比例

    (FP+FN) /(TP+TN+FN+FP)

    考虑类不平衡问题,其中感兴趣的主类是稀少的。即数据集的分布反映负类显著地占多数,而正类占少数。故面对这种问题,需要其他的度量,评估分类器正确地识别正例数据的情况和正确地识别负例数据的情况。

    精度(Precision)

    看做精确性的度量,即标记为正类的数据实际为正例的百分比

    TP /(TP+FP)

    准确率,又称查准率(Precision,P):

        

    召回率(Recall)

    也称为真正例识别率、灵敏性(Sensitivity)、查全率:正确识别的正例数据在实际正例数据中的百分比

    TP /(TP+FN)

    特效性(Specificity),也称为真负例率:正确识别的负例数据在实际负例数据中的百分比

    print TN / float(TN+FP)

    假阳率(False Positive Rate):实际值是负例数据,预测错误的百分比

    FP /(TN+FP)

    specificity = TN / float(TN+FP)

    print 1 - specificity

    F1值/F度量

    (又称为F1分数或F分数)是使用精度和召回率的方法组合到一个度量上。

    F=2∗precision∗recall/(precision+recall)


    F1的一般形式:Fβ=(1+β^2)∗precision∗recall/(β^2∗precision+recall)

    F度量是精度和召回率的调和均值,它赋予精度和召回率相等的权重。

    Fβ度量是精度和召回率的加权度量,它赋予召回率权重是赋予精度的β倍。

    (2*precision*recall) / (precision+recall)

    G-Mean指标,也能评价不平衡数据的模型表现。

    示例

    pred label: 001001000001

    true  label: 101010010110

    计算的precision=1/3, recall=1/6

    如果将pred label和true label的0和1互换,得到的precision=4/9, recall=4/6,recall变大很多,原因是true  label是1:1的,而pred label是1:3的。

    [Scikit-learn:模型评估Model evaluation]

    [Machine Learning - XI. Machine Learning System Design机器学习系统设计(Week 6)系统评估标准]

     

    ROC-AUC曲线和PRC曲线

    [分类模型评估之ROC-AUC曲线和PRC曲线]

     

    KS曲线

        柯尔莫哥洛夫-斯米尔诺夫检验(Колмогоров-Смирнов检验)基于累计分布函数,用以检验两个经验分布是否不同或一个经验分布与另一个理想分布是否不同。ROC曲线是评判一个模型好坏的标准,但是最好的阈值是不能通过这个图知道的,要通过KS曲线得出。

        KS值越大,表示模型能够将正、负客户区分开的程度越大。 通常来讲,KS>0.2即表示模型有较好的预测准确性。

      绘制方式与ROC曲线略有相同,都要计算TPR和FPR。但是TPR和FPR都要做纵轴,横轴为把样本分成多少份。 KS曲线的纵轴是表示TPR和FPR的值,就是这两个值可以同时在一个纵轴上体现,横轴就是阈值,然后在两条曲线分隔最开的地方,对应的就是最好的阈值。

    下图中,一条曲线是FPR,一条是TPR

     

    吉尼系数Gini coefficient

    在用SAS或者其他一些统计分析软件,用来评测分类器分类效果时,常常会看到gini coefficient,gini系数通常被用来判断收入分配公平程度,具体请参阅wikipedia-基尼系数

    在ID3算法中我们常使用信息增益来选择特征,信息增益大的优先选择。在C4.5算法中,采用了信息增益比来选择特征,以减少信息增益容易选择特征值多的特征的问题。但是无论是ID3还是C4.5,都是基于信息论的熵模型的,这里面会涉及大量的对数运算。能不能简化模型同时也不至于完全丢失熵模型的优点呢?CART分类树算法使用基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(比)是相反的。


      图6.洛伦茨曲线与基尼系数

    Gini coefficient 是指绝对公平线(line of equality)和洛伦茨曲线(Lorenz Curve)围成的面积与绝对公平线以下面积的比例,即gini coefficient = A面积 / (A面积+B面积) 。

    用在评判分类模型的预测效力时,是指ROC曲线曲线和中线围成的面积与中线之上面积的比例。


      图7.Gini coefficient与AUC

    因此Gini coefficient与AUC可以互相转换:

    gini = A / (A + B) = (AUC - C) / (A + B) = (AUC -0.5) / 0.5 = 2*AUC - 1

    Note: 特别值得注意的一点是,这里的AUC并不是roc_auc(y是二值的)计算里面的那个roc曲线面积,而是指x,y横纵坐标计算出来的面积(y不是二值而是连续值)。

    Gini系数的计算

    def giniCoefficient(x, y):
        '''
        gini系数计算
          :param x: 推测值(人口)
          :param y: 实际值(财富)
        '''
        x = np.asarray(x)
        y = np.asarray(y)
        x.__add__(0)
        y.__add__(0)
    
        x = np.cumsum(x)
        if x[-1] != 0:
            x = x / x[-1]
    
        y = np.cumsum(y)
        if y[-1] != 0:
            y = y / y[-1]
    
        area = metrics.auc(x, y, reorder=True)
        gini_cof = 1 - 2 * area
    
        return gini_cof if math.fabs(gini_cof) > pow(math.e, -6) else 0

    皮皮blog

     

     

    多分类模型的评估

    accuracy

             在多类分类的背景下,accuracy = (分类正确的样本个数) / (分类的所有样本个数)。

             这样做其实看上去也挺不错的,不过可能会出现一个很严重的问题:例如某一个不透明的袋子里面装了1000台手机,其中有600台iphone6, 300台galaxy s6, 50台华为mate7,50台mx4(当然,这些信息分类器是不知道的。。。)。如果分类器只是简单的把所有的手机都预测为iphone6, 那么通过上面的公式计算的准确率accuracy为0.6,看起来还不错;可是三星,华为和小米的全部预测错了。如果再给一个袋子,里面装着600台galaxy s6, 300台mx4, 50台华为mate7,50台iphone,那这个分类器立马就爆炸了

    宏平均(macro-average)和微平均(micro-average)

             如果只有一个二分类混淆矩阵,那么用以上的指标就可以进行评价,没有什么争议,但是当我们在n个二分类混淆矩阵上要综合考察评价指标的时候就会用到宏平均和微平均。宏平均(macro-average)和微平均(micro-average)是衡量文本分类器的指标。根据Coping with the News: the machine learning way: When dealing with multiple classes there are two possible ways of averaging these measures(i.e. recall, precision, F1-measure) , namely, macro-average and micro-average. The macro-average weights equally all the classes, regardless of how many documents belong to it. The micro-average weights equally all the documents, thus favouring the performance on common classes. Different classifiers will perform different in common and rare categories. Learning algorithms are trained more often on more populated classes thus risking local over-fitting.

             宏平均(Macro-averaging),是先对每一个类统计指标值,然后在对所有类求算术平均值。宏平均指标相对微平均指标而言受小类别的影响更大。即将n分类的评价拆成n个二分类的评价,计算每个二分类的score,n个 score的平均值即为Macro score。

                 (5)

               (6)

               (7)

            (8)     

             微平均(Micro-averaging),是对数据集中的每一个实例不分类别进行统计建立全局混淆矩阵,然后计算相应指标。将n分类的评价拆成n个二分类的评价,将n个二分类评价的TP、FP、RN对应相加,计算评价准确率和召回率,由这2个准确率和召回率计算的F1 score即为Micro F1。

    [多类分类性能评价之宏平均(macro-average)与微平均(micro-average)]

    微平均(包括p\r\f)实际上就是前面说的accuracy,除非pred出了true没有的标签,如[微平均(Micro-averaging)]。

              (9)

              (10)         

           (11)  

    从上面的公式我们可以看到微平均并没有什么疑问,但是在计算宏平均F值时我给出了两个公式分别为公式(7)和(8)。都可以用。

    [谈谈评价指标中的宏平均和微平均]

             在测试数据集上,度量分类器对大类判别的有效性应该选择微平均,而度量分类器对小类判别的有效性则应该选择宏平均。

    一般来讲,Macro F1、Micro F1高的分类效果好。Macro F1受样本数量少的类别影响大。

             "macro" simply calculates the mean of the binary metrics,giving equal weight to each class. In problems where infrequent classesare nonetheless important, macro-averaging may be a means of highlightingtheir performance. On the other hand, the assumption that all classes areequally important is often untrue, such that macro-averaging willover-emphasize the typically low performance on an infrequent class.
             "weighted" accounts for class imbalance by computing the average ofbinary metrics in which each class’s score is weighted by its presence in thetrue data sample.
             "micro" gives each sample-class pair an equal contribution to the overallmetric (except as a result of sample-weight). Rather than summing themetric per class, this sums the dividends and divisors that make up theper-class metrics to calculate an overall quotient. Micro-averaging may be preferred in multilabel settings, includingmulticlass classification where a majority class is to be ignored.
    "samples" applies only to multilabel problems. It does not calculate aper-class measure, instead calculating the metric over the true and predictedclasses for each sample in the evaluation data, and returning their(sample_weight-weighted) average.

    [Scikit-learn:模型评估Model evaluation]

    示例

    假设有10个样本,它们属于A、B、C三个类别。假设这10个样本的真实类别和预测的类别分别是:

    > 真实:A A A C B C A B B C
    > 预测:A A C B A C A C B C

    Kappa一致性系数

            交叉表(混淆矩阵)虽然比较粗糙,却是描述栅格数据随时间的变化以及变化方向的很好的方法。但是交叉表却不能从统计意义上描述变化的程度,需要一种能够测度名义变量变化的统计方法即KAPPA指数——KIA。 kappa系数是一种衡量分类精度的指标。KIA主要应用于比较分析两幅地图或图像的差异性是“偶然”因素还是“必然”因素所引起的,还经常用于检查卫星影像分类对于真实地物判断的正确性程度。KIA是能够计算整体一致性和分类一致性的指数。

    KIA的计算式的一般性表示为: 
      这里写图片描述 
    总体KAPPA指数的计算式为:
    这里写图片描述

      式中, 
    这里写图片描述 
      式中的p0和pc都有着明确的含义:p0被称为观测精确性或一致性单元的比例;pc被称为偶然性一致或期望的偶然一致的单元的比例。kappa计算结果为-1~1,但通常kappa是落在 0~1 间,可分为五组来表示不同级别的一致性:0.0~0.20极低的一致性(slight)、0.21~0.40一般的一致性(fair)、0.41~0.60 中等的一致性(moderate)、0.61~0.80 高度的一致性(substantial)和0.81~1几乎完全一致(almost perfect)。 

    kappa指数计算的一个示例:

    混淆矩阵

    kappa在sklearn上的实现[sklearn.metrics.cohen_kappa_score]

    多分类roc曲线

    [多分类的ROC曲线]

    皮皮blog

     

     

    回归模型的评估

    平均均方误差mse

    R^2 (coefficient of determination)(推荐)

    regression score function.评估模型拟合的好坏。训练集估计和学到的模型产生的新数据集评估的偏离度。sklearn中Regressor默认的score方法。

    拟合优度(Goodness of Fit)是指回归直线对观测值的拟合程度。度量拟合优度的统计量是可决系数(亦称确定系数)R^2。R^2最大值为1。R^2的值越接近1,说明回归直线对观测值的拟合程度越好;反之,R^2的值越小,说明回归直线对观测值的拟合程度越差。

    在用线性模型拟合完数据之后,我们需要评估模型拟合的好坏情况。当然,这种评估取决于我们想要用这个模型来做什么。一种评估模型的办法是计算模型的预测能力。

    在一个预测模型中,我们要预测的值称为因变量(dependent variable),而用于预测的值称为解释变量或自变量(explanatory variable或independent variable)。

    通过计算模型的确定系数(coefficient of determination),也即通常所说的R^2,来评价模型的预测能力:

     

    即1 - 预测模型的mse/数据本身的mse (数据本身的mse就是直接将数据label均值作为预测的mse)

    ​​解释R2意义例子

    假设你试图去猜测一群人的体重是多少,你知道这群人的平均体重是\bar{y}​。如果除此之外你对这些人一点儿都不了解,那么你最佳的策略是选择猜测他们所有人的体重都是\bar{y}​。这时,估计的均方误差就是这个群体的方差var(Y):

    接下来,假如我告诉你这群人的身高信息,那么你就可以猜测体重大约为​,在这种情况下,估计的均方误差就为Var(ε):

    所以,Var(ε)/Var(Y)表示的是有解释变量情况下的均方误差与没有解释变量情况下的均方误差的比值,也即不能被模型解释的均方误差占总的均方误差的比例。这样R2表示的就是能被模型解释的变异性的比例。

    假如一个模型的R^2=0.64,那么我们就可以说这个模型解释了64%的变异性,或者可以更精确地说,这个模型使你预测的均方误差降低了64%。

    在线性最小二乘模型中,我们可以证明确定系数和两个变量的皮尔逊相关系数存在一个非常简单的关系,即:R2=ρ2。

    [拟合优度 ]

    拟合优度Goodness of fit

    皮皮blog

     

     

    其它

    学习目标

    {评价学习模型的不同方法}

    不同的模型通过表达了不同的折中方案。近似模型根据一种性能度量可能表现很好,但根据其它度量又可能很差。为了引导学习算法的发展,必须定义学习任务的目标,并且定义能够评价不同结果 相应的度量方法。

    密度估计

    评价指标及方法

    期望的对数似然

    由于生成分布p*是固定的,评价指标——相对熵可以转换成最大期望的对数似然。直观上就是,M~对从真实分布中采样的点赋予的概率越大,越能反映它是该分布。

    数据的似然

    专栏:16.A 用于设计和评价机器学习过程的基本实验性条款

    评价泛化性能

    抵抗测试holdout-testing

    Dtrain: 目标函数;Dtest: 损失函数。

    k-折交叉验证

    讨论及及算法

    选择学习过程

    使用抵抗测试或交叉验证来选择学习过程。更好的是使用训练集,用来学习模型;验证集,用来评价学习过程的不同变体并从中做出选择;分离的测试集,用来在其上评价最终的性能(会使分割数据的问题更加恶化)。也可以发展一种嵌套的交叉验证方案。

    专栏:16.B 用来尝试并回答有关模型类合适复杂性问题的基本理论框架:PAC界

    [《Probabilistic Graphical Models:Principles and Techniques》(简称PGM)]

    from: http://blog.csdn.net/pipisorry/article/details/52574156

    ref: [Scikit-learn:模型评估Model evaluation ]

    [Scikit-learn:模型评估Model evaluation 之绘图 ]

     

    展开全文
  • 预测评价指标RMSE、MSE、MAE、MAPE、SMAPE

    万次阅读 多人点赞 2019-02-21 10:50:31
    RMSE 均方根误差(Root Mean Square Error) MSE 均方误差(Mean Square Error) MAE 平均绝对误差(Mean Absolute Error) MAPE ...平均绝对百分比误差(Mean Absolute Percentage Error) ......

    假设:
    预测值:y^={y1^,y2^,...,yn^}\mathbf{\hat{y}}=\{\hat{y_1}, \hat{y_2} , ... , \hat{y_n}\}
    真实值:y={y1,y2,...,yn}\mathbf{y}=\{y_1, y_2, ..., y_n\}

    MSE

    均方误差(Mean Square Error)
    MSE=1ni=1n(y^iyi)2 MSE=\frac{1}{n} \sum_{i=1}^{n} (\hat{y}_i - y_i)^2

    范围[0,+∞),当预测值与真实值完全吻合时等于0,即完美模型;误差越大,该值越大。

    RMSE

    均方根误差(Root Mean Square Error),其实就是MSE加了个根号,这样数量级上比较直观,比如RMSE=10,可以认为回归效果相比真实值平均相差10。
    RMSE=1ni=1n(y^iyi)2 RMSE=\sqrt{\frac{1}{n} \sum_{i=1}^{n} (\hat{y}_i - y_i)^2}
    范围[0,+∞),当预测值与真实值完全吻合时等于0,即完美模型;误差越大,该值越大。

    MAE

    平均绝对误差(Mean Absolute Error)
    MAE=1ni=1ny^iyi MAE=\frac{1}{n} \sum_{i=1}^{n} |\hat{y}_i - y_i|
    范围[0,+∞),当预测值与真实值完全吻合时等于0,即完美模型;误差越大,该值越大。

    MAPE

    平均绝对百分比误差(Mean Absolute Percentage Error)
    MAPE=100%ni=1ny^iyiyi MAPE=\frac{100\%}{n}\sum_{i=1}^n \left |\frac{ \hat{y}_i - y_i }{ y_i } \right |

    范围[0,+∞),MAPE 为0%表示完美模型,MAPE 大于 100 %则表示劣质模型。

    可以看到,MAPE跟MAE很像,就是多了个分母。

    注意点:当真实值有数据等于0时,存在分母0除问题,该公式不可用!

    SMAPE

    对称平均绝对百分比误差(Symmetric Mean Absolute Percentage Error)

    SMAPE=100%ni=1ny^iyi(y^i+yi)/2 SMAPE=\frac{100\%}{n}\sum_{i=1}^n \frac{ |\hat{y}_i - y_i| }{ (|\hat{y}_i| + |y_i|)/2 }

    注意点:当真实值有数据等于0,而预测值也等于0时,存在分母0除问题,该公式不可用!

    Python代码

    # coding=utf-8
    import numpy as np
    from sklearn import metrics
    
    # MAPE和SMAPE需要自己实现
    def mape(y_true, y_pred):
        return np.mean(np.abs((y_pred - y_true) / y_true)) * 100
    
    def smape(y_true, y_pred):
        return 2.0 * np.mean(np.abs(y_pred - y_true) / (np.abs(y_pred) + np.abs(y_true))) * 100
    
    y_true = np.array([1.0, 5.0, 4.0, 3.0, 2.0, 5.0, -3.0])
    y_pred = np.array([1.0, 4.5, 3.5, 5.0, 8.0, 4.5, 1.0])
    
    # MSE
    print(metrics.mean_squared_error(y_true, y_pred)) # 8.107142857142858
    # RMSE
    print(np.sqrt(metrics.mean_squared_error(y_true, y_pred))) # 2.847304489713536
    # MAE
    print(metrics.mean_absolute_error(y_true, y_pred)) # 1.9285714285714286
    # MAPE
    print(mape(y_true, y_pred)) # 76.07142857142858,即76%
    # SMAPE
    print(smape(y_true, y_pred)) # 57.76942355889724,即58%
    
    展开全文
  • 目录 目录 1、概念 1.1、前提 ...2、评价指标(性能度量) 2.1、分类评价指标 2.1.1 值指标-Accuracy、Precision、Recall、F值 2.1.2 相关曲线-P-R曲线、ROC曲线及AUC值 ...1)分类评价指标(classification...

    目录

    1、概念

    性能度量(评价)指标,主分为两大类:
     1)分类评价指标(classification),主要分析,离散的,整数的。其具体指标包括accuracy(准确率),precision(精确率),recall(召回率),F值,P-R曲线,ROC曲线和AUC。
     2)回归评价指标(regression),主要分析整数和实数之间的关系。其具体指标包括可释方差得分(explianed_variance_score),平均绝对误差MAE(mean_absolute_error),均方误差MSE(mean-squared_error),均方根差RMSE,交叉熵lloss(Log loss,cross-entropy loss),R方值(确定系数,r2_score)。

    1.1、前提

    假设只有两类-正类(positive)和负类(negative),通常以关注的类为正类,其他类为负类(故多类问题亦可归纳为两类)
    混淆矩阵(Confusion matrix)如下

    实际类别 预测类别
    总结
    TP FN P(实际为正)
    FP TN N(实际为负)

    表中AB模式:第一个表示预测结果的对错,第二个表示预测的类别。如TP表示,True Positive,即正确的预测为正类;FN表示,False Negative,即错误的预测为了负类。

    2、评价指标(性能度量)

    2.1、分类评价指标
    2.1.1 值指标-Accuracy、Precision、Recall、F值
    度量 Accuracy(准确率) Precision(精确率) Recall(召回率) F值
    定义 正确分类的样本数与总样本数之比(预测为垃圾短信中真正的垃圾短信的比例) 判定为正例中真正正例数与判定为正例数之比(所有真的垃圾短信被分类求正确找出来的比例) 被正确判定为正例数与总正例数之比 准确率与召回率的调和平均Fββ-score
    表示 accuracy=
    TP+TNP+NTP+TNP+N
    precision=
    TPTP+FPTPTP+FP
    recall=
    TPPTPP
    Fββ - score =
    (1+β2)precisionrecallβ2precision+recall(1+β2)∗precision∗recallβ2∗precision+recall

    1.precision也常称为查准率,recall称为查全率
    2.比较常用的是F1,

    1F1=12(1P+1R)1F1=12∗(1P+1R)

    python3.6代码实现:

    #调用sklearn库中的指标求解
    from sklearn import metrics
    from sklearn.metrics import precision_recall_curve
    from sklearn.metrics import average_precision_score
    from sklearn.metrics import accuracy_score
    #给出分类结果
    y_pred = [0, 1, 0, 0]
    y_true = [0, 1, 1, 1]
    print("accuracy_score:", accuracy_score(y_true, y_pred))
    print("precision_score:", metrics.precision_score(y_true, y_pred))
    print("recall_score:", metrics.recall_score(y_true, y_pred))
    print("f1_score:", metrics.f1_score(y_true, y_pred))
    print("f0.5_score:", metrics.fbeta_score(y_true, y_pred, beta=0.5))
    print("f2_score:", metrics.fbeta_score(y_true, y_pred, beta=2.0))
    2.1.2 相关曲线-P-R曲线、ROC曲线及AUC值

    1)P-R曲线
    步骤:
       1、从高到低将”score”值排序并依次作为阈值threshold;
       2、对于每个阈值,”score”值大于或等于这个threshold的测试样本被认为正例,其他为负例。从而形成一组预测数。
    eg.
    这里写图片描述
    将0.9作为阈值,则第1个测试样本为正例,2、3、4、5为负例
    得到

    预测为正例 预测为负例 总计
    正例(score大于阈值) 0.9 0.1 1
    负例(score小于阈值) 0.2+0.3+0.3+0.35 = 1.15 0.8+0.7+0.7+0.65 = 2.85 4
    precision=
    0.90.9+1.150.90.9+1.15
    recall=
    0.910.91

    在阈值以下的部分,当作负例,则预测为负例的取值情况是正确预测值,即如果本身是正例,则取TP;如果本身是负例,则取TN,其都为预测分值。
    python实现伪代码

    #precision和recall的求法如上
    #主要介绍一下python画图的库
    import matplotlib.pyplot ad plt
    #主要用于矩阵运算的库
    import numpy as np
    #导入iris数据及训练见前一博文
    ...
    #加入800个噪声特征,增加图像的复杂度
    #将150*800的噪声特征矩阵与150*4的鸢尾花数据集列合并
    X = np.c_[X, np.random.RandomState(0).randn(n_samples, 200*n_features)]
    #计算precision,recall得到数组
    for i in range(n_classes):
        #计算三类鸢尾花的评价指标, _作为临时的名称使用
        precision[i], recall[i], _ = precision_recall_curve(y_test[:, i], y_score[:,i])
    #plot作图
    plt.clf()
    for i in range(n_classes):
        plt.plot(recall[i], precision[i])
    plt.xlim([0.0, 1.0])
    plt.ylim([0.0, 1.05])
    plt.xlabel("Recall")
    plt.ylabel("Precision")
    plt.show()

    将上述代码补充完整后得到鸢尾花数据集的P-R曲线
    这里写图片描述
    2)ROC曲线
    横轴:假正例率 fp rate = FP / N
    纵轴:真正例率 tp rate = TP / N
    步骤:
       1、从高到低将”score”值排序并依次作为阈值threshold;
       2、对于每个阈值,”score”值大于或等于这个threshold的测试样本被认为正例,其他为负例。从而形成一组预测数。

    同P-R曲线计算类似,不再赘述
    鸢尾花数据集的ROC图像为
    这里写图片描述
    AUC(Area Under Curve)定义为ROC曲线下的面积
    AUC值提供了分类器的一个整体数值。通常AUC越大,分类器更好,取值为[0, 1]

    2.2、回归评价指标

    1)可释方差得分
    这里写图片描述
    2)平均绝对误差 MAE (Mean absolute error)
    这里写图片描述
    3)均方差 MSE (Mean squared error)
    这里写图片描述
    这里写图片描述
    4)logistics回归损失
    这里写图片描述
    5)一致性评价 - pearson相关系数法
    这里写图片描述
    python代码实现

    from sklearn.metrics import log_loss
    log_loss(y_true, y_pred)
    from scipy.stats import pearsonr
    pearsonr(rater1, rater2)
    from sklearn.metrics import cohen_kappa_score
    cohen_kappa_score(rater1, rater2)
    展开全文
  • 如何直观理解AUC评价指标

    万次阅读 多人点赞 2016-10-29 17:40:57
    下图展现了三种AUC的值: AUC对于每一个做机器学习的人来说一定不陌生,它是衡量二分类模型优劣的一种评价指标,表示正例排在负例前面的概率。其他评价指标有精确度、准确率、召回率,而AUC比这三者更为常用。因为...

    导语

    最近一直在思考如何直观理解AUC,查了维基百科的以及网上的讲解描述,感觉仍然很难把这个概念表述得通俗易懂,直到昨天周会后拿笔在纸上画了画,感觉似乎找到了一种比较有意思的理解方法,下面就请各位看官容我慢慢道来。首先简单介绍一下什么是AUC。

    根据维基百科的描述,AUC(Area under the Curve of ROC)是ROC曲线下方的面积,是判断二分类预测模型优劣的标准。ROC(receiver operating characteristic curve)接收者操作特征曲线,是由二战中的电子工程师和雷达工程师发明用来侦测战场上敌军载具(飞机、船舰)的指标,属于信号检测理论。ROC曲线的横坐标是伪阳性率(也叫假正类率,False Positive Rate),纵坐标是真阳性率(真正类率,True Positive Rate),相应的还有真阴性率(真负类率,True Negative Rate)和伪阴性率(假负类率,False Negative Rate)。这四类的计算方法如下:

    • 伪阳性率(FPR)
      在所有实际为阴性的样本中,被错误地判断为阳性的比率。
    • 真阳性率(TPR)
      在所有实际为阳性的样本中,被正确地判断为阳性的比率。
    • 伪阴性率(FNR)
      在所有实际为阳性的样本中,被错误的预测为阴性的比率。
    • 真阴性率(TNR)
      在所有实际为阴性的样本中,被正确的预测为阴性的比率。

    x轴与y轴的值域都是[0, 1],随着判定正例的阈值不断增加,我们可以得到一组(x, y)的点,相连便作出了ROC曲线,示例图如下:
    fig1

    图中的虚线相当于随机预测的结果。不难看出,随着FPR的上升,ROC曲线从原点(0, 0)出发,最终都会落到(1, 1)点。AUC便是其右下方的曲线面积。下图展现了三种AUC的值:
    fig2

    AUC对于每一个做机器学习的人来说一定不陌生,它是衡量二分类模型优劣的一种评价指标,表示正例排在负例前面的概率。其他评价指标有精确度、准确率、召回率,而AUC比这三者更为常用。因为一般在分类模型中,预测结果都是以概率的形式表现,如果要计算准确率,通常都会手动设置一个阈值来将对应的概率转化成类别,这个阈值也就很大程度上影响了模型准确率的计算。我们不妨举一个极端的例子:一个二类分类问题一共10个样本,其中9个样本为正例,1个样本为负例,在全部判正的情况下准确率将高达90%,而这并不是我们希望的结果,尤其是在这个负例样本得分还是最高的情况下,模型的性能本应极差,从准确率上看却适得其反。而AUC能很好描述模型整体性能的高低。这种情况下,模型的AUC值将等于0(当然,通过取反可以解决小于50%的情况,不过这是另一回事了)。

    那么,如何理解这个ROC的曲线面积AUC的数学意义呢?


    优雅理解法

    我想,既然是计算面积,能否像时间速度曲线一样,套用积分计算路程的思路去理解呢?这个问题思考了许久,始终没能把真阳性率与速度、伪阳性率与时间挂上钩。众所周知,时间速度曲线图如下:
    fig3

    图中阴影部分的面积便是路程,因为上图x轴上的任意两值相减得到的时间差是有直观意义的。相比之下,ROC中假阳性率相减则并没有如此直观的概念。ROC图从直观上看能得出两个结论:曲线点越接近右下角表示当前阈值预测正例出错的概率越高,准确性较低;曲线点越接近左上角则代表预测正例出错的概率越低,准确性较高。如下图:
    fig4

    对比之后发现,时间速度曲线是连续的,而ROC曲线是由一组离散的点组成,因为在一般情况下,分类的样本空间有限。其点总数其实就是样本总数,y轴最小步长为1/样本正例数,x轴的最小步长则是1/样本负例数。既然曲线点可枚举,那么我们就可以多举举栗子。

    现在假设有一个训练好的二分类器对10个正负样本(正例5个,负例5个)预测,得分按高到低排序得到的最好预测结果为[1, 1, 1, 1, 1, 0, 0, 0, 0, 0],即5个正例均排在5个负例前面,正例排在负例前面的概率为100%。然后绘制其ROC曲线,由于是10个样本,除开原点我们需要描10个点,如下:
    fig5

    描点方式按照样本预测结果的得分高低从左至右开始遍历。从原点开始,每遇到1便向y轴正方向移动y轴最小步长1个单位,这里是1/5=0.2;每遇到0则向x轴正方向移动x轴最小步长1个单位,这里也是0.2。不难看出,上图的AUC等于1,印证了正例排在负例前面的概率的确为100%。

    我们不妨再举个栗子,预测结果序列为[1, 1, 1, 1, 0, 1, 0, 0, 0, 0]。
    fig6

    计算上图的AUC为0.96与计算正例与排在负例前面的概率0.8 × 1 + 0.2 × 0.8 = 0.96相等,而左上角阴影部分的面积则是负例排在正例前面的概率0.2 × 0.2 = 0.04。

    再看个栗子,预测结果序列为[1, 1, 1, 0, 1, 0, 1, 0, 0, 0]。
    fig7

    计算上图的AUC为0.88与计算正例与排在负例前面的概率0.6 × 1 + 0.2 × 0.8 + 0.2 × 0.6 = 0.88相等,左上角阴影部分的面积是负例排在正例前面的概率0.2 × 0.2 × 3 = 0.12。


    结语

    至此,我们便可直观理解ROC曲线图上面积的含义了,这相当于给定最小时间单位下分段递增匀速运动时间速度曲线的路程积分问题。TPR相当于速度,每段“时间”的起始TPR越高,这段“时间”内正例排在负例前面的概率也就越大,而这个概率就是路程;FPR则相当于时间,这个可以这么理解:每次旅行总会结束,而FPR也总会到达100%(x值为1),FPR每向x轴正方向移动一步,相当于离“旅行结束”又近了一步。这样,一个积分概率,一个积分路程,大概就能近似理解了。

    在此感谢各位看官的耐心阅读。后续内容将会不定期奉上,欢迎大家关注小斗公众号 对半独白


    20181202143333354.jpg
    展开全文
  • 二分类问题评价指标

    千次阅读 2019-05-05 17:14:20
    二分类问题评价指标评价指标准确率精确率召回率F1值ROCAUC 评价指标 二分类问题评价指标的相关整理,持续更新。 评价指标是针对同样的数据,输入不同的算法,或者输入相同的算法但参数不同而给出这个算法或者参数...
  • 评价指标 balanced accuracy

    千次阅读 2019-08-18 17:20:03
    在开发和评价一个异常检测系统中提到了各种评价指标,比较了各种指标,感觉对于非平衡数据来说balanced accuracy1更合适一点。 搬运一下原文如下1: 不得不说wiki整理的还是很全面的,忍不住再贴两张1 ...
  • 模型评价指标

    千次阅读 2018-02-13 11:59:08
    机器学习模型中常见的是分类问题,分类模型的评价指标主要有: (1)精确率 (2)召回率 (3)F值 (4)AUC值(ROC曲线) 分类问题可划分成二分类和多分类问题,其中二分类最为常见,多分类问题大都也是转化成...
  • 机器翻译评价指标BLEU介绍

    万次阅读 多人点赞 2019-08-28 11:15:37
    最近需要设计一个机器翻译相关的试验, 其中好多东西都不同, 先从基础的评价指标来吧. 本文翻译自Jason Brownlee的博客[1]. 可能会简化一部分内容, 如有需要请读者直接读原文. 0. 前言 BLEU (其全称为Bilingual ...
  • 语义分割的评价指标——IoU

    万次阅读 多人点赞 2019-02-25 10:23:29
    文章目录语义分割的评价指标IoU or IU(intersection over union) 语义分割的评价指标 在整理评价指标之前,先补充一下预备知识。 我们在进行语义分割结果评价的时候,常常将预测出来的结果分为四个部分:true ...
  • 图像评价指标

    万次阅读 2017-06-25 17:24:30
    1.图像评价指标 图像评价指标用来客观评价图像处理中算法的优劣性,一般在对比实验中突出自己提出的算法的亮点。一般来说,每个细分的领域都有相应的指标,如边缘检测,有PFOM(Pratt’s Figure Of Merit)[1][2]...
  • 对话系统评价指标

    千次阅读 2018-08-08 23:30:35
    其中客观评价指标分为词重叠评价指标和词向量评价指标。 【词重叠评价指标】 根据生成语句与参考答案语句之间的词重叠率来进行评价 【词向量评价指标】 通过了解每一个词的意思来判断回复的相关性,词向量是实现...
  • VOT与OTB评价指标

    千次阅读 2019-08-19 22:09:50
    VOT与OTB评价指标OTBARE average pixel errorAOR average overlap rate时间鲁棒性空间鲁棒性VOTAccuracyRobustnessEFOEAO OTB Online Object Tracking Benckmark,其中主要使用两类评价指标,一类是平均像素误差...
  • 计算机性能评价指标

    千次阅读 2018-08-28 20:40:17
    但是,对于挑选计算机产品来说,性能是很重要的评价指标。精确得测量和比较不同计算机的性能不仅对于购买者很重要,对于计算机设计者也是如此。 性能的评价有多种方式,我们先谈下性能的定义,再从用户与设计者的...
  • 聚类的评价指标

    千次阅读 2019-01-12 17:16:14
      我们知道,监督学习的评价指标是准确率、召回率、F1、FβF_1、F_\betaF1​、Fβ​、ROC-AUC等等,但聚类方法在大多数情况下数据是没有标签的,这些情况下聚类就不能使用以上的评价指标了。   聚类有自己的...
  • 深度学习分类任务评价指标

    万次阅读 2018-06-25 10:30:11
    在做图像识别相关任务时,对于识别效果没有提出明确的评价指标或预期目标,调试时单纯依靠“感觉”调参,显然不是一种合理的方法,因此整理相关评价指标,作为参数调试的相关依据。 根据深度学习的任务不同,评价...
  • 图像融合评价指标

    万次阅读 2019-05-07 15:01:53
    图像融合评价指标 文章目录图像融合评价指标1. 人类视觉系统(HVS)2. 分类一般方法1. 信息熵(IE)2. 标准差(STD)3. 对比度(CON)4. 空间频率(SF)5. 平均梯度(AG)6. 交叉熵(cross entropy)7. 边缘强度...
  • 图像分割的评价指标

    千次阅读 2020-06-09 11:39:10
    在解释以上的评价指标之前, 我们需要先了解混淆矩阵, 因为以上的评价指标是跟混淆矩阵有关, 或者可以说是由混淆矩阵引出。 混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。具体...
  • 模型评价指标总结

    千次阅读 2019-04-25 15:44:11
    模型评价指标总结 对于一个模型来说,如何评价一个模型的好坏,如何衡量一个模型的泛化能力是机器学习中的一个关键性问题,对于二分类问题来说,单单只通过最后的预测准确率来说, 由于原始数据可能是分平衡的数据...
  • 混淆矩阵及分类评价指标概念辨析

    万次阅读 2020-03-02 09:34:08
    分类评价指标概念辨析   这些东西其实没什么难的,而且很多人肯定也是很早就接触过了,最大的问题在于时间长了记不住,所以就尽量解释的简单写,用于下次查阅使用。   主要需要理解的就是二分类的指标。   ...
  • 回归评价指标

    千次阅读 2017-02-24 09:57:59
    回归评价指标   与分类不同的是,回归是对连续的实数值进行预测,即输出值是连续的实数值,而分类中是离散值。例如,给你历史股票价格,公司与市场的一些信息,需要你去预测将来一段时间内股票的价格走势。那么...
  • 聚类评价指标

    千次阅读 2019-01-07 15:17:20
    内容参考于该博客,叙述得较为全面... 我在此基础上再稍微做点总结和补充: ****************************** 需要给定实际类别信息 labels_true ************************************** 1. 同分类的评价指标:混...
  • 算法常用评价指标

    2019-11-26 10:49:27
    评价指标是针对将相同的数据,输入不同的算法模型,或者输入不同参数的同一种算法模型,而给出这个算法或者参数好坏的定量指标。 在模型评估过程中,往往需要使用多种不同的指标进行评估,在诸多的评价指标中,大...
  • 评价指标:准确率

    千次阅读 2019-06-10 16:07:45
    已经提出了许多用于评估语义分割问题准确率的评价指标,这些指标通常是像素级准确率及IoU的变体。我们报告了语义分割方面最常用的评价指标,用来度量逐个像素标注类的方法的表现。为便于解释,我们给出下述标号的...
  • 目标检测的评价指标

    千次阅读 2018-05-30 22:56:28
    本篇博客主要整理基于深度学习的目标检测所用的数据集,以及一些评价指标。 先介绍评价指标,当然也适用于很多其他的任务; 然后再介绍数据集。 一、评价指标 参考链接: 1、参考1 2、参考2 3、参考3 4...
  • 图像相似度评价指标

    千次阅读 2019-10-08 14:41:06
    图像相似度评价指标 在图像处理中我们经常遇到需要评价两张图像是否相似,给出其相似度的指标,这里总结了三种评判指标均方误差MSE,结构相似性SSIM, 以及峰值信噪比PSNR, 分三个小结介绍其原理以及对应的matlab以及...
  • 二分类和多分类问题的评价指标总结

    万次阅读 多人点赞 2019-07-09 18:51:55
    二分类评价指标 准确率(Accuracy) 评价分类问题的性能指标一般是分类准确率,即对于给定的数据,分类正确的样本数占总样本数的比例。 注意:准确率这一指标在Unbalanced数据集上的表现很差,因为如果我们的正负...
  • 聚类结果的评价指标

    千次阅读 2021-01-10 11:29:52
    聚类评价指标外部指标Jaccard系数FM指数举例子MI 外部指标 Jaccard系数 FM指数 举例子 MI mutual info,互信息
  • 量化策略的评价指标

    千次阅读 2021-03-12 17:16:50
    量化策略的评价指标 收益曲线 年化收益 单利/复利 夏普比率 年化收益/最大回测 Alpha 主动投资能力 Beta 风险系数 风险 单只股票仓位

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 100,868
精华内容 40,347
关键字:

评价指标