决策树算法-ID3、C4.5

1、实验目的

  1. 掌握实验对比分析至少ID3和C4.5分类算法的原理;

  2. 对整个实验过程进行编码实现。

2、实验步骤

 1、按照算法的原理设计两个算法的执行过程。

  两个算法的都是决策树生成算法,以信息论的信息熵作为基础,前者以信息增益度作为属性测试条件,后者以信息增益比作为属性测试条件,从中选择增益最大的属性对训练集进行分裂,从而实现对数据的归纳分类。两者在算法实现上大致相同,只是区分最大属性的划分不同。

 2、加载car数据集并进行数据清洗工作。

  car整个数据集有1728条数据,每个数据由6个条件和一个分类组成,为了方便我们后续利用python的工具来进行快速的计算,我们可以先将其转化内csv的数据集格式,方便进行加载。而且数据集中存在许多的英文属性字段,需要转换为数值字段来处理。

 3、设置不同的测试用例来分类两个算法。

  抽取样本数据随机10条数据作为测试数据集,分别对两个算法进行分类,观察对比最终的预测结果。

 4、将算法最终的比对数据交由图形进行展示。

 2.1、算法原理

 1、ID3算法原理

  算法使用信息增益最大来作为子树的划分条件,首先计算出信息增益最大的属性,然后拔当前样本集划分为多个子集,每个子集由重复上诉的动作进行数据集的划分,一直进行到所子集仅包含同一类型的数据为止。最后得到一棵决策树来进行新的样例的类别预测。步骤中的信息熵。信息增益由公式可快速的计算,总的来说就是当前样本属性在已推测的分类中的概率的对数值的加权平均数。

 2、C4.5算法原理

  算法同前者步骤大概类似,只是在进行主属性的划分时使用的是信息增益比,也就是还需要多计算一步增益比,增益比为当前属性条件下的信息增益同在当前属性下的信息熵的比值,计算得到的最大信息增益比即为划分的主属性,然后根据ID3一样的步骤进行后续的算法推理。

2.2、算法步骤

 1、ID3算法步骤

  • 第一步计算样本集的信息熵。

  • 第二步计算样本集在特征下的条件熵。

  • 第三步计算样本集关于所有特征的信息增益,选择增益最大的特征进行分裂。

  • 第四步如果被分裂的特征有n个取值,则将子节点划分为n个节点。

  • 重复以上步骤直至不能再划分子节点。

 2、C4.5算法步骤

  • 第一步计算样本集的信息熵。

  • 第二步计算样本集在特征下的条件熵。

  • 第三步计算样本集关于所有特征的信息增益。

  • 第四步计算信息增益比,选择增益比最大的特征进行分裂。

  • 第五步如果被分裂的特征有n个取值,则将子节点划分为n个节点。

  • 重复以上步骤直至不能再划分子节点。

 2.3、程序流程图

C4.5.png

3、实验结果分析(附实验过程结果截图)

  由实验过程和结果分析可得,两个决策树算法的性能上面没有太大的区别,C4.5的预测准确度较之ID3高一点点,但不知道是不是测试集选择的原因导致的,总体上后者的效果要好一点,但是并不明显。而且预测出错的节点信息的都类似,这就不得不考虑他们之间相似的算法实现结构了。 id3.png

4、实验结论 

      两个算法在性能上的差距很小,在预测上面的错误率也差不多。整体实现了构造决策树和用决策树推理的算法,验证了决策树分类算法的正确性。在构造树的过程中需要多次对数据集进行扫描和排序,因而导致算法的低效,只适用于能够驻留在内存的数据集,当数据集大的无法在内存容纳是程序无法运行。

5、实验心得体会

      经过这次实验,我收获了很多,一方面加深了两个算法的知识与知识的应用,另一方面还提高了自我动手做项目的本事。在实验中我学到了许多新的知识,通过对两个算法进行算法比较,更加深刻地认识到算法的执行过程,增强对决策树算法的理解,同时也锻炼了对于编码的实操能力。理解了ID3和C4.5构建决策树的主属性的选择过程,更加明白了信息熵等计算公式的含义。

参考文献

       1、数据仓库与数据挖掘

猜你喜欢

转载自juejin.im/post/7104996468028604447