决策树理论

我做了一个导航站(域名是挂路灯的全拼gualudeng.com),里面精选了各种影视,动漫,黑科技,实用工具,搞笑有趣的站点,动动大家可爱的小手,点进来看看吧,良心站点。

在谈决策树之前我们需要先理解信息熵这个概念。信息熵是信息的不确定性的一个纯数字度量。信息熵越大这说明事件的不确定性越大。什么叫事件的不确定性呢?事件不确定也就是这个事件的结果有很多种可能。比如我们掷骰子。我们会有六种等概率的结果。对于掷骰子的结果我们是不确定的。但是如果我们的骰子6个面都是1。那么我们掷骰子的结果就是确定的。这时候事件的不确定性就为0.也就是确定的。这个不确定性也叫做这个事件的信息量。但是我们该如何用数字去衡量不确定性呢?

给出定义公式  info(D) = -\sum_{i=1}^{n}p_ilog(p_i)    (以后所有的log都是以2为底的)这个表示事件D的信息熵(信息量/不确定性),p_i表示每一种可能性的概率。则上面掷骰子的信息量 info(D)=-(\frac{1}{6}log(\frac{1}{6})+\frac{1}{6}log(\frac{1}{6})+\frac{1}{6}log(\frac{1}{6})+\frac{1}{6}log(\frac{1}{6})+\frac{1}{6}log(\frac{1}{6})+\frac{1}{6}log(\frac{1}{6}))  

 info(D) = -log(\frac{1}{6}) 

下面我们开始讨论决策树。我们有下示例 

需要根据日志密度,好友密度,是否使用真实头像三个特征判断账号的真实性。 我们分别用 A,B,C,D表示上面4个特征(事件)

我们的目的是要得出用户的账号是否真实的结论。如果我们不给定A,B,C三个特征。那么可知任意给一个账号,他是真实的概率为0.7,不真实的概率为0.3。那么就可以得出D事件的信息量  info(D) = -(0.3log(0.3)+0.7log(0.7))=0.879

现在我们给定一个事件A。那么在A发生的情况下事件D的不确定性又会怎么变化呢?其实这就像侦探破案一样,我们一步一步的给出一个一个条件,然后结果的不确定性就会慢慢减小。真相也就慢慢浮出水面。也就是说给定了事件A。D的不确定性会降低。那么如何度量这个影响呢?

这里我们需要知道一个叫做条件熵的东西。也就是在A发生的情况下D的信息量为多少。计算公式为

info(D|A)=\sum_{i=1}^{n}p_i(info(D|A=a))  其中n表示事件A的可能性个数本例中为3。   p_i表示每一个可能性的概率。info(D|A=a)表示在事件A的每一种可能性下D事件的信息量。下面我们来看看具体的计算过程

事件A(日志密度)有三种可能性s.l.m。  第一种可能性 s 有三个那么在s下D的信息量  info(D|A=s) = -(\frac{2}{3}log(\frac{2}{3})+\frac{1}{3}log(\frac{1}{3}))

同理可得 info(D|A=l) = -(\frac{0}{3}log(\frac{0}{3})+\frac{3}{3}log(\frac{3}{3}))    info(D|A=m) = -(\frac{1}{4}log(\frac{1}{4})+\frac{3}{4}log(\frac{3}{4}))

则 info(D|A) = 0.3info(D|A=s)+0.3info(D|A=l)+0.4info(D|A=m)

info(D|A)=0.603

也就是在给定A事件的情况下D的不确定性由在没有给定任何条件下的0.879减小到了0.603.

我们定义信息增益  gain(A) = info(D)-info(D|A)  。也就是事件A的给定让事件D的不确定性减少了多少。

有了上面的知识。下面我们该开始绘制决策树了。 第一个问题是如何选择分裂节点。其实我们建立决策树的过程,就是一个给定先验条件一步一步的降低我们需要的结果的不确定性的过程。以达到分类的结果。所以为了最快的降低结果的不确定性,我们就需要每一次选择信息增益最大的事件,作为分裂节点。

通过计算我们发现在上例中 gain(B) 是最大的所以选择 B(好友密度作为第一个分类节点)得到如下图

发现左右两个分支的信息熵已经为零。所以左右两支已经达到分类效果不需要在分裂了。但是中间的一支还需要继续分裂。现在只需要对上图中的表格重复上面的步骤。直到信息熵小于某一个阀值就停止分裂。到此整个算法就结束了。 这个算法的名称叫做 id3算法

但是这个算法有一个缺点就是信息增益偏向取值较多的特征。但这样会让决策树更加繁杂。所以为了改进我们提出了一个c4.5算法

以最大信息增益率作为分裂标准 计算公式为 f(A) = \frac{gain(A)}{info(A)}    如果一个事件的特征越多那么 info(A)就越大 f(A)就越小。这就对特征多的事件起到一个惩罚作用。

但是在计算中要注意 并不是直接选择信息增益率最大的事件,而是先在候选事件中找出信息增益高于平均水平的事件,然后在这些事件中再选择信息增益率最高的事件作为分裂节点。   

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值