决策树简述-西瓜书笔记

泛化能力:机器学习对于没有见过的样本的识别能力

欠拟合:模型复杂度偏低,在训练和验证时的效果都不好

过拟合:模型复杂度偏高,模型在训练时效果很好,但是预测时效果很差,也就是对数据学习过度

数据集

决策树  是一种用于分类的机器学习算法,使得在划分过程中,决策树的分支节点多包含的样品尽可能属于一个类别,也就是结点的“纯度”变高。为了表示“纯度”,一般用“信息熵”,公式如下(样本集合D中k类样本所占的比例pk(k=1,2,3...,|y|),Ent(D)值越小则纯度越高,k指的就是数据集类别:如x西瓜的好/坏,而非颜色,饱满等属性),最后找出信息增益最大的那个特征,再依次往下划分。

第一步

计算了未按属性划分的原始样本集的“”后 R_Ent,再按照样本集的属性 a如色泽 划分出样本子集D^{v}(v:色泽青绿,乌黑,浅白),计算每个样本子集的“”, 将每个样本子集的熵*权重(样本子集数/样本总数)求和得到当前属性划分后的“” a_ENT,计算Gain(D,i) =  R_Ent - a_E nt,即为信息增益。

例:在决策树开始时的信息熵  Ent(D) = -(\frac{8}{17}log_{2}\frac{8}{17} + \frac{9}{17}log_{2}\frac{9}{17} )= 0.998

D1(色泽=青绿) = {1,4,6,10,13,17}  ,D2(色泽=乌黑) = {2,3,7,8,9,15},D3(色泽=浅白) = {5,11,12,14,16}。然后计算D1,D2,D3的信息熵

然后计算出属性“色泽”的信息增益为

同理,计算出其他属性的信息增益

最后找到信息增益最大的那个属性作为根节点,显然“纹理”的信息增益最大(若有多个信息增益值相等,则任意取一个),如下。

第二步

生成根节点有几个子集。以清晰为例,从{1,2,3,4,5,6,8,15}样本作为样本总集重复第一步,找出信息增益最大的那个属性,直至无法划分。

无法划分的情形有这3种:

× 当前结点包含的样本都属于同一类别 ,无需划分

× 当前属性集为空,或是所有样本在所有属性集上取值相同,无法划分

× 当前结点包含的样本集合为空,不能划分

但是,直接这样在决策树学习过程中,有时会造成决策树分支过多,使得训练结果过好,产生“过拟合”的现象,因此需要进行“预剪枝“或”后剪枝“去除一些分支来降低”过拟合“现象。

 

预剪枝

使用”留出法“将数据分为训练集和验证集,

首先,用训练集先根据信息增益准测找到”脐部“作为根节点,但是否能作为根节点进行划分呢?则要对每个结点在划分前先进性估计,若当前结点的划分不能带来泛化性能的提升(即划分前后的验证集精度有无提升),当前节点标记为叶结点,不进行划分。此时,将类别标记为好瓜(训练集好瓜和坏瓜:5/5,选其一),则验证集有{4,5,8}划分成功,验证精度为42.9%;若以“脐部”划分,则验证有{4,5,8,11,12}划分正确,精度为71.4%,所以可以将“脐部”划分。

其次,以“凹陷-好瓜”这个结点为例,根据“信息增益”准则,以色泽进行划分。凹陷的训练集有 1(好瓜)--2(好瓜)--3(好瓜)--14(坏瓜),分别表示的色泽:青绿-乌黑-乌黑-浅白。所以青绿为好瓜,乌黑为好瓜,浅白为坏瓜。在验证集中的4(青绿/好瓜)--5(浅白/好瓜)--13(青绿/坏瓜),不难看出5是浅白但是划分成好瓜,划分错误;13样本是青绿却被划分成坏瓜,划分错误。所以此时划分正确的有{4,8,11,12},精度为57.1%,较之前的71.4%降低,则不往下划分。“稍凹”和“平坦”同理计算,最后得到的预剪枝就如下图,发现该决策树的很多分支都没有展开,降低了“过拟合”风险和决策树训练时间,但是却可能增加“欠拟合”(提取的特征过少,模型过于简单)的风险。

总结:预剪枝的步骤:

1. 获取第一次划分前验证集精度:训练集中样本多的标签作为验证集精度划分依据,如训练集5个好瓜5个坏瓜,则预测验证集全是好瓜(训练集数量一样是随机选取),实际只有3个好瓜,则精度为 3/7 = 42.9%

2. 选取根节点:用训练集对每个特征进行“信息熵”判断,获取“熵”最小的特征A作为根节点

3. 给子节点打标签:根据特征A属性用训练集划到各个子节点(下图2,3,4),根据每个子节点的训练集类别数量来给2,3,4子节点打标签(好瓜或坏瓜标签)

3. 是否剪枝:用验证集对特征A进行划分,根据步骤2对2,3,4子节点打的标签,判断验证集是否划分正确,获得第一次划分后验证集精度为71.4%

4. 若步骤3的精度有提高,则对2,3,4子节点依次判断是否需要划分?以2节点为例:获取2节点包含的训练集样本的“熵”最小时的特征,重复步骤2/3,计算2节点划分完的精度与第一次划分完的精度71.4作比较。注:2节点划分时,3,4节点不处理;3节点划分时,2,4节点不处理,依此类推

后剪枝

先生成4.5的完整决策树,该树的验证精度为42.9%。然后树的下面往上面考察,先考察结点6,将其分支剪除,即将6结点变为叶结点(包含7,15样本),将该叶节点的类别标记为好瓜。此时,该节点上的一个验证集被分类正确,验证精度提升至57.1%,所以可以剪枝;然后,考察结点5,将其领衔的子树替换为叶结点,验证集精度还为57.1%,则不剪枝;再考察结点2,将其领衔的分支剪除,验证集精度提升71.4%,可以剪枝;对于结点3和1,将其领衔的子树替换为叶结点,验证集的精度分别为71.4和42.9%,则被保留。将最后得到的树如下:

所以,后剪枝决策树通常比预剪枝决策树保留更多的分支。一般后剪枝决策树的“欠拟合”风险小,泛化性能往往比预剪枝好。但是后剪枝是在生成决策树后自底向上对树中的所有非叶结点进行按个考察,训练时间要比未剪枝和预剪枝决策树大很多。

不管预剪枝和后剪枝,都是用训练集根据信息熵来获取特征进行划分,用划分后的训练集来给节点打标签,然后用验证集划分前和划分后的精度来判断是否需要剪枝

随机森林

随机有放回从m个样本中抽取n个数据,并随机抽取几个特征, 对决策树无剪枝生成一棵树,重复L次即可生成L棵树,这些树构成一个随机森林。将测试样本输入随机森林,如果是分类问题:求众数,如果是回归问题:mean(所有树的输出值)。

随机森林特征值选择,

1. 对RF的每一棵树计算出对应OOB(袋外数据)的误差为OOB_e1

2. 对每一棵树的OOB数据的Xi特征增加噪音(随机增加一个数字)后计算每一棵树的误差OOB_e2

3. sum(OOB_e1 + OOB_e2) / L ,值越大说明这个特征越重要

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值