【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!
[返回Spark教程首页]
分类算法概述
分类是一种重要的机器学习和数据挖掘技术。分类的目的是根据数据集的特点构造一个分类函数或分类模型(也常常称作分类器),该模型能把未知类别的样本映射到给定类别中的一种技术。
分类的具体规则可描述如下:给定一组训练数据的集合T(Training set),T的每一条记录包含若干条属性(Features)组成一个特征向量,用矢量
表示。
可以有不同的值域,当一属性的值域为连续域时,该属性为连续属性(Numerical Attribute),否则为离散属性(Discrete Attribute)。用
表示类别属性,即数据集有k个不同的类别。那么,T就隐含了一个从矢量X到类别属性C的映射函数:
。分类的目的就是分析输入数据,通过在训练集中的数据表现出来的特性,为每一个类找到一种准确的描述或者模型,采用该种方法(模型)将隐含函数表示出来。
构造分类模型的过程一般分为训练和测试两个阶段。在构造模型之前,将数据集随机地分为训练数据集和测试数据集。先使用训练数据集来构造分类模型,然后使用测试数据集来评估模型的分类准确率。如果认为模型的准确率可以接受,就可以用该模型对其它数据元组进分类。一般来说,测试阶段的代价远低于训练阶段。
mllib分类算法
分类算法基于不同的思想,算法也不尽相同,例如支持向量机SVM、决策树算法、贝叶斯算法、KNN算法等。spark.mllib
包支持各种分类方法,主要包含 二分类, 多分类和 回归分析。下表列出了每种类型的问题支持的算法。
其中spark.mllib包支持的算法较为完善,也正逐步迁移到spark.ml包中。本节将介绍spark.ml包中一些典型的分类算法。