继续创作,加速生长!这是我参加「日新计划 10 月更文应战」的第20天,点击检查活动详情
大连海事大学机器学习C4.5决策树试验:完结根本的C4.5提高算法。C4.5是一个根本的决策树分类算法,关于树模型的了解入门有一些参考价值。
一.算法描绘
C4.5算法根本思想:
1.核算类别信息熵
类别信息熵表明的是一切样本中各种类别呈现的不确定性之和。根据信息熵的概念,熵越大,不确定性就越大,把工作搞清楚所需求的信息量就越多。
2.核算每个特点的 条件 熵
每个特点的信息熵相当于一种条件熵。他表明的是在某种特点的条件下,各种类别呈现的不确定性之和。特点的信息熵越大,表明这个特点中拥有的样本类别越复杂。
3.核算增益
信息增益的 = 类别信息熵 – 特点条件熵,它表明的是信息不确定性削减的程度。假如一个特点的信息增益越大,就表明用这个特点进行样本区分能够更好的削减区分后样本的不确定性,当然,挑选该特点就能够更快更好地完结咱们的分类方针。
4.核算特点割裂信息衡量
用割裂信息衡量来考虑某种特点进行割裂时分支的数量信息和尺寸信息,咱们把这些信息称为特点的内涵信息。核算流程等同于核算类别信息熵。
5.核算信息增益率
信息增益率=信息增益 / 割裂信息衡量 ,这样会使特点的重要性跟着内涵信息的增大而减小(也就是说,假如这个特点本身不确定性就很大,那我就越不倾向于选取它),这样算是对单纯用信息增益有所补偿。
while (当时节点未抵达叶子节点)
(1)核算当时节点的类别信息熵Info(D) (以类别取值核算)
(2)核算当时节点各个特点的信息熵Info(Ai) (以特点取值下的类别取值核算)
(3)核算各个特点的信息增益Gain(Ai)=Info(D)-Info(Ai)
(4)核算各个特点的分类信息衡量H(Ai) (以特点取值核算)
(5)核算各个特点的信息增益率IGR(Ai)=Gain(Ai)/H(Ai)
end while
当时节点设置为叶子节点
二.数据描绘
数据类别标签为离散数值,特点值为连续数值。
试验所用五个数据集维度别离为:
liver | 345 *7 |
---|---|
iris | 150*5 |
glasss | 214*10 |
heart | 270*14 |
cleveland | 297*14 |
三.试验流程
1.数据集连续值的离散化:
对每个特点的各值进行遍历,并以其为阈值进行区分并核算信息增益,挑选信息增益最大的阈值进行数据离散化。为了方便后续的处理将其转换为csv文件。
2.读取数据并将类别标签和特点值别离存入lables,data列表
3.核算标签决议特点的信息熵:
4.核算各个特点的条件熵,并求其信息增益
条件熵:
信息增益:
5.核算割裂信息量并求信息增益率:
6.找出信息增益率最大的特点作为决策树的下一节点:
7.选出此特点的下的各个类别并进行筛选,然后开端递归:
8.假如到达叶子节点,或者特点遍历完毕强制到达叶子节点。
四.试验成果
对五个数据集进行C4.5构建决策树规矩后核算正确率,成果如图:
数据集 | 准确率 |
---|---|
liver | 0.7130434782608696 |
iris | 0.7333333333333333 |
glasss | 0.7710280373831776 |
heart | 0.9814814814814815 |
cleveland | 0.9629629629629629 |
五.评论
通过试验成果咱们能够发现决策树C4.5算法关于很多数据集来说体现并不好,只要70多的准确率。可是关于后两个数据集准确率的确惊人的高,体现十分亮眼。
数据集维度与准确率:
数据集 | 维度 | 准确率 |
---|---|---|
liver | 345 *7 | 0.7130434782608696 |
iris | 150*5 | 0.7333333333333333 |
glasss | 214*10 | 0.7710280373831776 |
heart | 270*14 | 0.9814814814814815 |
cleveland | 297*14 | 0.9629629629629629 |
通过对试验的五个数据集维度与准确率的比对发现,数据集的特点越多(列数)决策树相应的准确率会有必定的提高,可是数据集的数据越多其体现作用反而会有必定的下降。
源码地址
gitee