如何引入决策树算法以及决策树算法的基本知识参考前文https://blog.csdn.net/weixin_44451032/article/details/100046855
ID3算法存在的问题
例如在原始数据中加入一列ID,如下图
那么如果以ID为一个节点,那么最后的每个叶子节点中只有一个数据,那么每个叶子节点的熵值都为0,那么此时的信息增益将达到最大,但是这显然不是我们想要的分类结果,这样的分类结果就好像最终得到的每一个分类数据都是按照自己的规则得到的,而我们想要的是根据大部分数据都具有的特征分类,根据一些通用规则而不是特有规则。按照这样特有的规则分类的结果显然是最后再训练集上表现很好,但是泛化能力很差,无法适应新样本,这就产生了过拟合。
那么如何解决ID3算法的这一问题呢?这就引入了信息增益率。
G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) \begin{aligned}Gain\_ratio (D,a)=\frac{Gain(D,a)}{IV(a)}\end{aligned} Gain_ratio(D,a)=IV(a)Gain(D,a)
I V ( a ) = − ∑ v = 1 v = V ∣ D v ∣ ∣ D ∣ l o g 2 ∣ D v ∣ ∣ D ∣ \begin{aligned}IV(a)=-\sum_{v=1}^{v=V}\frac{|D^v|}{|D|}log_2\frac{|D^v|}{|D|}\end{aligned} IV(a)=−v=1∑v=V∣D∣∣Dv∣log2∣D∣∣Dv∣
这就是C4.5算法:解决了ID3算法的问题,考虑到了自身熵。
上面我们提到,最终分类打球与不打球的天数分别为9,5.
那么此时的熵值为
− 9 14 l o g 2 9 14 − 5 14 l o g 2 5 14 = 0.940 \begin{aligned}-\frac{9}{14}log_2\frac{9}{14}-\frac{5}{14}log_2\frac{5}{14} = 0.940\end{aligned} −149log2149−145log2145=0.940
而根据Outlook分类
Outlook = sunny时,计算熵值为 − 3 5 l o g 2 3 5 − 2 5 l o g 2 2 5 = 0.971 \begin{aligned}-\frac{3}{5}log_2\frac{3}{5}-\frac{2}{5}log_2\frac{2}{5}\end{aligned} = 0.971 −53log253−52log252=0.971
Outlook=overcast时,熵值为0
Outlook = rainy时,熵值为0.971
根据统计Outlook取值分别为sunny,overcast,rainy的概率分别为 5 14 , 4 14 , 5 14 \begin{aligned}\frac{5}{14},\frac{4}{14},\frac{5}{14}\end{aligned} 145,144,145
那么整体分类后的熵值为,就是分类后的加权熵值为
5 14 × 0.971 + 4 14 × 0 + 5 14 × 0.971 = 0.693 \begin{aligned}\frac{5}{14}\times0.971+\frac{4}{14}\times0+\frac{5}{14}\times0.971 \end{aligned} = 0.693 145×0.971+144×0+145×0.971=0.693
信息增益:系统的熵值从0.940下降到了0.693,增益为0.247
但是此时考虑Outlook的自身的熵值为 − 5 14 × l o g 2 5 14 − 4 14 × l o g 2 4 14 − 5 14 × l o g 2 5 14 = 1.5774 \begin{aligned}-\frac{5}{14}\times log_2\frac{5}{14} -\frac{4}{14}\times log_2\frac{4}{14} -\frac{5}{14}\times log_2\frac{5}{14} = 1.5774\end{aligned} −145×log2145−144×log2144−145×log2145=1.5774
那么此时根据天气分类的信息增益率为gain_ratio = 0.247 1.5774 × 100 % = 15.66 % \begin{aligned}\frac{0.247}{1.5774}\times 100\% = 15.66 \%\end{aligned} 1.57740.247×100%=15.66%
当面对ID3算法存在的问题时候,假设按照ID进行分类时候,显然增益最大,但是此时自身的熵值为
− 14 × 1 14 l o g 2 1 14 = 3.8074 \begin{aligned}-14\times\frac{1}{14}log_2\frac{1}{14}=3.8074\end{aligned} −14×141log2141=3.8074
分类后的熵值为0,那么此时的信息增益为0.940
但是增益率为 0.940 / 3.7074 = 24.69 % 0.940/3.7074 = 24.69\% 0.940/3.7074=24.69%
然后此时来计算信息熵值下降,根据天气、温度、适度,是否有风分类获得的信息增益分别为 0.247 , 0.029 , 0.152 , 0.0489 0.247,0.029,0.152,0.0489 0.247,0.029,0.152,0.0489
然后计算他们各自的熵值,那么对应的他们各自的信息增益率也可以计算得到。
值得注意的是:增益率准则对可取值数目较少的属性有偏好,所以在C4.5算法中并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择出增益率最高的属性。