1.剪枝:
- 预剪枝:对每个节点划分前先进行估计,若当前节点的划分不能带来决策树泛化能力的提升,则停止划分,并将当前节点标记为叶节点(当划分前的性能跟划分后的一样,则也不划分)
- 后剪枝:先从训练集生成一颗完整的决策树,然后自底向上的对非叶节点进行考察,若将该节点对应的子树替换为叶节点能带来性能上的提升,则将子树替换为叶节点(当替换前与替换后性能相同,则保留不进行替换)
预剪枝显著减少了决策树的训练时间,但另一方面,预剪枝本质上禁止这些分支展开,所以可能带来欠拟合的风险。通常采用留出法进行验证,将一部分训练集划分为验证集。
后剪枝决策树的欠拟合风险小,泛化能力往往优于预剪枝,但是后剪枝过程是在生成决策树之后进行的,所以训练时间肯定比预 剪枝高出很多。
2.CART树:
- 分类树的生成:
基尼值:
集合D的特征A的某一取值a(切分点)被分割成D_1 ,D_2 = D - D_1 两部分,则在条件A下a的基尼指数定义为:
基尼指数越小越好,越小表明纯度越高,计算出所有的切分点,选择最小的做为最优切分点,重复这样的操作,当样本个数小于预定阈值或者样本集的基尼指数小于预定阈值(样本基本属于同一类),或者没有更多特征,停止计算
- 回归树的生成:
同样的寻找最小切分点,不过回归树使用的是最小二乘法
首先有5个变量需要明确:s、R1、R2、c1、c2
其中:
s = 所有的间隙,比如 1与2的间隙为1.5,2与3的间隙是2.5
求得不同的s产生的m(s),得到最小的m(s)时:
然后计算残差:
得到的残差有两个用处:
第一计算平方损失误差,当损失误差小于某个数后就可以停止向下传递:
第二利用残差作为我们新的y,以便后续继续进行T2(x),T3(x).....