天天看点

数据挖掘——分类模型评估分类模型的评估

分类模型的评估

1)混淆矩阵(confusion matrix)

Buys_c = yes Buys_c = no 合计 识别率(%)

Buys_c = yes

Buys_c = no

6954

412

46

2588

7000

3000

99.34

86.27

合计 7366 2634 10 000 95.52

列表示真实分类,行表示分类模型的分类预测

从该混淆矩阵可以看到7000个真实的yes数据,6954个分类预测yes,46个分类预测no

                     3000个真实的no数据,412个分类预测yes ,2588个分类预测no

对角线是判断对的,非对角线是判断不对的。

正确率(accuracy)

对于平衡数据,可以由混淆矩阵计算分类模型正确预测的比例:

正确率 = 所有Cii/所有Cij

如果数据不平衡,那么可以再乘上权值

加权正确率 = 所有wiiCii/所有wijCij

2)二分类的四种情况

对于二分类,可以把所有元组分成两类,正元组和负元组,

正元组(positive):感兴趣的主类的元组,比如那些buys_computer=yes的元组

负元组(negative):不感兴趣的元组,比如那些buys_computer=no的元组

分类判断四种情况:

真正(true positives):正确标记的正元组;

真负(true negatives):正确标记的负元组;

假正(false positives):错误标记的正元组;

假负(false negatives):错误标记的负元组。

C1 C2

C1

C2

真正(t_pos)TP

假正(f_pos)FP

假负(f_neg)FN

真负(t_neg)TN

t_pos + f_neg = pos

f_pos + t_neg = neg

对于负元组远远多于正元组的数据,正确率无法真实反映评估情况

灵敏性(sensitivity) = t_pos / pos 正元组判对的

特效性(specificity)= t_neg / neg  负元组判对的

精度(precision)= t_pos / ( t_pos + f_pos )

那么,正确率 = 灵敏性 + 特效性

召回率(recall 查全率)= 灵敏性

ROC曲线(Receiver Operating Characteristic接收者运行特性)

ROC曲线是一种比较两个分类模型的有用的可视工具

曲线容易看到真正识别“正”的比例和错误识别“正”的比例情况。

ROC空间将伪阳性率(FPR)定义为 X 轴,真阳性率(TPR)定义为 Y 轴。这两个值由上面四个值计算得到,公式如下:

  TPR:在所有实际为阳性的样本中,被正确地判断为阳性之比率。TPR=TP/(TP+FN)

  FPR:在所有实际为阴性的样本中,被错误地判断为阳性之比率。FPR=FP/(FP+TN)

  放在具体领域来理解上述两个指标。如在医学诊断中,判断有病的样本。那么尽量把有病的揪出来是主要任务,也就是第一个指标TPR,要越高越好。而把没病的样本误诊为有病的,也就是第二个指标FPR,要越低越好。不难发现,这两个指标之间是相互制约的。如果某个医生对于有病的症状比较敏感,稍微的小症状都判断为有病,那么他的第一个指标应该会很高,但是第二个指标也就相应地变高。最极端的情况下,他把所有的样本都看做有病,那么第一个指标达到1,第二个指标也为1。

ROC曲线的绘制

1)筛选所有判断为正的元组,计算每个元组预测类的概率,按从大到小排列

2)从第一个(概率最高的)开始,如果判断对,也就是真正的正TP,则向上跳一步,并绘制一个点;

3)如果判断错,即是个假正,向右跳一步,并绘制一个点。

刚开始,可能会一直碰到真正的元组,则一直比较陡峭的上升,后面随着概率减小,不确定性增加,会比较平缓。

极端情况是,全对,即原本正的全判断为真,原本负的也全判断为假。

AUC值

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

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

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

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

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

AUC的计算(略)

继续阅读