分类回归树

上传人:新** 文档编号:557944236 上传时间:2023-02-27 格式:DOCX 页数:6 大小:23.08KB
返回 下载 相关 举报
分类回归树_第1页
第1页 / 共6页
分类回归树_第2页
第2页 / 共6页
分类回归树_第3页
第3页 / 共6页
分类回归树_第4页
第4页 / 共6页
分类回归树_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《分类回归树》由会员分享,可在线阅读,更多相关《分类回归树(6页珍藏版)》请在金锄头文库上搜索。

1、1.1.1.分类回归树分类回归树(Classification and regression trees,CART是决策树的一种,它是基于吉尼(Gini) 指标(并且是最简化的吉尼指标)的方法。在OpenCV下函数icvCreateCARTStageClassifier实现层强分类器的构建,而它又调用了 icvCreateCARTHaarClassifier、icvInitCARTHaarClassifier、icvEvalCARTHaarClassifier 实现了弱检 测器的分类回归树的初始化、构建、赋值。以下是简化了的算法描述:其中C代表当前样本集,当前候选属性集用T表示。(1 )新建一

2、个根节点root为root分配类别(有人脸还是没有)(3) 如果T都属于同一类别(都是正样本或者反样本)或者C中只剩下一个样本则返回root 为叶节点,为其分配属性。(4) 对任何一个T中属性执行该属性上的划分,计算此划分的分类不纯度(吉尼不纯度)(5) root的测试属性是T中最小GINI系数的属性划分C得到C1 C2子集对于节点C1重复(1)-(6)对于节点C2重复(1)-(6)至于CART的修剪、评估等算法就不给出了。CART的修剪的算法是分类错误算法。如 果想深入了解CART树,则阅读上节给出的参考书目。1.1.2.弱分类器方法弱分类器的种类很多,但OpenCV使用的是效果最好的决策树

3、分类器。关于分类器的 介绍在第一章已经讨论过了,如果要有更深入理解可以看一些数据挖掘的图书后,再看看 OpenCV下的cvhaartraining.cpp文件。这里特别提下弱分类器的阈值的寻找方法。阈值寻找算法定义在icvFindStumpThreshold_#suffix函数里面,它是通过一个宏被定义 的。至于为什么通过这种方式定义,可以参考文献。i函数 icvFindStumpThreshold_#suffix输入参数介绍:wk是第k个样本的权重,yk是第k个样本是正样本还是反样本,如果 是正样本则为+1,反样本则为-1, lerror、rerror是要求的最低误差, lerror=rer

4、ror=3.402823466e+38F(超大的数值),left、right 是输出的误差。threshold 是阈值, found为是否找到阈值,初始是0。For i=1:num(对每个排序后的样本)nUmwr = Jkk=i+1(1) wl =工 wkk=1nUmwyr =厶 wkk=i+1(2) wyl =工 w * yk kk =1(3) curleft=wyl/wl , curright=wyr/wr(4) 如果 curlerror+currerrorlerror+rerror 则lerror=curlerror rerror=curerrorthreshold等于当前样本和前一个样

5、本权重的均值Ieft=curleftright=currightfound=1End返回found的值虽然lerror、rerror初始都是很大的值,但保证了程序一开始就可以进入(4),使它们改 为当前的误差值(默认一定会找到阈值),不断循环下,它们就可以取得最小的误差值。1.1.3. DAB的权重调整算法在OpenCV下函数icvBoostNextWeakClassifierDAB用于DAB的样本权重调整。它实现了 以最佳弱分类器进行一次样本权重的调整,并返回这次调整后的错误分类百分比。流程如下:(1)初始化err=sumw=0;y向量是实际正反样本,f向量是样本在弱分类器下结果,都是1为真

6、,-1为假。w向量 是样本的权重。调整部分(a) 计算误检率。对应了图中errm=Ew1(y!=fm(x)for i=0 to N-1如果y(i)不等于f(i)(表示未被正确分类),则err=err+w(i);如果相等,err不变;累加样本权重放到sumw中end;err=err/sumw;计算了错误的比例,0errvalcache 下(i) icvCreateTreeCascadeNode/初始化,分配空间(j) icvCreateCARTStageClassifier/建立一层强分类器(k) icvNumSplits/返回这次强分类器一共使用的特征数量(l) 开始聚类(clustering

7、臊作,调用cvKMeans2函数等,这里最大不超过3类。从2个类 别开始进行聚类,每次聚类重新读入数据构造层CART树,找到最佳的类别数。(B)次循环结束(6)开始寻找哪些节点应该被分裂,找到后添加新的节点。并依次保存已经建好的节点, 直到这棵树完全被存储。满足误差率或者层数则结束总循环,否则跳到(5)。对照上面的步骤就可以很好的解释刚才训练过程。需要注意的是,每一层训练时,正 反样本数据都要重新载入,这个原因谈到过,是因为内存不够。所以它每次处理后失去了原 始的样本数据。至于为什么最后程序无法停止,目前没有人给出解释。1.3.对xml文件的解读在OpenCV进行长时间的训练后,我们能够得到一

8、个.xml文件,这种文件是专门用于 存储数据的,并且是跨平台的。我们只是研究物体检测产生的.xml文件,只对它的结果进行 解读,如果想深入了解.xml的编程可以参考相关书籍。下面列出haarcascade_frontalface_alt2.xml文件中的一些内容:(/*/中文字是注释) 20 20/*这行告诉我们这个分类器是使用20*20的图像训练出来的,因此他可以检测任何大 于20*20的人脸图像。*/*代表第0层强分类器*/-/*代表此层分类器下第0棵二叉树*/!- root node-/* 根节点 */-/* 矩形 */2 7 16 4 -1./*前面四个数据表示矩形左上角坐标和矩形的长、宽,最后一个表示比重72 9 16 2 2./*这个矩形比重是正的,可以画图发现是Haar_y2特征*/O/*这个标志是不是旋转的特征,0表示不是*/4.3272329494357109e-003/*表示这棵树的阈值*/left_va卜0.0383819006383419/left_va卜/* 小、于阈值去左树枝 */ 1/*大于等于阈值取右

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号