机器学习:决策树ID3、C4.5和CART

决策树又称为判定树,是运用于分类的一种树结构,其中的每个内部节点代表对某一属性的一次测试,每条边代表一个测试结果,叶节点代表某个类或类的分布。决策树的决策过程需要从决策树的根节点开始,待测数据与决策树中的特征节点进行比较,并按照比较结果选择选择下一比较分支,直到叶子节点作为最终的决策结果。

常见的决策树有ID3、C4.5和CART
ID3以信息增益度量属性选择(选择信息增益最大的属性作为分裂属性)、C4.5以信息增益率度量属性选择(选择信息增益率最大的属性作为分裂属性)、CART用gini系数度量属性选择(选择基尼系数最小的属性作为分裂属性、基尼系数越大,样本的不确定性越大)

1、ID3

1.1、计算公式
1)计算类别信息熵
在这里插入图片描述
类别信息熵表示所有样本中各类别出现的不确定性,熵越大、不确定性越大
2)计算属性信息熵
在这里插入图片描述
属性信息熵表示在某种属性的条件下,各类别出现的不确定性之和,属性信息熵越大,表示这个属性拥有的样本类别越不纯
3)计算信息增益
在这里插入图片描述
信息增益表示不确定性减少的程度,如果一个属性的信息增益越大,就表示用这个属性进行样本划分可以更好的减少划分后样本的不确定性,也就是说,选择信息增益大的属性可以更快的完成分类任务,但如果每个属性中每种类别都只有一个样本,那么属性的信息熵为0,根据信息增益无法选择出有效的分类特征,C4.5选择信息增益率来对ID3进行改进。
1.2、ID3的缺点:
1、没有剪枝过程,为了去除过渡数据匹配的问题,可通过裁剪合并相邻的无法产生大量信息增益的叶子节点;
2、信息增益的方法偏向选择具有大量值的属性,也就是说某个属性特征索取的不同值越多,那么越有可能作为分裂属性,这样是不合理的;
3、只可以处理离散分布的数据特征;
4、没有考虑缺失值的情况;

2、C4.5

2.1计算公式
1)计算类别信息熵
在这里插入图片描述
2)计算属性信息熵
在这里插入图片描述
3)计算信息增益
在这里插入图片描述
4)计算属性分裂度量
在这里插入图片描述
用分裂信息度量考虑某种属性进行分裂是分支的数量信息和尺寸信息,把这些信息称为内在信息
5)计算信息增益率
在这里插入图片描述
(选择具有最大信息增益率的属性作为分裂属性)
信息增益率会导致属性的重要性随着信息增益率的增大而减小,也就是说‘如果这个属性本身的不确定性很大,就不倾向于选它

2.2、C4.5的优缺点:
优点:产生的分类规则易于理解,准确率高;
缺点:
在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,导致算法低效;
只能用于分类;
涉及大量的对数运算;

2.3、连续变量离散化,如何选择连续变量的分割阈值?
把需要处理的样本属性按照连续变量的大小,从小到大进行排序,假设该属性有N个,那么总共有N-1个可能的获选分割阈值点,每个候选的分割阈值点的值为上述排序后的属性值列表中两两前后连续元素的中点,从这N-1个候选阈值点中选择出一个增益最大的作为分割阈值。

2.4、连续属性的改进:
相对于那些离散值属性,分类树算法倾向于选择那些连续值属性,因为连续值属性会有更多的分支,熵增益也最大。算法需要克服这种倾向。利用增益率来克服这种倾向。增益率也可以用来克服连续值属性倾向。增益率作为选择属性的依据克服连续值属性倾向,这是没有问题的。但是如果利用增益率来选择连续值属性的分界点,会导致一些副作用。分界点将样本分成两个部分,这两个部分的样本个数之比也会影响增益率。根据增益率公式,我们可以发现,当分界点能够把样本分成数量相等的两个子集时(我们称此时的分界点为等分分界点),增益率的抑制会被最大化,因此等分分界点被过分抑制了。子集样本个数能够影响分界点,显然不合理。因此在决定分界点是还是采用增益这个指标,而选择属性的时候才使用增益率这个指标。这个改进能够很好得抑制连续值属性的倾向。当然还有其它方法也可以抑制这种倾向,比如MDL

2.5、为减少过拟合风险,采用剪枝技术(前剪枝和后剪枝)
前剪枝:控制决策树的生长
后剪枝:对完全生成的决策树进行修剪

2.6、ID3有四个不足,C4.5针对这四个不足进行改进
(1)ID3的第一个不足:不能处理连续型特征
C4.5的思路是将连续型特征离散化,比如有m个样本的连续型特征A有m个,从小到大进行排列,取相邻两个样本值的平均值,一共有m-1个分割点,分别计算以这些分割点作为二分类时的信息增益,选择信息增益最大的点作为该连续型特征的分割点。
(2)ID3的第二个不足:当每种属性中每个类别都只有一个样本时,信息增益为0
C4.5的改进:使用信息增益率作为特征选择的评价标准,选择信息增益率最大的属性作为分裂属性。
(3)ID3的第三个不足:没有考虑缺失值
C4.5的改进:对缺失值进行填充,或者丢弃含有缺失值的样本,或者给属性的每个可能值赋予一个概率。
(4)ID3的第四个不足:没有考虑过拟合
C4.5的改进:采用剪枝方法来防止过拟合

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split

# 载入数据
iris = load_iris()

# 样本特征
x = iris.data
# 样本标签
y = iris.target

# 划分训练集、测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=2)

# 决策树、使用entropy作为评价标准,当然也可以使用gini系数
dt = DecisionTreeClassifier(criterion='entropy')

# 训练
dt.fit(x_train, y_train)

# 预测
y_pred = dt.predict(x_test)

# 评估
print(accuracy_score(y_pred, y_test))

3、CART

在ID3算法中使用了信息增益来选择特征,信息增益大的优先选择。在C4.5算法中,采用了信息增益率来选择特征,以减少信息增益容易选择特征值多的特征的问题。但是无论是ID3还是C4.5,都是基于信息论的熵模型的,这里面会涉及大量的对数运算。CART分类树算法使用基尼系数来代替信息增益率,基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(比)是相反的。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值