机器学习-分类模型评估标准

          对模型的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量(performance measure),回归任务最常用的性能度量是"均方误差" (mean squared error)。下面主要介绍分类模型的评估以及在sklearn库中的实现方法。

 一、错误率与精度(accuracy)

         错误率和精度是分类任务中最常用的两种性能度量,既适用于二分类任务,也适用于多分类任务。错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例。

from sklearn import metrics 
print('模型精度:',metrics.accuracy_score(y_test,y_predict))

二、查准率(precision)、查全率(recall)与F1-score

       错误率和精度虽常用,但并不能满足所有任务需求。以西瓜问题为例,假定瓜农拉来一车西瓜,我们用训练好的模型对这些西瓜进行判别,显然,错误率衡量了有多少比例的瓜被判别错误。但是若我们关心的是“挑出的西瓜中有多少比例是好瓜”,或者“所有好瓜中有多少比列被挑了出来”,显然错误率就不能用了,需要使用其他的性能度量。查准率(precision)和查全率(recall)是更为适用于此类需求的性能度量。

       对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive) 、假正例(false positive) 、真反例(true negative) 、假反例(false negative) 四种情形,令TP 、FP 、TN 、FN 分别表示其对应的样例数,则显然有TP+FP+TN+FN=样例总数.

TP: 如果一个实例是正类并且也被预测成正类,即为真正类(True Positive)
FP: 如果一个实例是负类而被预测成正类,即为假正类(False Positive)
TN: 如果一个实例是负类并且也被预测成负类,即为真负类(True Negative)
 FN: 如果一个实例是正类而被预测成负类,即为假负类(False Negative)

分类结果的"混淆矩阵" (confusion matrix) 如下表所示:

                                                    

查准率 P与查全率 R 分别定义为

                                                                       

       查准率和查全率是一对矛盾的度量.一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。

       F1-score,是统计学中用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的准确率和召回率。F1分数可以看作是模型准确率和召回率的一种加权平均,它的最大值是1,最小值是0。 

       随着阈值的变化,就像假设检验的两类错误一样,如下图所示召回率和精确率不能同时提高,因此我们就需要一个指标来调和这两个指标,于是人们就常用F1-score来进行表示:

                                                                           

print('查准率:',metrics.precision(y_test,y_predict))
print('查全率:',metrics.recall_score(y_test,y_predict))
print('F1-score:',metrics.precision_score(y_test,y_predict))

三、ROC曲线、AUC

              ROC(Receiver Operating Characteristic) 受试者工作特征曲线的纵轴是"真正例率" (True Positive Rate,简称TPR) ,也称灵敏度,横轴是"假正例率" (False Positive Rate,简称FPR) ,也称1-特异度,两者分别定义为

                                                                                    

下面给出ROC曲线示意图:

                                                          

         现实任务中通常是利用有限个测试样例来绘制ROC 图,此时仅能获得有限个(真正例率,假正例率)坐标对,无法产生图 (a) 中的光滑ROC 曲线, 只能绘制出如图 (b) 所示的近似ROC 曲线。

         AUC的全称是(Area Under then Curve Of ROC), 十分直白就是ROC曲线下方的面积,AUC的值越大越好,其取值范围为(0.5,1)。

print('AUC:',metrics.roc_auc_score(y_test,y_pred))

四、log-loss

          很多机器学习的算法通常会用logloss作为模型评价的指标,对数损失(Log loss)亦被称为逻辑回归损失(Logistic regression loss)或交叉熵损失(Cross-entropy loss),简单来说就是逻辑回归的损失函数。Logloss的公式如下: 

                                                       

             其中y为预测值,N为样本数,p为预测概率。         

y_pred=LR.(predict_proba(X))[:,1]预测类别为1的概率
​print('log-loss:',metrics.log_loss(y_test,y_pred))

猜你喜欢

转载自blog.csdn.net/qq_21840201/article/details/81157145