数据挖掘算法——C4.5决策树算法
参考博客:
决策树是⼀种逼近离散值⽬标函数的⽅法,学习到的函数被表⽰为⼀棵决策树
根节点包含全部训练样本⾃顶向下分⽽治之的策略
决策树算法以树状结构来表⽰数据的分类结果,每⼀个决策点实现⼀个具有离散输出的测试函数,记为分⽀
根节点
⾮叶⼦节点(代表测试的条件,对数据属性的测试决策点)
叶⼦节点(代表分类后所获得的分类标记)
分⽀(代表测试的结果)
决策树-熵
P(X,Y) = P(X) * P(Y) X和Y两个事件相互独⽴ Log(XY) = Log(X) + Log(Y)
H(X),H(Y)当成它们发⽣的不确定性
P(⼏率越⼤)->H(X)值越⼩如:今天正常上课
P(⼏率越⼩)->H(X)值越⼤如:今天没翻车
我们统计了14天的⽓象数据(指标包括outlook,temperature,humidity,windy),并已知这些天⽓是否打球(play)。如果给出新⼀天的⽓象指标数据:sunny,cool,high,TRUE,判断⼀下会不会去打球。
table 1
outlook temperature humidity windy play贵人多忘事是什么意思
sunny hot high FALSE no
sunny hot high TRUE no
overcast hot high FALSE yes
rainy mild high FALSE yes
rainy cool normal FALSE yes
rainy cool normal TRUE no牛肉怎么烧
overcast cool normal TRUE yes
sunny mild high FALSE no
sunny cool normal FALSE yes
演播室
rainy mild normal FALSE yes
sunny mild normal TRUE yes
overcast mild high TRUE yes
overcast hot normal FALSE yes
no
rainy mild high TRUE
这个问题当然可以⽤求解,分别计算在给定天⽓条件下打球和不打球的概率,选概率⼤者作为推测结果。
现在我们使⽤ID3归纳决策树的⽅法来求解该问题。
预备知识:信息熵
熵是⽆序性(或不确定性)的度量指标。假如事件A的全概率划分是(A1,A2,...,An),每部分发⽣的概率是(p1,p2,...,pn),那信息熵定义为:
通常以2为底数,所以信息熵的单位是bit。
补充两个对数去处公式:
黑豆泡醋的正确做法
ID3算法
构造树的基本想法是随着树深度的增加,节点的熵迅速地降低。熵降低的速度越快越好,这样我们有望得到⼀棵⾼度最矮的决策树。
在没有给定任何天⽓信息时,根据历史数据,我们只知道新的⼀天打球的概率是9/14,不打的概率是5/14。此时的熵为:
属性有4个:outlook,temperature,humidity,windy。我们⾸先要决定哪个属性作树的根节点。
对每项指标分别统计:在不同的取值下打球和不打球的次数。
table 2
outlook temperature humidity windy play
yes no yes no yes no yes no yes no
sunny23hot22high34FALSE6295
overcast40mild42normal61TRUR33
rainy32cool31
下⾯我们计算当已知变量outlook的值时,信息熵为多少。
outlook=sunny时,2/5的概率打球,3/5的概率不打球。entropy=0.971
outlook=overcast时,entropy=0
outlook=rainy时,entropy=0.971
⽽根据历史统计数据,outlook取值为sunny、overcast、rainy的概率分别是5/14、4/14、5/14,所以当已知变量outlook的值时,信息熵为:5/14 × 0.971 + 4/14 × 0 + 5/14 × 0.971 = 0.693
这样的话系统熵就从0.940下降到了0.693,信息增溢gain(outlook)为0.940-0.693=0.247
同样可以计算出gain(temperature)=0.029,gain(humidity)=0.152,gain(windy)=0.048。
gain(outlook)最⼤(即outlook在第⼀步使系统的信息熵下降得最快),所以决策树的根节点就取outlook。
接下来要确定N1取temperature、humidity还是windy?在已知outlook=sunny的情况,根据历史数据,我们作出类似table 2的⼀张表,分别计算gain(temperature)、gain(humidity)和gain(windy),选最⼤者为N1。
依此类推,构造决策树。当系统的信息熵降为0时,就没有必要再往下构造决策树了,此时叶⼦节点都是纯的--这是理想情况。最坏的情况下,决策树的⾼度为属性(决策变量)的个数,叶⼦节点不纯(这意味着我们要以⼀定的概率来作出决策)。
概要
关于决策树
决策树其实是⼀种分类算法,⽬标是将具有P个维度特征的样本n划分到c个类别中: c = f(n); 通过这种分类的过程表⽰为⼀棵树,每次通过选择⼀个特征pi来进⾏分叉。
每个叶节点对应着⼀个分类,⾮叶节点对应着在每个属性上的划分,根据样本在该属性上的不同取值将其划分成若⼲个⼦集。对于⾮纯的叶节点,多数类的标号给出到达这个节点的样本所属的类。
构建决策树的核⼼问题:在每⼀步如何选择适当的属性对样本进⾏拆分。
经营英文
不同的决策树算法有着不同的特征选择⽅案
1、ID3:信息增益
2、C4.5:信息增益率
3、CART: gini系数(基尼系数)ever怎么读
算法描述适⽤
ID3在决策树的各级节点上,使⽤信息增益⽅法作为属性选择标准,来确定⽣成
每个节点时所采⽤的合适属性
适⽤于离散的描述属性
C4.5使⽤信息增益率来选择节点属性,并克服ID3算法的不⾜即适⽤离散的描述属性呦适⽤连续的描述属性
CART是⼀种有效的⾮参数分类和回归⽅法,通过构建树、修建树、评估树来构建
⼆叉树当终结点为连续属性时该树为回归树;当终节点为分类
变量时,即为分类树
实例
决策树-分类.png
数据总结:属性数据4个 = {天⽓,温度,湿度,风速}
类别2个 = {进⾏,取消}
1、类型信息熵
细则
定义:所有样本中各种类别出现的不确定性之和,根据熵的概念,熵越⼤,不确定性就越⼤。需要研究清楚信息就越多。
2、每个属性的信息熵
每个属性信息熵相当于⼀种条件熵。表⽰在某种属性的条件下,各种类别出现的不确定性之和。属性的信息熵越⼤,该属性拥有的样本类型越不“纯”。
3、信息增益
信息增益 = 熵 - 条件熵(信息类别熵 - 属性信息熵);表⽰信息不确定性减少的程度。若是⼀个属性的信息增益越⼤,就表⽰⽤这个属性进⾏样本划分可以更好的减少划分后样本的不确定性。当然,选择该属性就可以更快更好的完成分类⽬标。
信息增益的ID3算法的特征选择指标
耳软4.属性分裂信息度量
通过分裂信息度量来考虑某种属性进⾏分裂时分⽀的数量信息和尺⼨信息,⽽这些信息称之为属性的内在信息。
信息增益率 = 信息增益 / 内存信息,导致属性的重要性随内在信息的增⼤⽽减⼩(换句话说:若是某个属性本⾝的不确定性很⼤,那就不倾向选取它)。是对单纯使⽤信息增益有所补偿
5、信息增益率
IGR(天⽓) = Gain(天⽓) / H(天⽓) = 0.246 / 1.577 = 0.155
IGR(温度) = Gain(温度) / H(温度) = 0.029 / 1.556 = 0.0186
IGR(湿度) = Gain(湿度) / H(湿度) = 0.151 / 1.0 = 0.151
IGR(风速) = Gain(风速) / H(风速) = 0.048 / 0.985 = 0.048
信息增益率
结论
后续
信息熵:体现的是在整个样本数据集中,结果类型或条件属性在对应的结果集中单⼀事件出现不确定性的概率;⽽这个不确定性的结果和对应的结果类型或条件属性存在log的联系;信息的不确定性越⼤,
熵的值也就越⼤; 针对的是⼀元模型的概率
-(同⼀结果类型记录的个数) / (整个样本数据结果类型记录的总数) * log2((同⼀结果类型记录的个数) / (整个样本数据结果类型记录的总数))条件熵:通过多元模型的⽅式来减少⼀元模型中不确定性,或者说降低对应的熵,越低意味着信息的不确定性就越⼩。
条件熵 = -某个条件属性某个类型/总结果记录数 * 该条件属性某个类型的不同细分类的信息熵之和
该条件属性某个类型的不同细分类的信息熵 = 同个属性不同内容类型相对结果类型的信息熵的之和