实验4 分类
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4 分类
分类算法是解决分类问题的方法,是数据挖掘、机器学习和模式识别中一个重要的研究领域。分类算法通过对已知类别训练集的分析,从中发现分类规则,以此预测新数据的类别。分类算法的应用非常广泛,银行中风险评估、客户类别分类、文本检索和搜索引擎分类、安全领域中的入侵检测以及软件项目中的应用等等。
Bayes
贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。目前研究较多的贝叶斯分类器主要有四种,分别是:Naive Bayes、TAN、BAN 和 GBN。
1、贝叶斯网络(BayesNet)
贝叶斯网络是一个带有概率注释的有向无环图,图中的每一个结点均表示一个随机变量 , 图中两结点间若存在着一条弧,则表示这两结点相对应的随机变量是概率相依的,反之则说明这两个随机变量是条件独立的。网络中任意一个结点X 均有一个相应的条件概率表Conditional Probability Table,CPT) ,用以表示结点 X 在其父结点取各可能值时的条件概率。若结点 X 无父结点 , 则 X 的 CPT 为其先验概率分布。贝叶斯网络的结构及各结点的 CPT 定义了网络中各变量的概率分布。应用贝叶斯网络分类器进行分类主要分成两阶段。第一阶段是贝叶斯网络分类器的学习,即从样本数据中构造分类器,包括结构学习和 CPT 学习;第二阶段是贝叶斯网络分类器的推理,即计算类结点的条件概率,对分类数据进行分类。这两个阶段的时间复杂性均取决于特征值间的依赖程度,甚至可以是 NP 完全问题,因而在实际应用中,往往需要对贝叶斯网络分类器进行简化。根据对特征值间不同关联程度的假设,可以得出各种贝叶斯分类器。
2、朴素贝叶斯(NaiveBayes)
朴素贝叶斯模型(NBC)发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。同时,NBC 模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。NBC 模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,这给 NBC 模型的正确分类带来了一定影响。在属性个数比较多或者属性之间相关性较大时,NBC 模型的分类效率比不上决策树模型。而在属性相关性较小时,NBC 模型的性能最为良好。
Lazy Learning
相对其它的 Inductive Learning 的算法来说,Lazy Learning 的方法在训练是仅仅是保存样本集的信息,直到测试样本到达时才进行分类决策。也就是说这个决策模型是在测试样本到来以后才生成的。相对与其它的分类算法来说,这类的分类算法可以根据每个测试样本的样本信息来学习模型,这样的学习模型可能更好的拟合局部的样本特性。kNN 算法的思路非常简单直观:如果
一个样本在特征空间中的 k 个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。其基本原理是在测试样本到达的时候寻找到测试样本的 k 临近的样本,然后选择这些邻居样本的类别最集中的一种作为测试样本的类别。在 Weka 中关于 kNN 的算法有两个,分别是 IB1,IBk。IB1 即 1 近邻,IB1 是通过它的一个邻居来判断测试样本的类;IBk 即
K 近邻,IBk 是通过它周围的 k 个邻居来判断测试样本的类别
在样本中有比较多的噪音点是(Noisy points)时,通过一个邻居的效果很显然会差一些,因为出现误差的情况会比较多。这种情况下,IBk 就成了一个较优的选项了。这个时候有出现了一个问题,k 这个值如何确定,一般来说这个 k 是通过经验来判断的。
Trees
即决策树算法,决策树是对数据进行分类,以此达到预测的目的。该决策树方法先根据训练集数据形成决策树,如果该树不能对所有对象给出正确的分类,那么选择一些例外加入到训练集数据中,重复该过程一直到形成正确的决策集。决策树代表着决策集的树形结构。决策树由决策结点、分支和叶子组成。决策树中最上面的结点为根结点,每个分支是一个新的决策结点,或者是树的叶子。每个决策结点代表一个问题或决策,通常对应于待分类对象的属性。每一个叶子结点代表一种可能的分类结果。沿决策树从上到下遍历的过程中,在每个结点都会遇到一个测试,对每个结点上问题的不同的测试输出导致不同的分支,最后会到达一个叶子结点,这个过程就是利用决策树进行分类的过程,利用若干个变量来判断所属的类别。
1、Id3 即决策树 ID3 算法
ID3 算法是由 Quinlan 首先提出的。该算法是以信息论为基础,以信息熵和信息增益度为衡量标准,从而实现对数据的归纳分类。
2、J48 即决策树 C4.5 算法
C4.5 算法一种分类决策树算法 , 其核心算法是 ID3 算法。C4.5 算法继承了 ID3 算法的优点,并在以下几方面对 ID3 算法进行了改进:
(1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;
(2) 在树构造过程中进行剪枝;
(3) 能够完成对连续属性的离散化处理;
(4) 能够对不完整数据进行处理。
C4.5 算法有如下优点:产生的分类规则易于理解,准确率较高。其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。
Rule
1、Decision Table 即决策表。决策表 (Decision Table),是一中使用表的结构,精确而简洁描述复杂逻辑的方式。
2、JRip 即 RIPPER 算法
规则归纳学习从分类实例出发能够归纳出一般的概念描述。其中重要的算法为 IREP 算法和 RIPPER 算法。重复增量修枝(RIPPER)算法生成一条规则,随机地将没有覆盖的实例分成生长集合和修剪集合,规定规则集合中的每个规则是有两个规则来生成:替代规则和修订规则。
Meta
1、AdaBoostM1 即 AdaBoosting 算法
Adaboost 是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。
2、Bagging 即 Bagging 方法
Bootstrps bagging boosting 都属于集成学习方法,将训练的学习器集成在一起。原理来源于 PAC 学习模型(Probably Approximately CorrectK)。其中的 Bagging 是 bootstrap aggregating 的缩写,是最早的 Ensemble 算法之一,它也是最直接容易实现,又具有不错的效果的算法之一。Bagging 中的多样性是由有放回抽取训练样本来实现的,用这种方式随机产生多个训练数据的子集,在每一个训练集的子集上训练一个同种分类器,最终分类结果是由多个分类器的分类结果多数投票而产生的。
实验内容:
1、使用不同的分类算法对数据集进行分类。
2、通过各种不同的可视化选项观察分类结果(Visualize...)。
WEKA可以支持文本分类。只要输入一个文件目录,WEKA即可生成对应的ARFF文件,进而直接用WEKA自带的分类器进行预测。但是WEKA只提供训练集的训练功能,而不提供预测测试集。由于训练过程会打乱样本,所以也不能通过训练集跟测试集一起提取特征再抽取出测试集的方法进行测试。另外特征提取方法只有TF/IDF方法。
初始化数据
在GUI版本的WEKA当中,只能读入ARFF格式的文件。以文件目录为输入,生成ARFF文件只能通过命令行或者自行编码。把文本数据转化成ARFF文件需要两步:
1、TextDirectoryLoader
java weka.core.converters.TextDirectoryLoader -dir text_example > text_example.arff
该方法只能通过命令行实现。如果是在windows下,要首先在环境变量里加入weka.jar的位置,再在cmd里敲入命令行。