hjr学习-分类算法:ID3决策树算法

来源:互联网 发布:js代码获取ip地址 编辑:程序博客网 时间:2024/04/28 19:48

  • 信息熵
  • 目的
  • 步骤

信息熵

一件事知道的越多信息熵越小,知道的越少信息熵越大,或者说越出乎意料越不确定信息熵越大。

目的

构造决策树的基本想法是随着树深度的增加,节点的熵迅速地降低。熵降低的速度越快越好,这样我们有望得到一棵高度最矮的决策树。

步骤

1、根据训练数据中已知的分类结果,求先验概率并通过先验概率求分类信息熵。
比如,猜拳我出了3次石头2次布,那么3/5和2/5是前验概率,把前验概率带入E(分类) = -∑p(xi)log(2,p(xi)) (i=1,2,..n) 计算出信息熵。
比如让你预测我接下来出什么,你当前的不确定度就是刚才得到的信息熵,因此,不确定度或者说是信息熵当然越小越好,而构造决策树就是为了降熵。
2、为了降熵,先求各个属性信息熵,先求出
{
E(属性A) =
累加(0到j) count(Aj)/count(A)* (-(p1j*log2(p1j)+p2j*log2(p2j)+p3j*log2(p3j) ))

n=分裂区间数目
count(Aj)=属性A在第j分裂区间出现的次数
count(A)=属性A总记录数(训练数据数)
p1j =count(A1j)/count(Aj) :属性A第j分裂区间中并且是分类1的个数占属性A在第j分裂区间个数的比例
p2j =count(A2j)/count(Aj) :属性A第j分裂区间中并且是分类2的个数占属性A在第j分裂区间个数的比例
p3j =count(A3j)/count(Aj) :属性A第j分裂区间中并且是分类3的个数占属性A在第j分裂区间个数的比例
}
同理求属性B,C,D…
3、分类信息熵与每个属性信息熵相减得信息增益,信息增益大的属性作为树根,即该属性作为树根会使系统的总信息熵下降最快,该属性的分裂区间作为树枝,接下来需要确定剩下的i-1个属性分别在哪个树枝上。
4、根据Ni分裂区间(i=分裂区间数目),统计训练数据中,树根属性处于N1分裂区间的记录,重复之前的1,2,3,4步骤,求其余属性中信息增益最大的属性作为N1节点,再统计训练数据中,树根属性处于N2分裂区间的记录,方法不变,求出N2,N2…节点。
5、每个节点分别以其分裂区间作为树枝,统计训练数据中,同时满足树根树枝与节点树枝的记录,再从去除树根属性与该节点属性之外的属性中求信息增益最大的作为下一层节点,其余的树枝同理,第二层其余的节点也同理,直到在训练数据中,同时满足从树根到一条线上的树枝只有一条记录后,那么这条记录的分类结果就作为该条线上的树枝的树叶。

1 0
原创粉丝点击