C4.5(weka⼜称为J48)算法原理详解
1. 信息增益率
ID3算法有以下⼏个缺点:
1个属性取值越多,则此属性的信息增益率越⼤,越有可能被ID3选为当前分类属性。然⽽取值较多的属性并不⼀定最优。(例如⼀个属性的每个⼦节点都只有1个样本,此时信息增益率达到最⼤,但是⽤这样的属性却没有任何意义)
ID3只能处理离散型属性
可以处理缺失数据
可以对树进⾏剪枝
针对ID3算法的不⾜,Quinlan⼜提出了C4.5,C4.5算法采⽤信息增益率来取代信息增益作为当前最优决策属性的度量标准。
仍然选择weka中天⽓的数据集为例⼦:镇江培训网
中文转换日文
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
charmer
overcast cool normal TRUE yes
sunny mild high FALSE no
renresunny cool normal FALSE yes
rainy mild normal FALSE yes
sunny mild normal TRUE yes
overcast mild high TRUE yes
overcast hot normal FALSE yes
rainy mild high TRUE no
1.1 计算属性outlook的信息增益:
1.2 计算分裂信息(SplitInfo)来将信息增益规范化
⼀个属性取值情况越多,越⼤,实际我们需要属性的越⼩越好
通过Outlook将样本分为以下⼏个部分:
allen什么意思故 为:tuber
同理计算其他属性的
1.3 计算属性的信息增益率
IGR: Information Gain Ratio,即信息增益率
由此可见,属性信息增益率越⼤,故第⼀步选择该属性为分类属性。在分裂之后的⼦节点中,如果该⼦节点只有⼀种,则停⽌继续分类。否则重复上述步骤,继续分裂下去。
1.4 C4.5算法总结
选择(信息增益率)作为算法中(信息增益)的代替来选择更好的分类属性:
然后⽤此公式遍历每个属性,选择 最⼤的属性作为当前的分类属性来产⽣树。对于分类不纯的节点,继续重复上述⽅法选择其他属性继续分类。
2. C4.5处理连续型属性
对于连续型属性,C4.5先把它当转换成离散型属性再进⾏处理。本质上属性取值连续,但对于有限的采
gotvchela是什么意思样数据它是离散的。例如某连续型属性有N个不同取值,则有N-1种离散化的⽅法: <=的分到左⼦树, >的分到右⼦树,然后计算N-1种情况下最⼤的信息增益率。
对于离散型属性只需计算1次信息增益率,但连续型属性却需要计算N-1次。为了减少计算量,可对连续属性先进⾏排序,在只有label发⽣变化的地⽅才需要切开。⽐如:
原本需要计算13种情况,现在仅需计算7种。
+ 利⽤信息增益率来选择连续值属性的分界点存在的问题
由于C4.5对于连续值属性,每次选取⼀个分裂点进⾏分裂,即⼆分裂。此时
假设分裂结果为
⽽
当 的时候 达到最⼤值 (具体计算过程省略)。越⼤, 就越⼩。故⽽等分分界点被抑制。此时⼦集样本个数能够影响分界点,显然不合理。因此在决定分界点时,还是采⽤了信息增益这个指标,⽽在选择具体属性的时候才选择信息增益率这个指标。(注意选择分裂点和选择具体属性的区别)
对于离散型属性,C4.5⼀次进⾏分裂后,后续不再使⽤该属性。但是对于连续型属性,由于进⾏的是⼆分裂,故下⼀次分裂可能还会继续⽤到该属性。例如:
连续属性attr1会被⽤到多次。
3. C
4.5处理缺失数据
3.1 缺失属性的增益值和增益率求解
3.1.1 离散型属性
字母符号仍然以下表为例说明:
Day Outlook Temperature Humidity Wind play D1Sunny Hot High Weak No D2?Hot High Strong No D3??High?Yes D4Rain Mild High Weak Yes D5Rain Cool?Weak Yes D6Rain Cool Normal Strong No D7Overcast Cool Normal Strong Yes D8?Mild High?No D9?Cool Normal Weak Yes D10??Normal?Yes D11?Mild Normal?Yes D12Overcast Mild?Strong Yes D13Overcast Hot?Weak Yes D14Rain Mild High Strong No
以属性为例,共有14个样本,其中6个样本值缺失,8个样本()不缺失。⾸先计算信息增益
原始信息熵为:(8个⽆缺失值样本, 5个yes, 3个no)
属性outlook的信息熵为(只计算属性不为空的样本):
属性outlook的信息增益为:
计算属性outlook的,此时将缺失值当作⼀种单独的属性: 属性outlook的信息增益率为
3.1.1 连续型属性
以下表为例进⾏说明:
后⾯的计算步骤与上⾯完全相同,此处省略
3.2 将含有缺失值的样本分配给⼦节点