ID3 算法简介(信息论角度)

ID3(iterative dichotomiser 3)算法的主要步骤是节点属性的选择,运用了信息论中的熵概念作为启发式函数。在这种属性选择方法中,选择具有最大信息增益(information gain)的属性作为当前划分节点。通过这种方式选择的节点属性可以保证决策树具有最小的分枝数量,使得到的决策树冗余最小。其选择属性结点的方法如下:

设U为一个包含n个数据样本的集合,其类别属性可以取m个不同的值,对应于m个不同的类别${{\text{u}}_{\text{i}}}$,。则计算没有任何条件属性的先验熵$H\left( U \right)$:

$H\left( U \right) =  - \sum\limits_{i = 1}^m {p\left( {{u_i}} \right){{\log }_2}p\left( {{u_i}} \right)} $

 

${\text{i}} \in \left\{ {{\text{1,2,}} \ldots {\text{,m}}} \right\}$

其中$p\left( {{u_i}} \right)$是类别${{\text{u}}_{\text{i}}}$出现的概率。

然后计算在条件属性V出现下的条件熵$H\left( {U\left| V \right.} \right)$,

 $H\left( {U\left| V \right.} \right) = \sum\limits_{j = 1}^k {p\left( {{v_j}} \right)H\left( {U\left| {{v_j}} \right.} \right)} $

其中k是条件属性V的属性值的个数,$V = \left\{ {{v_1},{v_2}, \cdots ,{v_k}} \right\}$,$p\left( {{v_j}} \right)$是属性${v_j}$出现的概率,

$H\left( {U\left| {{v_j}} \right.} \right) =  - \sum\limits_{i = 1}^m {p\left( {{u_i}\left| {{v_j}} \right.} \right){{\log }_2}p\left( {{u_i}\left| {{v_j}} \right.} \right)} $

得到先验熵$H\left( U \right)$和条件熵$H\left( {U\left| V \right.} \right)$,即可计算在条件属性V下的信息增益:

$G\left( {U,V} \right) = H\left( U \right) - H\left( {U\left| V \right.} \right)$

其实也就是信息论里面的互信息:

$I\left( {U,V} \right) = H\left( U \right) - H\left( {U\left| V \right.} \right)$

ID3算法计算得到每个条件属性下不同的信息增益,寻求一个得到最大增益的属性,

${V_i} = \arg \max \left( {G\left( {U,{V_i}} \right)} \right),i = \left\{ {1,2, \cdots ,l} \right\}$

作为其首个分节点。利用分节点${V_i}$上的$l$个属性值,又可以将原数据集分成$l$个不同的数据子集,然后对每个子集继续采用以上的方法选择条件属性分节点,一直到不能再分为止。

 

 

 

 

posted @ 2013-07-30 20:53  oort cloud  阅读(473)  评论(0编辑  收藏  举报