特征的设计在此不做解释,随着研究的深入,很多学者丰富和改善了以前的那些特征,最原始的矩形特征为例:
所谓的弱分类器其实是由特征f、阈值theta和一个决定不等号方向的p所决定的在此先不考虑p,简单谈谈我理解中的选择最优弱分类器的过程。
在上述的特征中,第一中的特征值就是两个矩形的像素值之差,那么对于很多个训练样本,比如说现在有200幅正例图像,1000幅负例图像,那么在这些图像的相同的某个位置,计算得到每一幅图像上的特征值,并做好相应的标签,那么每一个特征都会对应一个弱分类器,那么这个弱分类器的阈值是怎么确定的呢?
将这个特征所计算出来的每一幅图像上的特征值进行排序,比如
1 2 3 4 5 6 7 8
正 负 正 正 正 负 正 负
现在需要学习一个阈值,那么这个特征值阈值theta,如果特征值大于theta,我假定为正例,小于的我就判断为负例。因为训练样本都是有标签的,就是我事先知道那个是正例,那个是负例。如上面标示的,特征值是2的是负例,但是如果我的theta取5.5,就会有一个负例(2)被当做了正例,也就是错分了,同时7被当做了负例。
那么这个theta怎么确定呢,就是根据上面排好序的特征值,通过遍历的方法,一遍遍的计算如果theta取某个值得情况下的错误率error rate,直到找到一个theta0,使得用theta0作为阈值的情况下,错分的样本最少,错误率最小。那么该特征所对应的阈值也就确定了,另外这个阈值所能实现的错误率error0也被记下来。
上面说了那么多,其实就是得到了第一个弱分类器,那么大家都知道adaboost是从大量弱分类器中选优组合的过程。在图像的不同位置,我们可以计算得到不同的特征,按照上面的过程也就得到了很多的弱分类器,那么这些弱分类器都有用吗,并不是的,adaboost索要做的就是在这些弱分类器中选择出一个最优的弱分类器用于后续的分类器的组合。
选择最优弱分类器:
上面我们得到了很多弱分类器
h1 h2 h3 h4 h5 h6 h7...........................
theta1 theta2 theta3 theta4 theta5 theta6 theta7 ........................ 阈值
e1 e2 e3 e4 e5 e6 e7..................................错误率
那么接下来就是比较那个错误率e最小,就把那个弱分类器留下来作为最优的弱分类器。
AdaBoost通过改变每一次训练样本的权重,将分类错误的样本权重增大,并用调整过的样本来学习得到下一个最优弱分类器,最后将所有的最优弱分类器按照一定的规则进行组合,得到最终的强分类器。在此就不在详述。