1、分类模型混淆矩阵
混淆矩阵评估分类模型的性能:
根据模型正确和错误预测的检验记录计数进行评估,这些计数存放在混淆矩阵表格中
f
01
f_{01}
f01:代表原本属于类0但被误分为类1的记录数
根据混淆矩阵,被模型正确预测的样本总数是
(
f
11
+
f
00
)
(f_{11}+f_{00})
(f11+f00),被错误预测的样本总数是
(
f
10
+
f
01
)
(f_{10}+f_{01})
(f10+f01)
准确率:
准确率 = 正确预测数 预测总数 = f 11 + f 00 f 11 + f 10 + f 00 + f 01 \mathrm{准确率}=\frac{\mathrm{正确预测数}}{\mathrm{预测总数}}=\frac{f_{11}+f_{00}}{f_{11}+f_{10}+f_{00}+f_{01}} 准确率=预测总数正确预测数=f11+f10+f00+f01f11+f00
错误率:
错误率
=
错误预测数
预测总数
=
f
10
+
f
01
f
11
+
f
10
+
f
00
+
f
01
\mathrm{错误率}=\frac{\mathrm{错误预测数}}{\mathrm{预测总数}}=\frac{f_{10}+f_{01}}{f_{11}+f_{10}+f_{00}+f_{01}}
错误率=预测总数错误预测数=f11+f10+f00+f01f10+f01
与上图表示的混淆矩阵含义一致,下图使用符号来表达混淆矩阵:
在谈到混淆矩阵列出的计数时,常用到下面的术语:
- 真正(True Positive, TP),对应于被分类模型正确预测的正样本数。
- 假负(False Negative, FN),对应于被分类模型错误预测为负类的正样本数。
- 假正(False Positive, FP),对应于被分类模型错误预测为正类的负样本数。
- 真负(True Negative, TN),对应于被分类模型正确预测的负样本数。
精确率 P:
(Precision,又叫查准率、精度) 考察预测的结果中正例预测准不准确,看预测结果为正例中预测正确的有多少。
P
=
T
P
T
P
+
F
P
P =\frac{ TP }{TP+FP}
P=TP+FPTP
召回率 R:
(Recall,又叫查准率) 可以理解称原始样本中那么多的正例,预测的时候猜对了多少。
R
=
T
P
T
P
+
F
N
R =\frac{ TP }{TP+FN}
R=TP+FNTP
F-score:
精确率和召回率是一对矛盾的度量,一般来说,精确率高时,召回率往往偏低;而召回率高时,精确率往往偏低。因而人们设计了一些综合考虑精确率和召回率的性能度量,其中常用的度量指标有F1-score.
F
1
=
2
×
R
×
P
R
+
P
=
2
×
T
P
2
×
T
P
+
F
P
+
F
N
F_{1} = \frac{2 \times R \times P}{R+P} = \frac{2\times TP}{2\times TP+FP+FN}
F1=R+P2×R×P=2×TP+FP+FN2×TP
F
1
F_{1}
F1 表示精确率和召回率的调和均值,即
F
1
=
2
1
R
+
1
P
F_{1} = \frac{2}{\frac{1}{R}+\frac{1}{P}}
F1=R1+P12
因此,一个高的
F
1
F_{1}
F1度量值确保精确率和召回率都比较高。
F
β
F_{\beta}
Fβ ,更一般地讲,F-score有一个参数
β
\beta
β用来调节R和P两部分的比例;这样的F-score也被记作
F
β
F_{\beta}
Fβ,带有这个参数的计算公式为:
F
β
=
(
β
2
+
1
)
×
R
×
P
R
+
P
+
β
2
=
(
β
2
+
1
)
×
T
P
(
β
2
+
1
)
T
P
+
β
2
F
P
+
F
N
F_{\beta} = \frac{(\beta^{2}+1) \times R \times P}{R+P+\beta^{2}} = \frac{(\beta^{2}+1) \times TP}{(\beta^{2}+1)TP+\beta^{2}FP+FN}
Fβ=R+P+β2(β2+1)×R×P=(β2+1)TP+β2FP+FN(β2+1)×TP
其中
β
>
0
\beta>0
β>0度量了召回率对精确率的相对重要性,
β
=
1
\beta=1
β=1时退化为标准的
F
1
F_{1}
F1;
β
>
1
\beta>1
β>1时召回率有更大的影响;
β
<
1
\beta<1
β<1时精确率有更大的影响。
2、ROC与AUC
接受者操作特征(Receiver Operating Characteristic, ROC)曲线是显示分类器真正率和假正率之间折中的一种图形化方法。AUC(Area Under ROC Curve)是通过对ROC曲线下各部分的面积求和而得。
上一小节提到的混淆矩阵中的计数可以用百分比的形式表示,下面列出的几个用百分比形式表示的术语:
- 真正率:(True Positive Rate, TPR)或灵敏度(sensitivity)定义为被模型正确预测的正样本的比例,即: T P R = T P T P + F N TPR = \frac{TP}{TP+FN} TPR=TP+FNTP
- 真负率:(True Negative Rate, TNR)或特指度(specificity)定义为被模型正确预测的负样本的比例,即: T N R = T N T N + F P TNR = \frac{TN}{TN+FP} TNR=TN+FPTN
- 假正率:(False Positive Rate, FPR)定义为被预测为正类的负样本的比例,即 F P R = F P T N + F P FPR = \frac{FP}{TN+FP} FPR=TN+FPFP
- 假负率:(False Negative Rate, FNR)定义为被预测为负类的正样本的比例,即 F N R = F N T P + F N FNR = \frac{FN}{TP+FN} FNR=TP+FNFN
ROC曲线
在一个ROC曲线中,真正率(TPR)沿y轴绘制,假正率(FPR)绘制在x轴上。
ROC曲线上面有几个关键点,它们有公认的解释。
- (TPR=0, FPR=0):把每个实例都预测为负类的模型。
- (TPR=1, FPR=1):把每个实例都预测为正类的模型。
- (TPR=1, FPR=0):理想模型。
一个好的分类模型应该尽可能地靠近ROC曲线图的左上角,而一个随机猜测的模型应位于链接点(TPR=0, FPR=0)和(TPR=1, FPR=1)的主对角线上。
ROC曲线有助于比较不同分类器的相对性能,下图显示了一对分类器 M 1 M_{1} M1和 M 2 M_{2} M2的ROC曲线。在下图中当FPR小于0.36时, M 1 M_{1} M1要好于 M 2 M_{2} M2, 而FPR大于0.36时 M 2 M_{2} M2较好。很明显这两个分类器各有各的长处。
AUC
ROC曲线下方的面积(AUC)提供了评价模型的平均性能的另一种方法。如果模型时完美的,则在ROC曲线下面的面积等于1.如果模型仅仅是简单随机猜测,则ROC曲线下方的面积等于0.5。如果一个模型好于另一个,则它的ROC曲线下方面积较大。
绘制ROC曲线
为绘制ROC曲线,分类器应当输出连续值,即判为某一类的概率,而不是预测的类标号。具体过程如下:
① 对检验记录的正类的连续输出值(即分类器连续输出某一类的可能概率值)递增排序。
② 选择一个小于最小值的一个值为阈值,把高于阈值的记录指派为正类。这种方法等价于把所有的检验实例都分为正类。此时,所有的正样本都被正确分类,同时所有的负样本都被错误分类。所以 TPR=FPR =1。
③ 增大阈值,这时真正率会减小,假正率也会减小。
④ 重复步骤③,并相应地更新真正率和假正率,直到阈值大于检验记录的最大值。
⑤ 根据记录的真正率和假正率画出ROC曲线
3、不纯性度量
其中:t为样本总数,i为某类样本数
(1) 熵(Entropy)
E n t r o p y ( t ) = − ∑ i = 0 c − 1 p ( i t ) × ln ( p ( i t ) ) Entropy(t)\;=\;-\overset{c-1}{\underset{i=0}{\sum\;}}p(\frac it)\times\ln(p(\frac it)) Entropy(t)=−i=0∑c−1p(ti)×ln(p(ti))
(2) 基尼系数(Gini)
G i n i ( t ) = 1 − ∑ i = 0 c − 1 [ p ( i t ) ] 2 Gini(t)\;=\;1-\overset{c-1}{\underset{i=0}{\sum\;}}\lbrack{p(\frac it)\rbrack}^2 Gini(t)=1−i=0∑c−1[p(ti)]2
(3) 分类误差(Classification Error)
C E ( t ) = 1 − m a x i [ p ( i t ) ] CE(t)\;=\;1\;-\;\underset i{max}\lbrack p(\frac it)\rbrack CE(t)=1−imax[p(ti)]
(4) 增益 ( △ ) (\triangle) (△)
比较父结点(划分前)的不纯程度和子女结点(划分后)的不纯程度,他们的差越大,测试的条件越好。增益∆是一种可以用来确定划分效果的标准
△ = I ( p a r e n t ) − ∑ j = 1 k N ( v j ) N I ( v j ) \triangle\;=\;I(parent)\;-\;\sum_{j=1}^k\frac{N(v_j)}NI(v_j) △=I(parent)−j=1∑kNN(vj)I(vj)
注:
I(parent):父结点的不纯性度量,是一个不变的值
N:父结点上的记录总数
N
(
v
j
)
N(v_j)
N(vj):与子女结点
v
j
v_j
vj相关联的记录个数
k:属性值的个数
信息增益
(
△
i
n
f
o
)
(\triangle_{info})
(△info):当选择熵(Entropy)作为 I(.) 的不纯性度量时,熵的差就是信息增益
(
△
i
n
f
o
)
(\triangle_{info})
(△info)
持续整理中
参考
《数据挖掘导论》,人民邮电出版社出版社
《机器学习》,周志华著
《分类模型的性能比较:如何绘制ROC曲线?》,统计学之家