决策树算法思想及实现介绍

一、决策树简介
决策树,顾名思义,首先是一个树形结构(二叉树或者非二叉树),内部节点表示一个特征或者属性,外节点表示一个类。
可以将决策树看成一个if-then规则的集合,由决策树的根节点到叶节点的路径构成一条规则。
决策树模型学习的目标是根据给定的数据集,建立一个决策树模型,使它能够对实例进行正确的分类,本质上是从训练集中归纳出一组分类规则,决策树学习是由训练数据估计条件概率模型。
二、决策树算法思想
决策树学习算法通常是递归地选择最优特征(注,从所有可能的决策树模型中选择最优决策树是NP完全问题,通常我们得到的决策树是次最优的,即不一定是全局最优,而是在一个节点处做到最优,决策树的构建属于贪心策略)。
基本步骤:
1、收集训练所用的数据集
2、格式化数据,以满足算法输入格式
3、训练数据递归的构建决策树
4、测试决策树模型的分类效果
在这个过程中,会用到一些核心的概念,这里解释一下
熵:定义为信息的期望,表示信息的混乱程度(信息论中的概念),计算公式
L(x) = -P(x)*log2(P(x)) 其中P(x)是选择该分类的概率。
信息增益:表示数据分类前后熵变化的差值,其值是用分类前的熵减去分类后的熵,值越大,表示按此特征分类效果越好,是用来构建递归树的特征选择指标之一。
此文中得到的决策树用字典数据结构表示,当然也可以借助matplotlib库来进行可视化建树,具体可参考后文中的源代码,里面有详细注释。
三、决策树的实现
构建的过程是按照信息增益最大的原则递归进行的,指导思想很简单,我不啰嗦了,直接附上实现的源代码,里面有详细的注释。
github代码链接:https://github.com/GritCoder/decisionTree.git
四、决策树的减枝
上面构建的决策树,用到的具体算法名称是ID3算法,是贪心策略,能够很好的匹配试验数据,但是贪心策略生成的决策树存在过度匹配的问题,泛化能力较差(其实也很好理解,因为贪心策略匹配的特征太多了,想学到每一个匹配项)。因此我们所要对生成的决策树进行减枝,生成最求的是局部最优,减枝则从全局最优来考虑。
减枝算法思想:
算法的输入是已经构建好的决策树,输出是减枝优化后的决策树
1、计算每个节点的经验熵
2、递归的从每一个节点向上回溯
3、用损失函数来进行比较减枝前后的效果
4、若减枝后效果更优,则进行减枝
5、返回步骤2,直到不能进行减枝为止
算法的实现用到的是动态规划的思想(全局最优),具体实现可参考相关经典文献。
五、其他算法
上文提到了ID3算法的缺点,其实也有其他实现算法可以避免那些缺点
如 比较有名的CART算法(特征选择依据是基尼指数)、C4.5算法(特征选择依据是信息增益比)等,具体可参考相关资料。

本文主要参考资料:
统计学习方法 李航
Machine Learning in Action

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值