weka使用ID3和C4.5算法 分类实验

使用weka做分类任务并建立相应决策树(ID3算法和C4.5算法)

  1. weka安装
  2. 相关知识理论
    2.1 决策树
    2.2 ID3算法
    2.3 C4.5算法
  3. 分类实验
    3.1 数据处理
    3.2 使用ID3算法
    3.3 使用C4.5算法
    3.4 ID3和C4.5的比较
  4. 总结

1.weka安装
weka官网Download地址:
https://www.cs.waikato.ac.nz/ml/weka/downloading.html
注意有带java环境和不带java环境的版本,如果电脑中有JRE环境选择后者安装。
2.相关理论知识
2.1 决策树
决策树是一种特殊的树形结构,一般由节点和有向边组成。其中,节点表示特征、属性或者一个类。而有向边包含有判断条件。决策树从根节点开始延伸,经过不同的判断条件后,到达不同的子节点。而上层子节点又可以作为父节点被进一步划分为下层子节点。一般情况下,我们从根节点输入数据,经过多次判断后,这些数据就会被分为不同的类别。这就构成了一颗简单的分类决策树。分类树的输出是一个标量,而回归树的一般输出为一个实数。
决策树学习三个阶段:特征选择、树的生成、树的修剪
特征选择:特征选择是指从训练数据中众多的特征中选择一个特征作为当前节点的分裂标准,如何选择特征有着很多不同量化评估标准标准,从而衍生出不同的决策树算法。
决策树生成: 根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止生长。 树结构来说,递归结构是最容易理解的方式。
剪枝:决策树容易过拟合,一般来需要剪枝,缩小树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种。
2.2 ID3算法
ID3算法中根据信息论的信息增益评估和选择特征,每次选择信息增益最大的特征做判断模块。ID3算法可用于划分标称型(离散型)数据集(需手动用工具转换),没有剪枝的过程,为了去除过度数据匹配的问题,可通过裁剪合并相邻的无法产生大量信息增益的叶子节点(例如设置信息增益阀值)。使用信息增益的话其实是有一个缺点,那就是它偏向于具有大量值的属性–就是说在训练集中,某个属性所取的不同值的个数越多,那么越有可能拿它来作为分裂属性,而这样做有时候是没有意义的,另外ID3不能处理连续分布的数据特征,于是就有了C4.5算法。
2.3 C4.5算法
C4.5是ID3的一个改进算法,继承了ID3算法的优点。C4.5既可以处理离散型属性,也可以处理连续性属性(本质还是先转换为离散的再处理)。C4.5算法用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足在树构造过程中进行剪枝;能够完成对连续属性的离散化处理;能够对不完整数据进行处理。C4.5算法产生的分类规则易于理解、准确率较高;但效率低,因树构造过程中,需要对数据集进行多次的顺序扫描和排序。
ID3算法的信息论基础–信息熵、信息增益 等知识在本文最下方的参考文献中。
3. 分类实验
3.1 数据处理
根据自己的数据,再结合这个步骤来。
打开weka,选择explorer模式,导入要求格式的训练集数据。
3.1.1 remove无用属性信息(特征选择)
选择与分类标准无关属性,点击remove。
weka使用ID3和C4.5算法 分类实验_第1张图片
3.2 使用ID3算法
1)选择Classify,选择ID3算法。
若发现ID3是灰的不能选,几个原因:
(1)未导入ID3算法包;
选择一开始打开weka的GUI界面,点击Tools->Package Manager->需下载包。(有些忘了哪个包。。。)
(2)若还是灰色,ID3算法要求属性都是离散型变量,看你的数据是否符合要求,否则选择连续型数据将其离散化;
choose->supervised->attribute->Discretize.
choose离散化后结果:
weka使用ID3和C4.5算法 分类实验_第2张图片
(3)若还是灰色,就是缺失值问题,ID3算法也要求不能有缺失值!
choose->unsupervised->attribute->ReplaceMissingValues
这里写图片描述
2)这时选择分类时,ID3算法已经可以点击了,选择ID3算法,选择交叉验证或者使用自己的测试集,点击start,可得到决策树及准确率结果。
weka使用ID3和C4.5算法 分类实验_第3张图片
3.3 使用C4.5算法
C4.5即J48一样,选择J48,可以点击choose右边的J48,弹出的框可设置置信因子及其他参数,然后点击start,可得到决策树及结果。
weka使用ID3和C4.5算法 分类实验_第4张图片
3.4 ID3和C4.5的比较
1、 在得到结果的左下角可看到每次实验结果,ID3没有可视化的树,但是C4.5可生成可视化树(右击选择Visualize tree)。原因好像是C4.5中封装了这个功能,ID3没有里边的方法没有实现,可利用代码实现。
2、C4.5比ID3算法准确率更高,选择该算法更好。
4.总结
C4.5比ID3算法准确率更高,数据预处理也有一定的关系,当数据处理的足够好时,可能ID3算法比C4.5准确率高。

本实验只是熟悉weka用法及入门级知识,以分类实验为例,过程中数据处理粗糙可先不用深究,有任何错误及good idea感谢留言。

你可能感兴趣的:(weka)