CARTHaarClassifier:决策树分类模型。
相关概念:
1.弱分类器:对应弱学习,就是指一个学习算法对一组概念的识别率只比随即识别好一点儿
2.强分类器:对应强学习,指一个学习算法对一组概念的识别率很高。
3.弱分类器的孵化:就是训练弱分类器成为最优弱分类器,最优弱分类器不是强分类器,只是误差相对较低的分类器。训练分类器实际是对分类器进行设置的过程。
4.CART: 决策树,机器学习中,决策树是一个预测模型;代表的是对象属性与对象值之间的一种映射关系。树种每个结点代表一个对象,而每个分叉路径则代表对象的可能属性值,每个叶子结点则对应从根节点到该叶子节点所经历的路径所表示的对象的值。决策树仅有单一输出,若有复数输出,可以建立独立的决策树以处理不同输出。从数据产生决策树的机器学习叫决策树学习。决策树包括:分类树、回归树,分类和回归树;
5.分类和回归的区别是:分类是当预计结果可能为两种类型(例如:男女,输赢)使用的概念。回归:是当局域结果可能为实数(例如房价,患者住院时间等)使用概念。
6.决策树用途具体:假设使用3个haar-like特征f1,f2,f3代表输入是否为人脸。
一个弱分类器基本上是一个和上图类似的决策树,最基本的弱分类器只有一个haar-like特征,即决策树只有一层,被称为树桩。最重要的是如何判断每个结点的输出,要比较输入特征值和弱分类器中特征,一定要输入一个阈值,当输入图片的特征值大于该阈值的时候才判定为人脸。训练最优弱分类器的过程实际上就是在寻找合适的分类器阈值,使该分类器对所有样本的判断误差最低。
具体操作过程如下:
1)对于每个特征f, 计算所有训练样本的特征值,并将其排序
扫描一遍排好序的特征值,对排好序的表中的每个元素,计算下面四个值
全部人脸样本的权重的和t1;
全部非人脸样本的权重的和to;
在此元素之前的非人脸样本的权重的和so;
2)求出每个元素的分类误差r=min((s1+(t0-s0)),(s0+(t1-s1)))
在表中寻找r值最小的元素,则该元素作为最优阈值。有了该阈值,我们的第一个最优弱分类器就诞生了。
7.强分类器的代码结构:
/* internal stage classifier */
typedef struct CvStageHaarClassifier
{
CV_INT_HAAR_CLASSIFIER_FIELDS()
int count;
float threshold;
CvIntHaarClassifier** classifier;
}CvStageHaarClassifier;
{
CV_INT_HAAR_CLASSIFIER_FIELDS()
} CvIntHaarClassifier;
CvIntHaarClassifier相当于一个接口类,
强分类器的诞生
强分类器的诞生需要T轮迭代,具体操作如下:
1)给定训练样本集S, 共N个样本,其中X和Y分别对应于正样本和负样本; T为训练的最大循环次数;
2)初始化样本权重为1/N,即为训练样本的初始概率分布;
3)第一次迭代训练N个样本,得到第一个最优弱分类器,步骤见上;
4)提高第一轮中被误判的样本的权重
5)将新的样本和上次分错的样本放在一起进行新一轮的训练
6)循环执行4-5步,T轮后得到T个最优弱分类器
7)组合T个最优弱分类器得到强分类器,组合方式如下:
相当于让所有弱分类器投票,再对投票结果按照弱分类器的错误率加权求和。将投票加权求和的结果与平均投票结果比较得出最终的结果。