【数据挖掘】C3.0、C4.5、CART算法

小白学数据,只为记录学习进程,对每个问题有新的理解会及时更正。

1.引入熵的概念:
计算集合中,所有数据的熵
【数据挖掘】C3.0、C4.5、CART算法_第1张图片
D表示整个集合,pk表示第k类分类的数据所占的比例,熵越大,表示集合D越混乱,越小表示集合越纯。一般熵介于0,1之间。

2、引入条件熵
在这里插入图片描述
p(xi)表示属性x,是xi属性的数据所占比列,Entropy(Y|xi)表示在属性是xi的前提下,Y的信息熵

3、信息增益
【数据挖掘】C3.0、C4.5、CART算法_第2张图片
信息增益 = 集合D的信息熵 - 属性X下的条件信息熵
表示决策树在属性X下的信息熵减少的程度

4、C3.0算法
选择信息增益最大的属性作为优先划分的属性,选择好划分之后,再计算新的信息增益,在选择第二个属性。。。。直到划分结束。

但此方法,会倾向选择划分属性较多的特征,比如把每一条数据加上编号,这个编号如果作为划分标准,则每一个划分集合只有一个,则条件信息熵为0,这时候信息增益最大,但是这是没有意义的划分。所以我们引入了C4.5算法

C3.0算法缺点:
(1)、倾向选择划分属性较多的特征
(2)、不能处理连续值的情况
(3)、当属性缺失的时候,没法处理

5、C4.5算法
基于C3.0的局限性,引入信息增益率:
【数据挖掘】C3.0、C4.5、CART算法_第3张图片
Gain(D,a)表示在属性a的前提下,D的信息增益,IV(a)表示,属性a的熵,计算方法和Entropy一样。
这时候,当划分属性很多时候,IV(a)会变大,导致信息增益率变小,所以,在选用C4.5算法倾向选择划分属性少的特征。

在C4.5算法选择属性的时候,先选择信息增益大于均值的特征(保证了划分的有效性),再在选出的特征中选择信息增益率最大的特征(避免了过多特征带来的无效划分)。

当处理的属性是连续的属性的时候,先把值按照从小到大的顺序排列,然后取相邻两个值的中值作为划分点,再分别计算每个划分点下的信息增益,选择信息增益最大的那个划分点,作为这个属性的二分点。

C4.5算法优点
(1)、解决了倾向于属性较多的划分
(2)、可以处理缺失值
1.当建立模型时候,怎么确定这个属性的信息增益和增益率:(计算没有缺失的比列 )* (没有缺失值的信息增益和信息增益率)来当作信息增益(率)
2.当属性选取好了,样本的属性缺失:将样本以不同概率分配到各个属性中,概率更具其他未缺失的数据得出
3.当预测数据的值缺失:遍历缺失值底下的所有情况,选择概率最大的值作为最后划分。
(3)、可以处理连续值
(4)、可以进行剪枝
1、先剪枝:当目前的数据集中的样本数量小于给定阈值,则不再分裂;当目前的数据集中的信息熵小于给定阈值,则不再分裂;
2、后剪枝:先得到全部分裂的树,再假设再某个节点不再分裂,通过计算是否分裂的错误率来决定是否剪枝,参考后剪枝判断

6、CART算法
CART采用基尼系数来当作选择划分属性的标准:
【数据挖掘】C3.0、C4.5、CART算法_第4张图片
在属性a的前提下,基尼系数为:
在这里插入图片描述
因为基尼系数没有采用相减这个操作,所以,选用基尼系数小的特征来当作划分特征。同时,基尼系数产生的树是二叉树,不是多叉树。

当处理的属性是连续的属性的时候,先把值按照从小到大的顺序排列,然后取相邻两个值的中值作为划分点,再分别计算每个划分点下的基尼系数,选择基尼系数最小的那个划分点,作为这个属性的二分点。

你可能感兴趣的:(数据挖掘)