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、每个节点分别以其分裂区间作为树枝,统计训练数据中,同时满足树根树枝与节点树枝的记录,再从去除树根属性与该节点属性之外的属性中求信息增益最大的作为下一层节点,其余的树枝同理,第二层其余的节点也同理,直到在训练数据中,同时满足从树根到一条线上的树枝只有一条记录后,那么这条记录的分类结果就作为该条线上的树枝的树叶。
- hjr学习-分类算法:ID3决策树算法
- ID3分类决策树算法
- 决策树分类算法之ID3
- 分类算法-决策树之:id3 算法
- 决策树分类算法-ID3算法原理
- 【机器学习】分类算法:决策树(ID3、C4.5、CART)
- 【机器学习算法模型】分类决策树——ID3
- 机器学习算法-决策树ID3
- 机器学习--决策树(ID3)算法
- 机器学习-决策树 ID3算法
- 文本分类算法之决策树.ID3实现
- 决策树ID3分类算法的C++实现
- 数据挖掘--分类之决策树算法ID3
- 决策树ID3分类算法的C++实现
- 分类算法-----决策树(包括ID3,C4.5)
- 决策树分类ID3算法的Python实现
- 决策树分类算法:ID3 & C4.5 & CART
- 分类算法之决策树ID3详解
- swftools 中文内容丢失问题解决
- MySQL存储过程详解 mysql 存储过程
- 理解Java与Android中线程与线程池的原理和使用
- Java 之 BigDecimal类学习
- Java内部类详解
- hjr学习-分类算法:ID3决策树算法
- 匿名者Anonymous 十项大事记
- 用Makefile取代CodeWarrior IDE编译K60 的应用程序
- Intellij IDEA Tomcat 启动报错, Unable to ping server at localhost:1099
- IOS开源库一览表
- AOP详解
- shell中exec解析
- CSS3 实现 Loading 动画
- Ubuntu14.04 下 OpenCV3 安装