决策树--从原理到Python实现

决策树基本上是每一本机器学习入门书籍必讲的东西,其决策过程和平时我们的思维很相似,所以非常好理解,同时有一堆信息论的东西在里面,也算是一个入门应用,决策树也有回归和分类,但一般来说我们主要讲的是分类,方便理解嘛。

虽然说这是一个很简单的算法,但其实现其实还是有些烦人,因为其feature既有离散的,也有连续的,实现的时候要稍加注意。

读一读

信息论的一些point:

(注:若看不清,可双击手机屏幕将图片放大)

然后加入一个叫信息增益的东西:

□.信息增益:(information gain)

g(D,A) = H(D)-H(D|A)

表示了特征A使得数据集D的分类不确定性减少的程度

□.信息增益比:(information gain ratio)

g‘(D,A)=g(D,A) / H(D)

□.基尼指数:

二.各种算法

1.ID3

ID3算法就是对各个feature信息计算信息增益,然后选择信息增益最大的feature作为决策点将数据分成两部分然后再对这两部分分别生成决策树。(注:若看不清,可双击手机屏幕将图片放大)

2.C4.5

C4.5与ID3相比其实就是用信息增益比代替信息增益,应为信息增益有一个缺点: 信息增益选择属性时偏向选择取值多的属性

算法的整体过程其实与ID3差异不大:

3.CART

CART(classification and regression tree)的算法整体过程和上面的差异不大,然是CART的决策是二叉树的每一个决策只能是“是”和“否”,换句话说,即使一个feature有多个可能取值,也只选择其中一个而把数据分类两部分而不是多个,这里我们主要讲一下分类树,它用到的是基尼指数:

三.代码及实现(注:若看不清,可双击手机屏幕将图片放大)

好吧,其实我就想贴贴代码而已…… 纯属toy~~~~~实现的CART算法:

这个maketree让我想起了线段树………………代码里的变量基本都有说明

试验代码:

四.reference

【1】:《机器学习》 -mitchell,卡耐基梅龙大学

【2】:《统计学习方法》-李航

(Via:CSDN博客 作者pi9nc)

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2015-05-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏阮一峰的网络日志

正态分布为什么常见?

统计学里面,正态分布(normal distribution)最常见。男女身高、寿命、血压、考试成绩、测量误差等等,都属于正态分布。 ? 以前,我认为中间状态是...

2735
来自专栏大数据挖掘DT机器学习

北大老鸟三年数据分析深刻总结——致学弟学妹们

以下是我在近三年做各类计量和统计分析过程中感受最深的东西,或能对大家有所帮助。当然,它不是ABC的教程,也不是细致的数据分析方法介绍,它只是“总结”和“体会”。...

4716
来自专栏PPV课数据科学社区

人人都应该掌握的9种数据分析思维-深度学习世界

说到数据分析,啤酒和尿布的例子大家应该都听腻了。再具体、深入一些的内容,往往因为数学就令很多人望而却步了。给大家分享9个不带数学推导的数据分析思路,希望大家能喜...

30912
来自专栏追不上乌龟的兔子

Neo4j中的图形算法:15种不同的图形算法及其功能

只有你拥有使用图形分析的技巧,并且图形分析能快速提供你需要的见解时,它才具有价值。因而最好的图形算法易于使用,快速执行,并且产生有权威的结果。

6963
来自专栏机器学习算法与Python学习

机器学习(5)之决策树ID3及Python实现

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 ID3是什么? ID3算法是决策树的...

2635
来自专栏PPV课数据科学社区

正态分布为什么常见?

统计学里面,正态分布(normal distribution)最常见。男女身高、寿命、血压、考试成绩、测量误差等等,都属于正态分布。 >>>> ? 以前,我认...

2325
来自专栏钱塘大数据

人人都应该掌握的9种数据分析思维

说到数据分析,啤酒和尿布的例子大家应该都听腻了。再具体、深入一些的内容,往往因为数学就令很多人望而却步了。给大家分享9个不带数学推导的数据分析思路,希望大家能喜...

2718
来自专栏AI启蒙研究院

党给我智慧给我胆,梯度给我努力的方向

1235
来自专栏数说工作室

【生物大数据】统计方法在生物信息学“精细定位”(fine-mapping)中的应用

之前我们发过一篇文章,文章中说如何寻找与某个疾病相关的遗传信息,简单复习一下: 我们每个人所带的基因是差不多的,之所以有的人卷发,有的人直发,有这么丰富多彩的变...

4455
来自专栏机器学习算法与Python学习

Neural Networks for Machine Learning-1

Neural Networks for Machine Learning是深度学习的开衫鼻祖Geoffrey Hinton讲授的从神经网络到深度学习的一门庞大的...

3456

扫描关注云+社区