机器学习之ID3算法原理

   最近在学习机器学习十大算法,参考了许多博客,然后自己整理了一下。机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。 数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。

目录

一、决策树概述

二、ID3算法

1.信息熵(Information Entropy)

2.条件熵(Conditional Entropy)

3.信息增益(Information Gain)

4.ID3算法与决策树流程

三、实例

1.计算先验信息熵

2.分别计算决策属性的条件熵

3.计算信息增益


一、决策树概述

决策树 具有树形的结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。

                                   

                                                                            图1 PlayTennis决策表

分类树是一种十分常用的将决策树应用于分类的机器学习方法。他是一种监管学习,所谓监管学习就是给定一堆样本,每个样本都有一组属性(特征)和一个类别(分类信息/目标),这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类。 

其原理在于,每个决策树都表述了一种树型结构,它由它的分支来对该类型的对象依靠属性进行分类。每个决策树可以依靠对源数据库的分割进行数据测试。这个过程可以递归式的对树进行修剪。 当不能再进行分割或一个单独的类可以被应用于某一分支时,递归过程就完成了。

机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。从数据产生决策树的机器学习技术叫做决策树学习, 通俗说就是决策树。

目前常用的决策树算法有ID3算法、改进的C4.5算法和CART算法。

决策树的特点 
    1.多层次的决策树形式易于理解;
    2.只适用于标称型数据,对连续性数据处理得不好;


二、ID3算法

ID3算法以信息论为基础,其核心是“信息熵”。ID3算法通过计算每个属性的信息增益,认为信息增益高的是好属性,每次划分选取信息增益最高的属性为划分标准,重复这个过程,直至生成一个能完美分类训练样例的决策树。

1.信息熵(Information Entropy)

熵度量了信息的不确定性,事物的不确定性越大,它的熵越高。 表达式如下:

                                               H(x) = -\sum_{i=1}^{n} p(x_{i})\log_{2} p(x_{i})

其中,p({x_{i}})表示{x_{i}}出现的概率,n表示x的不同取值

2.条件熵(Conditional Entropy)

条件熵类似于条件概率,它度量了X在知道Y以后剩下的不确定性,表达式如下 :

                                          H\left ( X|Y \right )= \sum_{i=1}^{n}p(y_{i})H(X|y_{i})=-\sum_{i=1}^{n}p( y_{i})\sum_{j=1}^{m}p(x_{j}|y_{i}\)log p\left ( x_{j}|y_{i}\right )

特征Y取值为yj,

3.信息增益(Information Gain)

它度量了X在知道Y以后不确定性减少程度,信息论中称作互信息(Mutual Information),记为I(X;Y)。

                                       I\left ( X;Y \right )= H(x)-H(X|Y)=H(x)-\sum_{t\in T}p\left ( t \right )H\left ( t \right )

t表示划分之后的分支集合,p(t)表示该分支集合在原本的父集合中出现的概率,H(t)表示该子集合的信息熵

下图表现出信息熵,条件熵,信息增益,联合熵之间的关系

                                      

4.ID3算法与决策树流程

(1)数据准备:需要对数值型数据进行离散化 
(2)ID3算法构建决策树:

  •    如果数据集类别完全相同,则停止划分
  •    否则,继续划分决策树: 
    • 计算信息熵和信息增益来选择最好的数据集划分方法
    •  划分数据集
    • 创建分支节点:
    •  对每个分支进行判定是否类别相同,如果相同停止划分,不同按照上述方法进行划分

三、实例

 图一所示为是否PlayTennis的决策表

1.计算先验信息熵

 在没有接收到其他的任何的属性值时候,活动进行与否的熵根据下表进行计算。

                      

                                       H(PlayTennis)=-\frac{5}{14}\log \frac{5}{14}-\frac{9}{14}\log \frac{9}{14}=0.94

2.分别计算决策属性的条件熵

(1) 计算已知Outlook下活动是否进行的条件熵(已知Outlook下对于活动的不确定性) 

                    

     1)先计算后验墒

H(PlayTennis|Overcast)=-p(yes|Overcast)\log p(yes|Overcast)-p(no|Overcast)\log p(no|Overcast)=0

H(PlayTennis|Rainy)=-p(yes|Rainy)\log p(yes|Rainy)-p(no|Rainy)\log p(no|Rainy)=-\frac{2}{5}*\log\frac{2}{5}- \frac{3}{5}*\log\frac{3}{5}=0.971

   H(PlayTennis|Sunny)=-p(yes|Sunny)\log p(yes|Sunny)-p(no|Sunny)\log p(no|Sunny)=0.971                      

2)在计算条件熵: 

           H(PlayTennis|Outlook)=\frac{4}{14}H(PlayTennis|Overcast)+\frac{5}{14}H(PlayTennis|Rainy)+\frac{5}{14}H(PlayTennis|Rainy) =0.693
 (2)计算已知Temperature时对活动的条件熵(不确定性) 

                    

                 方法同上,结果为H(PlayTennis|Temperature)=0.911

 (3)计算已知Humidty时对活动的条件熵(不确定性)  

                    

                   求得,H(PlayTennis|Temperature)=0.789 

(4)已知Wnid下对于活动是否进行的条件熵(不确定性) 

                   

                    求得,H(PlayTennis|Wind)=0.892

3.计算信息增益

\small I(PlayTennis;Outlook)=H(PlayTennis)-H(PlayTennis|Outlook)=0.246

\small I(PlayTennis;Temperature)=H(PlayTennis)-H(PlayTennis|Temperature)=0.029 

I(PlayTennis;Humidty)=H(PlayTennis)-H(PlayTennis|Humidty)=0.151 

I(PlayTennis;Wind)=H(PlayTennis)-H(PlayTennis|Wind)=0.048 

所以选择天气作为第一个判别因素 

          

    在选择了Outlook作为第一个判别因素之后,针对上图的中间的三张子表来说,第三张子表在选择Humidty作为划分数据的特征的时候,分类问题可以完全解决:Humidty为Normal的情况下yes,Humidty为High的时候为no(在Outlook状态为Sunny的条件下);第一个子表不需要划分,即,Outlook为Overcast的情况下不管其他的因素是什么,均为yes;第二张子表当选择Wind作为划分的特征时,分类问题也完全解决:Wind为Weak的时候进行yes,Wind为Strong的时候为no(在天气状况为Rainy的条件下)。

    最终得到的决策树如下图所示:

           

参考文章:https://blog.csdn.net/moxigandashu/article/details/71305273 

参考文章:https://blog.csdn.net/robin_Xu_shuai/article/details/74011205 

  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值