怎样让机器学会检测人脸——5、强分类器

本文介绍了如何评价分类器的性能,包括准确率、召回率、虚警率和拒绝率,并详细讨论了阈值选择,特别是在人脸检测场景中,设定Recall为0.995和FalseAlarmRate为0.5,以构建强分类器H(x)。
摘要由CSDN通过智能技术生成

分类器性能评价

    上回说到为S(x)选取阈值ST,在此之前我们先引入评价一个分类器性能的指标。因为阈值的选取是与性能指标密切相关的。

    用C(x)表示一个分类器,对于一个样本Xi,它输出+1或者-1。输出+1表示判别为正样本,-1表示判别为负样本。

    测试数据有P个正样本,N个负样本,根据分类器C的输出统计出下表。其中TP表示正样本输出+1的个数,FP表示负样本输出为+1个数。

   

   

 

实际类别

分类器输出

+1

-1

+1

TP

FP

-1

FN

TN

通常我们可以定义指标包括:

    (1)准确率,表示C输出+1的样本中实际为正样本的比例,即

    Precision = TP/(TP+FP)

    (2)召回率,表示正样本被C输出+1的比例,即

    Recall = TP/(TP+FN)

    (3)虚警率,也叫错误接受率,表示负样本被C输出为+1的比例,英文可以用False alarm/acceptance/positive rate,计算如下

    FalseAlarmRate =FP/(FP+TN)

    (4)拒绝率,表示正样本被C输出为-1的比例,即

    RejectRate = FN/(TP+FN)

    (5)F1-score,用一个指标衡量分类器C的性能,由准确率和召回率计算得来,值越大说明性能越好,计算如下:

    F1 = 2*Precision*Recall /( Precison + Recall )

    一般而言,可以用准确率和召回率来反映分类器的性能,二者的值都是越高越好,也可以计算出F1-score来表示。召回率和拒绝率只需给出一个,二者的和为1。

    多数情况下一个分类器C的Precision和Recall是此起彼伏的关系,例如要求Precision高,也就是让分类器C对输出+1的门槛提高,虚警率低,则Recall就会低,因为门槛提高了会导致能通过C的正样本数目减少。

阈值的选取

    再回到前面的问题上来,如何为S(Xi)选取合适的ST值来形成分类器?

    我们的选择是让Recall为一个比较高的值例如Recall=0.995,也就是让0.995的正样本都要能够通过分类器,被判别为+1。

    此外我们还设置一个相对较高的FalseAlarmRate=0.5,也就是允许分类器把一半的负样本错判为正样本。

    有人肯定在想,为什么设置这么高的虚警率,设置低一些多好。前面我们说过这是一个两难的问题,选择了高的Recall,也就是相当于降低门槛,难免会有更多的负样本也通过门槛,也就是FalseAlarmRate变高。

    虽然我们集合了多个弱分类器的输出,仍然不能达到这样的性能。

    好了,既然已经设定了性能指标,继续看如何选取合适的阈值ST。

    把P个正样本的S(x)值计算出来,形成数组S[P],对数组S[P]进行从小到大排序。因为已经设置了Recall值,也就是要确保数组S[P]的值有Recall比例是大于ST的,显然阈值ST应该选取为ST=S[P*(1-Recall)],因为从P*(1-Recall)后面的值都比它大。

    得到ST后就可以构造分类器H(x)

    H(x) = S(x) > ST ? +1 :-1

    计算H(x)在负样本集上的虚警率值falsealarm,低于设置FalseAlarmRate则停止构造更多的弱分类器。

    我们把最后得到的H(x)叫做一个强分类器,Strong classifier。

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值