今天在看大神总结的决策树部分,记录一下读书笔记:
ID3
大神是从决策树比较基础的算法ID3讲起的,为了介绍ID3的思想还介绍了奥卡姆剃刀原则(用较少的东西,来完成同样的事情)。ID3也是基于这样的思想:越是小型的决策树,越优于大的决策树。它用信息增益来作为属性的度量,选择分裂后信息增益最大的属性进行分裂,并采用自顶而下的贪婪搜索遍历所有可能的决策树空间。
借用大神对ID3算法的总结:
- ID3采用自顶而下的贪婪搜索方法来遍历所有可能的决策树空间构造决策树。
- 它是从“选择哪一个属性作为根节点被测试”开始
- 使用统计方法来对每一个属性单独分裂训练集的能力进行测试,也就是计算每个属性单独分裂后的信息增益,选择具有最大信息增益的作为树的根节点
- 选好根节点后,为根节点属性的每一个可能值产生一个分支,并根据分支条件放入训练集。
- 重复这个过程,用每个分支节点关联的训练样例来选取在该点被测试的最佳属性。
熵和信息增益
然后,大神介绍了信息增益的计算方法,信息增益其实是分裂前和分裂后熵的一个差值,反应分裂的水平。那么,熵就是能够表示当前训练集纯度的一个指标。
在计算熵的时候,需要有正反样例的样例集,然后用下面的公式计算“
里面的p+和p-都用正例或负例在训练集占的比例来计算。熵在0到1之间。
对于信息增益,简单的说,一个属性的信息增益就是由于使用这个属性分割训练集导致的期望熵降低。具体说,一个属性A相对于训练集S的信息增益Gain(A,S)被定义为:
C4.5
由于ID3用信息增益作为选择标准,这样会导致倾向于选择有很多值的属性进行分类(因为这样会产生最大的信息增益)。为了克服这个问题,C4.5采用了信息增益率作为选择标准,在考虑信息增益的同时,加入了分裂信息度量来阻碍选择值为均匀分布的属性。信息增益率的定义是这样的:
其中,分裂信息主要度量分裂数据的广度和均匀程度,实际上就是训练集S关于属性A各值的熵。定义如下: