偏斜类的误差度量
以预测肿瘤是否为恶性为例,我们使用逻辑回归模型,其假设函数hθ(x),当y = 1时,我们可以预测肿瘤为恶性肿瘤;当y = 0时,我们可以预测肿瘤为良性肿瘤。
现假设逻辑回归模型在测试集上的误差为1%,这看似该模型非常完美。但根据我们的资料发现在训练集中只有0.5%的患者确为恶性肿瘤,这时此前的1%的误差就不是那么完美了。(注:本人对此处有点不解,测试集上的误差为1%,而训练集上我们可以确定有0.5%的患者确为恶性肿瘤,这为什么可以做出判断在测试集上的1%的误差就不是那么完美?)
为了便于理解,我们先看如下代码:
function y = predictCancer(x)
y = 0; % ignore x!
return
该代码中,y始终为0,即始终对肿瘤的预测为良性,则在训练集上的误差为0.5%。逻辑回归模型与上述代码对比,其误差可能比上述代码要高,这就能说明逻辑回归模型比上述代码要差吗?
答案当然是不能的。对于正样本数量远大于负样本数量的情况,我们将其称为偏斜类。对于这种情况,分类误差或精度作为评估度量就不太适用了。因此,对于出现偏斜类这种情况,我们引入查准率(Precision)和召回率(Recall)。
我们仍以预测肿瘤是否为恶性肿瘤为例,y = 1表示肿瘤为恶性肿瘤:
对于查准率而言,其值越高越好,表示患者为恶性肿瘤的可能性就越大;对于召回率而言,其值也越高越好,其表示在所有实际患者为恶性肿瘤的中,模型成功预测的百分比。
这对于上述代码中y = 0的算法,其召回率为0,从而得知其算法是不好的。
查准率与召回率之间的权衡
在逻辑回归中,我们知道假设函数hθ(x)的取值范围为0~1,当hθ(x) ≥ 0.5时,我们可以预测y = 1;当hθ(x) < 0.5时,我们可以预测y = 0。
我们以预测肿瘤是否为恶性肿瘤为例,现假设我们只有在非常确定的情况下,我们才能将肿瘤预测为恶性肿瘤,即y = 1。
此时,我们将临界点(Threshold)修改为0.7,即当hθ(x) ≥ 0.7时,我们可以预测y = 1;当hθ(x) < 0.7时,我们可以预测y = 0。这对情况下,我们的查准率和召回率会发生相应变化,即此时表现为高查准率和低召回率。
又假设我们不想对已患有恶性肿瘤的患者错过治疗,因此我们将临界点修改为0.3,即当hθ(x) ≥ 0.3时,我们可以预测y = 1;当hθ(x) < 0.3时,我们可以预测y = 0。此时查准率和召回率表现为低查准率和高召回率。
在不同的临界点的情况下,查准率和召回率可有如下函数图:
其中,函数曲线取决于逻辑回归模型的具体算法。
那么在偏斜类的情况下,我们如何根据查准率和召回率判断模型的好坏?这里我们引入F1 值(F1 Score,也可称为F Score),其公式为:
其中,P表示查准率,R表示召回率。
对于上图,根据F1 值我们可知Algorithm 1为较好的算法。