机器学习之模型评估的方法总结(待续)

一、分类模型评估

1、混淆矩阵(confusion matrix)

TP(True Positive) —- 将正类预测为正类数
FN(False Negative) —- 将正类预测为负类数
FP(False Positive) —- 将负类预测为正类数
TN(True Negative) —- 将负类预测为负类数
这里写图片描述
分类模型总体判断的准确率:反映分类器统对整个样本的判定能力,能将正的判定为正,负的判定为负

A c c u r a c y = T P + N P T P + T N + F P + F N

精确率(Precision):指的是所得数值与真实值之间的精确程度;预测正确的正例数占预测为正例总量的比率,一般情况下,精确率越高,说明模型的效果越好。
公式如下:
P = T P T P + F P

召回率(Recall ):预测对的正例数占真正的正例数的比率,一般情况下,Recall越高,说明有更多的正类样本被模型预测正确,模型的效果越好。
公式如下:

R = T P T P + F N

False discovery rate (FDR):错误发现率,表示在模型预测为正类的样本中,真正的负类的样本所占的比例。一般情况下,错误发现率越小,说明模型的效果越好。
公式如下:

F D R = F P T P + F P

False omission rate (FOR):错误遗漏率,表示在模型预测为负类的样本中,真正的正类所占的比例。即评价模型”遗漏”掉的正类的多少。一般情况下,错误遗漏率越小,模型的效果越好。
公式如下:

F O R = F N F N + T N

Negative predictive value (NPV):阴性预测值,在模型预测为负类的样本中,真正为负类的样本所占的比例。 一般情况下,NPV越高,说明的模型的效果越好。
公式如下:

N P V = T N F N + T N

False positive rate (FPR), Fall-out:假正率,表示的是,模型预测为正类的样本中,占模型负类样本数量的比值。一般情况下,假正类率越低,说明模型的效果越好。
公式如下:

F a l l o u t = F P F P + T N

False negative rate (FNR), Miss rate:假负类率,缺失率,模型预测为负类的样本中,是正类的数量,占真实正类样本的比值。缺失值越小,说明模型的效果越好。
公式如下:

F N R = F N F N + T N

True negative rate (TNR):一般情况下,真负类率越高,说明的模型的效果越好
公式如下:

T N R = T N F N + T N

F1是精确率和召回率的调和均值,即:

2 F 1 = 1 P + 1 R

F 1 = 2 T P 2 T P + F P + F N

举例:
如有150个样本数据,这些数据分成3类,每类50个。分类结束后得到的混淆矩阵为:
这里写图片描述

每一行之和为50,表示50个样本,第一行说明类1的50个样本有43个分类正确,5个错分为类2,2个错分为类3。

混淆矩阵的每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数目。每一列中的数值表示真实数据被预测为该类的数目:如下图,第一行第一列中的43表示有43个实际归属第一类的实例被预测为第一类,同理,第二行第一列的2表示有2个实际归属为第二类的实例被错误预测为第一类。

那么针对以上的混淆矩阵,我们怎样取计算召回率以及假正率值呢?
针对类1:共有150个测试样本,类1为50个,那类2和类3就属于其他样本共为100个,此时
R = T P T P + F N = 43 43 + 7 = 0.86 ; f p r = F P F P + T N = 2 2 + 98 = 0.02

混淆矩阵的缺点:
一些positive事件发生概率极小的不平衡数据集(imbalanced data),混淆矩阵可能效果不好。比如对信用卡交易是否异常做分类的情形,很可能1万笔交易中只有1笔交易是异常的。一个将所有交易都判定为正常的分类器,准确率是99.99%。这个数字虽然很高,但是没有任何现实意义。

2、ROC

ROC曲线指受试者工作特征曲线 / 接收器操作特性曲线(receiver operating characteristic curve),是反映敏感性和特异性连续变量的综合指标,是用构图法揭示敏感性和特异性的相互关系,它通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性,再以敏感性为纵坐标、(1-特异性)为横坐标绘制成曲线,曲线下面积越大,诊断准确性越高。

ROC曲线的纵轴是真正例率TPR,横轴是假正例率FPR。

T P R = T P T P + F N

F P R = F P F P + T N

这里写图片描述
给定m+个正例,m-个反例,根据学习器预测的概率将样本从大到小排列。先把阀值设到最大,使得所有的样本都被预测为负,此时TPR,FPR都为0,在坐标(0,0)处标记一个点。接着将阀值依次设置为每个样例的概率值,计算TPR,FPR两个值作为坐标点,将所有点连接起来即得到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的情况下,红色分类器得到更高的TPR。也就表明,ROC曲线越往上,分类器效果越好。
(2)根据ROC曲线评估模型
a.若一个学习器的ROC曲线被另一个学习器的曲线完全包住,则后者优于前者。
b.若两个学习器的ROC曲线发生交叉,则可根据曲线下方的面积大小来比较,ROC曲线下方的面积为AUC(Area Under ROC Curve).

3、AUC

曲线下面积(AUC,Area Under the Curve)

ROC曲线下面积经常用作衡量分类模型质量的指标。随机分类的AUC为0.5,而完美分类的AUC等于1。在实践中,大多数分类模型的AUC在0.5和1之间。
这里写图片描述

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

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

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

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

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

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

计算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)。最后我们得到正样本大于负样本的概率为
r a n k M ( M + 1 ) / 2 M N ,时间复杂度为O(N+M)。

总结:
AUC(Area Under Curve) 被定义为 ROC 曲线下的面积, 显然这个面积的数值不
会大于 1。 又由于 ROC 曲线一般都处于 y=x 这条直线的上方, 所以 AUC 的取值范
围在 0.5 和 1 之间。 使用 AUC 值作为评价标准是因为很多时候 ROC 曲线并不能清
晰的说明哪个分类器的效果更好, 而作为一个数值, 对应 AUC 更大的分类器效果更好。
首先 AUC 值是一个概率值, 当你随机挑选一个正样本以及一个负样本, 当前的分
类算法根据计算得到的 Score 值将这个正样本排在负样本前面的概率就是 AUC
值。 当然, AUC 值越大, 当前的分类算法越有可能将正样本排在负样本前面, 即
能够更好的分类。

二、回归模型评估

1、SSE(和方差)

SSE(和方差、误差平方和):The sum of squares due to error
该统计参数计算的是拟合数据和原始数据对应点的误差的平方和,计算公式如下

S S E = i = 1 n w i ( y i y ^ i ) 2

2、MSE(均方差)

MSE(均方差、方差):Mean squared error
该统计参数是预测数据和原始数据对应点误差的平方和的均值,也就是SSE/n,和SSE没有太大的区别,计算公式如下:

M S E = S S E n = 1 n i = 1 n w i ( y i y ^ i ) 2

3、RMSE(均方根、标准差)

RMSE(均方根、标准差):Root mean squared error,其又被称为RMSD(root mean square deviation),其定义如下:

R M S E = M S E = S S E n = i = 0 n w i ( y y ^ ) 2 n

其中,y是第个样本的真实值, y ^ 是第个样本的预测值, n 是样本的个数。该评价指标使用的便是欧式距离。
RMSE虽然广为使用,但是其存在一些缺点,因为它是使用平均误差,而平均值对异常点(outliers)较敏感,如果回归器对某个点的回归值很不理性,那么它的误差则较大,从而会对RMSE的值有较大影响,即平均值是非鲁棒的。

4、R-Squared(确定系数)

在讲确定系数之前,我们需要介绍另外两个参数SSR和SST,因为确定系数就是由它们两个决定的
(1)SSR:Sum of squares of the regression,即预测数据与原始数据均值之差的平方和,公式如下:

S S R = i = 1 n w i ( y ^ i y ¯ i ) 2

(2)SST:Total sum of squares,即原始数据和均值之差的平方和,公式如下:
S S T = i = 1 n w i ( y i y ¯ i ) 2

细心的网友会发现,SST=SSE+SSR,呵呵只是一个有趣的问题。而我们的“确定系数”是定义为SSR和SST的比值,故
R s q u a r e = S S R S S T = S S T S S E S S T = 1 S S E S S T

其实“确定系数”是通过数据的变化来表征一个拟合的好坏。由上面的表达式可以知道“确定系数”的正常取值范围为[0 1],越接近1,表明方程的变量对y的解释能力越强,这个模型对数据拟合的也较好

5、MAE(平均绝对误差)

平均绝对误差(MAE:Mean Absolute Error)就是指预测值与真实值之间平均相差多大,公式如下:

M A E = 1 n i = 1 n | y i y ^ i | = 1 n i = 1 n | e i |

其中, y i 是真实值, y ^ i 是预测值, e i = | y i y ^ i | 即是绝对误差。

6、交叉验证(Cross-Validation)

交叉验证,有的时候也称作循环估计(Rotation Estimation),是一种统计学上将数据样本切割成较小子集的实用方法,该理论是由Seymour Geisser提出的。在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和。这个过程一直进行,直到所有的样本都被预报了一次而且仅被预报一次。把每个样本的预报误差平方加和,称为PRESS(predicted Error Sum of Squares)。
  交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set)。首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。

猜你喜欢

转载自blog.csdn.net/sinat_30353259/article/details/81610154