机器学习 决策树

参考B站简博士

一、信息增益

1、信息增益概念

熵表示随机变量不确定性,

或:

 随机变量的取值等概率分布的时候,相应的熵最大。

 条件熵:

 当熵和条件熵中的概率有数据估计得到时,则为经验熵和经验条件熵。

信息增益:得知特征X而使类Y的信息的不确定性减少的程度。

2、信息增益:算法

 输入: 训练集数据集D和特征A

输出:特征A对D的信息增益g(D,A)

 计算经验熵H(D):

 计算经验条件熵H(D|A):

计算信息增益:

 3、例题解说:

 思路其实就是计算出每种特征的信息增益:

 信息增益的意思是得知特征X使类Y的不确定性的减少程度,因此这个减少程度当然是越大越好,即信息增益越大越好,因此有自己的房子这个特征是这里的最优特征,我们放在根节点处。

二、信息增益比

由于信贷情况的特征取值比有工作的特征取值多,可能导致其信息增益大于有工作的信息增益。

因此引入了信息增益比 :

 信息增益比的分母其实就是每个特征的经验熵。

三、ID3算法

输入:训练数据集D、特征集A、阈值e

输出:决策树T

1、判断T是否需要选择特征生成决策树

        -若D中所有实例属于同一类,则T为单节点树,返回T;

        -若D中所有实例无任何特征(A=空集),记录D中实例个数最多类别Ck;

2、否则,计算A中各特征的信息增益,并且选择信息增益最大的特征Ag:
        - 若Ag的信息增益小于阈值e,则T为单节点树,记录D中实例个数最多类别Ck,

        以此作为该节点的类标记,并返回T;

        - 否则,按照Ag的每个可能值ai(Ag这个特征的不同取值),将D分为若干非空子集

        Di,将Di中实例个数最多的类别作为标记,构建子节点,以节点和其子节点构成T,并

        返回T;

3、第i个子节点,以Di为训练集,A-Ag为特征集合,递归的调用以上步骤,得到子树Ti并返回。

四、C4.5算法 

就是将ID3算法中的信息增益换成了信息增益比 

五、决策树剪枝

优秀的决策树:在具有好拟合和泛化能力的同时,

深度小,叶节点少,深度小并且叶节点少

5.1 预剪枝

预剪枝:生成过程中,读每个节点划分前进行估计,若当前节点的划分不能提升泛化能力,则停止划分,记当前节点为叶节点;

1、限定决策树的深度

2、设定一个阈值

3、设置某个指标,比较节点划分前后的泛化能力

预剪枝这里的比较节点划分前后的泛化能力,其实就是如果不划分节点,然后测试集的准确率更高的话,那就不划分,反之划分。 

5.2 后剪枝

5.2.1 降低错误剪枝

原理:自下而上,使用测试集来剪枝。对每个节点,计算剪枝前后的误判个数,若剪枝有利于减少误判(包括相等的情况),则减掉该节点所在分枝。

缺点:受测试集影响大,如果测试集比训练集小很多,会限制分类的精度

5.2.2 悲观错误剪枝(PEP)

原理:根据剪枝后的错误率来决定是否剪枝。和REP不同之处在于,PEP只需要训练集即可,不需要验证集,并且PEP是自上而下剪枝的。

缺点:不需要分离剪枝数据集,有利于实例较少的问题。误差使用了连续修正值,使得实用性更强。由于自上而下的剪枝策略,PEP效率更高。可能修剪掉不应剪掉的枝条。

 步骤:

1、计算剪枝前目标子树每个叶子节点的误差,并进行连续修正:error(Leafi)就是误判个数

,N(T) 是当前子树的总样本数

 2、计算剪枝前目标子树的修正误差:L是叶子节点个数

 3、计算剪枝前目标子树误判个数的期望值:

 4、计算剪枝前目标子树误判个数的标准差:

 5、计算剪枝前误判上限(即悲观误差):

 6、计算剪枝后该节点的修正误差:

 7、计算剪枝后该节点误判个数的期望值:

 8、比较剪枝前后的误判个数,如果满足以下不等式,则剪枝:否则,不剪枝

 不剪枝的例子:

剪枝的例子:

5.2.3 最小误差剪枝(MEP)

 原理:根据剪枝前后的最小分类错误概率来决定是否剪枝。自下而上剪枝,只需要训练集即可。

5.2.4 代价-复杂度剪枝(CCP)

原理:根据剪枝前后的损失函数来决定是否剪枝。

六、CART算法

6.1 分类树:

 6.2 特征下的基尼指数:

6.3 分类树的生成

注意:由于cart是二叉树,当某个特征有多种具体特征时,比如三种:青年、中年、老年

那我们可以去计算,青年和(中年、老年)这两种特征的基尼指数,以及(青年、中年)和老年的基尼指数,还有中年、(青年、老年)的基尼指数,取出最小的,作为这个特征的基尼指数。

6.4 回归树的生成 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值