分类是一种重要的数据挖掘技术。分类的目的是根据数据集的特点构造一个分类函数或分类模型(也常常称作分类器),该模型能把未知类别的样本映射到给定类别中的某一个。分类和回归都可以用于预测。和回归方法不同的是,分类的输出是离散的类别值,而回归的输出是连续或有序值。
构造模型的过程一般分为训练和测试两个阶段。在构造模型之前,要求将数据集随机地分为训练数据集和测试数据集。在训练阶段,使用训练数据集,通过分析由属性描述的数据库元组来构造模型,假定每个元组属于一个预定义的类,由一个称作类标号属性的属性来确定。训练数据集中的单个元组也称作训练样本,一个具体样本的形式可为:(u1,u2,……un;c);其中ui表示属性值,c表示类别。由于提供了每个训练样本的类标号,该阶段也称为有指导的学习,通常,模型用分类规则、判定树或数学公式的形式提供。在测试阶段,使用测试数据集来评估模型的分类准确率,如果认为模型的准确率可以接受,就可以用该模型对其它数据元组进行分类。一般来说,测试阶段的代价远远低于训练阶段。(推荐学习:Python视频教程)
为了提高分类的准确性、有效性和可伸缩性,在进行分类之前,通常要对数据进行预处理,包括:
(1) 数据清理。其目的是消除或减少数据噪声,处理空缺值。
(2) 相关性分析。由于数据集中的许多属性可能与分类任务不相关,若包含这些属性将减慢和可能误导学习过程。相关性分析的目的就是删除这些不相关或冗余的属性。
(3) 数据变换。数据可以概化到较高层概念。比如,连续值属性“收入”的数值可以概化为离散值:低,中,高。又比如,标称值属性“市”可概化到高层概念“省”。此外,数据也可以规范化,规范化将给定属性的值按比例缩放,落入较小的区间,比如[0,1]等。
分类算法的种类及特性
分类模型的构造方法有决策树、统计方法、机器学习方法、神经网络方法等。按大的方向分类主要有:决策树,关联规则,贝叶斯,神经网络,规则学习,k-临近法,遗传算法,粗糙集以及模糊逻辑技术。
决策树(decision tree)分类算法
决策树是以实例为基础的归纳学习算法。它从一组无次序、无规则的元组中推理出决策树表示形式的分类规则。它采用自顶向下的递归方式,在决策树的内部结点进行属性值的比较,并根据不同的属性值从该结点向下分支,叶结点是要学习划分的类。从根到叶结点的一条路径就对应着一条合取规则,整个决策树就对应着一组析取表达式规则。1986年Quinlan提出了著名的ID3算法。在ID3算法的基础上,1993年Quinlan又提出了C4.5算法。为了适应处理大规模数据集的需要,后来又提出了若干改进的算法,其中SLIQ (super-vised learning in quest)和SPRINT (scalable parallelizableinducTIon of decision trees)是比较有代表性的两个算法。
贝叶斯分类算法
贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统计知识进行分类的算法。在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算法能运用到大型数据库中,而且方法简单、分类准确率高、速度快。
由于贝叶斯定理假设一个属性值对给定类的影响独立于其它属性的值,而此假设在实际情况中经常是不成立的,因此其分类准确率可能会下降。为此,就衍生出许多降低独立性假设的贝叶斯分类算法,如TAN(tree augmented Bayes network)算法。
更多Python相关技术文章,请访问Python教程栏目进行学习!