标签:
起源:决策树切分数据集
决策树每次决策时,按照一定规则切分数据集,并将切分后的小数据集递归处理。这样的处理方式给了线性回归处理非线性数据一个启发。
能不能先将类似特征的数据切成一小部分,再将这一小部分放大处理,使用线性的方法增加准确率呢?
Part I: 树的枝与叶
枝:二叉 or 多叉?
在AdaBoost的单决策树中,对于连续型数据构建决策树,我们采取步进阈值切分2段的方法。还有一种简化处理,即选择子数据集中的当前维度所有不同的值作为阈值切分。
而在CART里,大于阈值归为左孩子,小于阈值的归为右孩子。若是离散型数据,则根据离散数据种类建立对应的多叉树即可。
叶:何时不再切分?
ID3决策树中,停止切分的条件有两个:
①DFS链路中全部特征维度被扫过一次,很明显,对于离散型特征,重复选取某一维度,很容易导致重复切分而死循环爆栈。
②当前子数据集分类全部一致,已经是很完美的切分了,再切也没意思。
CART中,大多处理的是连续型特征,所以可以且最好重复选取某一维度。同样遵循②。
追加③条件:手动限制切分子集数量下限tolN,误差变化下限tolS。一旦达到这两个下限,就立刻停止。
枝:一个好枝?
ID3算法给出了一个评价离散Label的好枝的标准:分类的混乱度(香农熵)降低。
对于连续数据,好枝的参考标准则是类似最小二乘法的目标函数,即误差越小越好。
由于计算误差需要先进行线性回归,相当于树套回归,虽然效果很好,但是无疑带来计算压力。
在这点上, CART利用均值和方差的性质给出了一个简化的误差计算:即假设一团数据的回归结果是这团数据的均值,那么目标函数即可当成总方差。
使用均值替代回归结果的树称为回归树,使用实际回归结果的树成为模型树。
标签:
原文地址:http://www.cnblogs.com/neopenx/p/4307837.html