AI机器学习新手上路-决策树

决策树

通俗讲解:训练出一棵被条件圈定的树。
就像一个人不听的在问“是···吗?” 回答是或者否,则转到下一个问题或者得出结论,直到完成决策。

image

举个栗子:银行一个20w贷款的放贷依据假定有三:婚姻状况(未婚、已婚),工资水平(1w以下,1-3w,3w以上),身体状况(好,一般,差)。决策树就像在问贷款者:你是否结婚了?工资多少?。。。

而决策树所问的第一个问题,不难理解,应该是最重要最能影响这个决策、最具有类别特征的问题,因为回答者的回答将可能直接决定分类的类别。那么问题来了:怎么在众多类别特征中决定“问问题”的顺序,问完问题以后怎么决定接下来的安排?

我们需要先了解一个概念信息熵

信息熵的定义是:如果一个事件有n种可能,每一种可能发生的概率是pi,则其信息熵为

H(X)=plog1p H ( X ) = − ∑ p ∗ l o g 1 p

上式中每种可能的概率相等时,事件的信息熵最大,而熵正是代表事情的不确定性,一件事如果有两种可能,当每种可能的概率都为1/2时不确定性肯定也是最大的,偏向其中某种可能了,不确定性就会减少。


举例说明:生成决策树判断银行是否放贷(ID3算法)
婚姻状况工资水平身体状况放贷
未婚1
未婚1
未婚3
已婚3一般
未婚3
未婚2
未婚2一般
未婚1
已婚1一般
step1:计算整个分类系统-放贷的信息熵

根据历史数据,放贷有两种可能:放的概率为2/3;不放的概率为1/3,根据信息熵公式:

H(S)=plog1p=13log1323log230.92 H ( S ) = − ∑ p ∗ l o g 1 p = − 1 3 ∗ l o g 1 3 − 2 3 ∗ l o g 2 3 ≈ 0.92

step2:计算假定按照每一个特征划分后的信息熵

按照工资状况划分后:

工资水平放贷
1是 否 否 是
2是 否
3是 是 是

划分后,各部分的信息熵

H(S1|T)=12log1212log12=1 H ( S 1 | T ) = − 1 2 ∗ l o g 1 2 − 1 2 ∗ l o g 1 2 = 1

H(S2|T)=12log1212log12=1 H ( S 2 | T ) = − 1 2 ∗ l o g 1 2 − 1 2 ∗ l o g 1 2 = 1

H(S3|T)=33log3303log03=0 H ( S 3 | T ) = − 3 3 ∗ l o g 3 3 − 0 3 ∗ l o g 0 3 = 0

划分后的条件熵为
H(S|T)=491+291+390=23 H ( S | T ) = 4 9 ∗ 1 + 2 9 ∗ 1 + 3 9 ∗ 0 = 2 3

最终得到特征属性带来的信息增益为

H(S)H(S|T)0.25 H ( S ) − H ( S | T ) ≈ 0.25

信息增益,通俗的讲就是该特征为整件事带来的信息增量,比如中国队打进世界杯了,信息熵很大;但是前提条件如果加上了c罗和梅西加入中国国籍带队参赛,那么打进世界杯的就不那么令人意外了,加上该条件后的信息熵前后对比,就凸显出该特征带来的信息增益。

以此计算出其他两个特征带来的信息增益,得到特性【工资水平】带来的信息增益最大,选择其作为决策树的首个分支条件。后面的步骤就是重复上述。

通过信息增益量化一次拆分的结果好坏,下一步就是构造决策树,主要步骤如下:

  1. 遍历每个决策条件,对结果集进行拆分
  2. 计算该决策条件下,所有可能的拆分情况的信息增益,信息增益最大的拆分为本次最优拆分
  3. 递归执行1、2两步,直至信息增益=0或者很小

在决策树的每一个非叶子结点划分之前,先计算每一个属性所带来的信息增益,选择最大信息增益的属性来划分,因为信息增益越大,区分样本的能力就越强,越具有代表性,很显然这是一种自顶向下的贪心策略。以上就是ID3算法的核心思想。


决策树的剪枝:
实际的训练集训练出来的数据会存在过拟合现象,本着奥卡姆剃刀原理的原则,那么就需要进行剪枝处理处理。
剪枝的做法可以有
1. 预剪枝:一边决策一边剪枝,判断最大信息增益都小于阈值的时候直接变为叶子节点
2. 后剪枝:决策后进行剪枝,判断合并后信息的增加量是否小于阈值。后剪枝是目前最普遍的做法。

决策树在生成过程中运用信息熵在贪婪算法思想下建立(局部生成);
决策树在剪枝过程中则运用错误(率)来指导剪枝(全局剪枝)。


参考资料:
http://www.jianshu.com/p/6eecdeee5012

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值