决策树--从原理到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 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

时间序列异常检测 EGADS Surus iForest

时间序列异常检测 (原文链接:http://wurui.cc/tech/time-series-anomaly-detection/) 本文总结了我在时间序列异...

1.6K40
来自专栏机器之心

学界 | 循环神经网络自动生成程序:谷歌大脑提出「优先级队列训练」

28480
来自专栏大数据文摘

论文Express | 自然语言十项全能:转化为问答的多任务学习

Salesforce最新论文提出了一个可处理多项自然语言处理的通用模型:decaNLP,处理机器翻译、文本分类等NLP任务统统不在话下!

15320
来自专栏CSDN技术头条

递归神经网络不可思议的有效性

递归神经网络(RNNs)有一些不可思议的地方。我仍然记得我训练的第一个用于图片字幕的递归网络。从花几十分钟训练我的第一个婴儿模型(相当随意挑选的超参数)开始,到...

23590
来自专栏AI科技大本营的专栏

多图|入门必看:万字长文带你轻松了解LSTM全貌

作者 | Edwin Chen 编译 | AI100 第一次接触长短期记忆神经网络(LSTM)时,我惊呆了。 原来,LSTM是神经网络的扩展,非常简单。深度学...

34570
来自专栏数据科学与人工智能

【机器学习】10 种机器学习算法的要点

前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注,但是这家公司真正的未来在于机器学习,一种让计算机更聪明、更个性化的技术。 也许我...

26770
来自专栏深度学习之tensorflow实战篇

RNN与LSTM之间的介绍和公式梳理

最近在整理tensorflow,经常用到RNN与lSTM,故整理如下: -RNN:循环神经网络(Recurrent Neural Networks) -...

1.5K60
来自专栏算法channel

深度学习|理解LSTM网络(前篇)

01 — 回顾 近两天推送介绍了CNN网络,关于这部分的介绍,请参考: 深度学习|卷积神经网络(CNN)介绍(前篇) 深度学习|卷积神经网络(CNN)介绍(后篇...

39660
来自专栏开源FPGA

基于FPGA的Cordic算法实现

  CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,是J.D.Volder1于1959年首次...

597100
来自专栏专知

【QA论文笔记】问答对排序新方法,层次循环编码器与主题聚类结合

26930

扫码关注云+社区

领取腾讯云代金券