栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

关于决策树的原理和实现 python

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于决策树的原理和实现 python

文章目录
  • 关于决策树
    • 条件熵
    • 信息增益
  • 实例
    • 熵的计算
    • 条件熵的计算:
  • ID3算法

关于决策树
  • 决策树是随机森林的基本组成单位,随机森林是由很多的树组成的。
  • 决策树的作用就是在特征条件中 划分信息熵最高的

信息熵: 能提供最大不确定性的条件,如有所有同学中有两个条件,男和女,打游戏和不打游戏,
明显:男和女是最能减少不确定性的条件

香龙在文中指出,它的准确信息量应该是:

其中[公式]表示以2为底的对数, p1, p2, p3为每个条件的概率。
对于一个随机的变量X, 他的信息熵应该是


如我们的二分类问题, p(x) = p1 p(y) = 1-p1 其中, 0 所以,Hx = -(p1logp1 + (1-p1)log(1-p1)

我们可以画出函数的图像,看的出来, 在0.5的时候, 熵取到最大
也就是说此时的不确定性最大,要把这件事搞清楚所需要的信息量也就越大。并且这也很符合我们的常识,例如“明天下雨和不下雨的概率都是50%”,那么这一描述所存在的不确定性是最大的

条件熵

条件熵就是在特定条件下,减少信息熵的条件,如,引入某个条件,如所有男女中,引入条件-身高180的人,可以减少特定的人群, 这叫部分条件熵, 而引入条件,身高120以上的, 就属于完全条件熵,
则

信息增益

在引入特定条件后,能使得目前的不确定性,即u的数值达到最大,那这就是最大信息增益。

三种决策方式已经讲解完毕了, 接下来就是在树每次划分时,采用最大信息熵的方式进行划分,达到最优决策树。

实例

接下来看个实例用来计算三个熵

其中,x1表示是否有房, x2表示是否有工作, x3表示学历条件,Y是预测结果, 表示是否通过贷款申请。

熵的计算

Hy = - (5/15log5/15 + 10/15log10/15) = 0.918

条件熵的计算:

Hy|x1 = - (7/15 (3/7log3/7+ 4/7log4/7) - 8/15(1/8log1/8 +7/8log7/8) = 0.75
Hy|x2 = -8/15(4/8log4/8 +4/8log4/8) - 7/15(6/7log6/7 + 1/7log1/7) = 0.81
Hy|x3 = -8/15(5/8log5/8 + 3/8log3/8) - 4/15(3/4log3/4 + 1/4log1/4) - 3/15(2/3log2/3 + 1/3log1/3) = 0.91

则条件熵信息增益分别为

ID3算法

每次都以最大信息增益熵为划分依据,
第一次以A1为条件进行划分

划分完再次计算信息熵
如HD1|A2 = -3/7(3/3log3/3 + 0) - 4/7(1/4log1/4 + 3/4log3/4) = 0.464
HD1|A3 = -3/7(1/3log1/3 +2/3log2/3) - 4/7(1/4log1/4+3/4log3/4) = 0.464
所以划分不妨以A2进行划分
而D2的熵增益为
HD2|A2 = -5/8(4/5log4/5 + 1/5log1/5) - 3/8 * 0 = 0.451
HD2|A3 = - 4/8(4/4log4/4 + 0 ) - 2/8(0) - 2/8(1/2log1/2 + 1/2log1/2) = 0.25
所以再次划分


继续按条件划分


缺点:由于每次划分都选择最大信息量进行划分,所以很快就划分完毕,并且容易产生特征偏差,即一个子树都是A2的情况,容易产生又矮又胖的情况, 产生过拟合现象。所以还有另一种划分方式。下面将介绍C4.5的划分 方式

C4.5 即在原本划分的方式上, 将节点划分方式改成增益比的方式进行划分,即

下篇将 介绍如何用python 的sklearn 方法实现决策树并进行可视化

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982233.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号