决策树算法

学习了一下决策树算法(ID3)。

基本的理论知识:

信息熵:信息理论的鼻祖之一Claude E. Shannon(香农)把信息(熵)定义为离散随机事件的出现概率。一般而言,当一种信息出现概率更高的时候,表明它被传播得更广泛,或者说,被引用的程度更高。我们可以认为,从信息传播的角度来看,信息熵可以表示信息的价值。这样子我们就有一个衡量信息价值高低的标准,可以做出关于知识流通问题的更多推论。

计算公式

H(x) = E[I(xi)] = E[ log(2,1/p(xi)) ] = -∑p(xi)log(2,p(xi)) (i=1,2,..n)

如果抛一个硬币,我们可以计算出-0.5log2 0.5 - 0.5log2 0.5 = 1。我们就可以用1个比特来表示结果。或者有32个球队,赢球的概率相同,那么信息熵为5,我们需要5比特来表示结果

 

ID3的核心思想是:在决策树各节点上选择属性时,通过计算信息增益来选择信息熵。怎么选择呢,说白了就是如果一个信息熵很低,那么代表的就是确定度越高。如果一个硬币每次都是正面那直接选择正面啊。哈哈。

所以我们怎么来选择哪一个分类属性呢,看用哪一个分类属性会使信息熵变低,不确定度减小。哈哈。

 

ID3算法描述

输入:样本集合S,属性集合A
    输出:id3决策树。
    1) 若所有种类的属性都处理完毕,返回;否则执行2)
    2)计算出信息增益最大属性a,把该属性作为一个节点。
        如果仅凭属性a就可以对样本分类,则返回;否则执行3)
    3)对属性a的每个可能的取值v,执行一下操作:
        i.  将所有属性a的值是v的样本作为S的一个子集Sv;
        ii. 生成属性集合AT=A-{a};
        iii.以样本集合Sv和属性集合AT为输入,递归执行id3算法;

下面给出几个用到的公式。

信息增益公式:

Gain(X,T) =INFO(T) – INFO(X,T)

Gain(X,T):选用X属性分类的得到的信息增益。

INFO(T) :总的信息熵。

INFO(X,T):用X分类的信息熵。    

 

实例分析:

    这个例子来源于Quinlan的论文。
    假设,有种户外活动。该活动能否正常进行与各种天气因素有关。
    不同的天气因素组合会产生两种后果,也就是分成2类:能进行活动或不能。
    我们用P表示该活动可以进行,N表示该活动无法进行。
    下表描述样本集合是不同天气因素对该活动的影响。
                     Attribute                       class
    outlook    temperature    humidity    windy
    ---------------------------------------------------------
    sunny       hot             high           false       N
    sunny       hot             high           true         N
    overcast   hot             high           false       P
    rain           mild           high           false       P
    rain           cool           normal      false       P
    rain           cool           normal      true         N
    overcast   cool           normal      true         P
    sunn y      mild           high           false       N
    sunny       cool           normal      false       P
    rain           mild           normal      false       P
    sunny       mild           normal      true         P
    overcast   mild           high           true         P
    overcast   hot             normal      false       P
    rain           mild           high           true        N
    3.2
    该活动无法进行的概率是:5/14
    该活动可以进行的概率是:9/14
    因此样本集合的信息熵是:-5/14log(5/14) - 9/14log(9/14) = 0.940
    3.3
    接下来我们再看属性outlook信息熵的计算:
    outlook为sunny时,
    该活动无法进行的概率是:3/5
    该活动可以进行的概率是:2/5
    因此sunny的信息熵是:-3/5log(3/5) - 2/5log(2/5) = 0.971
    同理可以计算outlook属性取其他值时候的信息熵:
    outlook为overcast时的信息熵:0
    outlook为rain时的信息熵:0.971
    属性outlook的信息增益:gain(outlook) = 0.940 - (5/14*0.971 + 4/14*0 + 5/14*0.971) = 0.246
    相似的方法可以计算其他属性的信息增益:
    gain(temperature) = 0.029
    gain(humidity) = 0.151
    gain(windy) = 0.048
    信息增益最大的属性是outlook。

posted @ 2014-03-04 20:20  独立寒风  阅读(366)  评论(0编辑  收藏  举报