决策树算法
学习了一下决策树算法(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。