Mahout - 分类

什么是分类?

分类是一种机器学习技术,它使用已知数据来确定新数据应如何分类为一组现有类别.例如,

  • iTunes应用程序使用分类来准备播放列表.

  • Yahoo!等邮件服务提供商和Gmail使用此技术来决定是否应将新邮件归类为垃圾邮件.分类算法通过分析将某些邮件标记为垃圾邮件的用户习惯来训练自己.基于此,分类器决定将来的邮件是否应存放在您的收件箱或垃圾邮件文件夹中.

分类如何工作

在对给定数据集进行分类时,分类器系统执行以下
操作:

  • 最初使用任何学习算法准备新数据模型.

  • 然后测试准备好的数据模型.

  • 此后,这数据模型用于评估新数据并确定其类的
    .

分类工作

分类申请

  • 信用卡欺诈检测  - 分类机制用于预测信用卡欺诈.使用先前欺诈的历史信息,分类器可以预测哪些未来的交易可能变成欺诈.

  • 垃圾邮件  - 取决于关于以前的垃圾邮件的特征,
    分类器确定是否应该将新遇到的电子邮件发送到
    垃圾邮件文件夹.

朴素贝叶斯分类器

Mahout使用朴素贝叶斯分类器算法.它使用两种实现:

  • 分布式朴素贝叶斯分类

  • 互补朴素贝叶斯分类

Naive Bayes是一种构造分类器的简单技术.它不是一个用于训练此类分类器的
算法,而是一系列算法.贝叶斯分类器
构造模型以对问题实例进行分类.这些分类是使用
的可用数据进行的.

朴素贝叶斯的一个优点是它只需要少量的训练数据
来估计所需的参数分类.

对于某些类型的概率模型,幼稚的贝叶斯分类器可以在监督学习环境中高效地训练
.

尽管如此它过于简单的假设,朴素的贝叶斯分类器在许多复杂的实际情况下都能很好地工作.

分类程序

以下要实施分类,请遵循以下步骤:

  • 生成示例数据

  • 从以下位置创建序列文件数据

  • 将序列文件转换为向量

  • 训练向量

  • 测试向量

步骤1:生成示例数据

生成或下载要分类的数据.例如,您可以从以下链接获取 20个新闻组示例数据: http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz

创建用于存储输入数据的目录.下载示例如下所示.

$ mkdir classification_example
$ cd classification_example
$tar xzvf 20news-bydate.tar.gz
wget http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz

第2步:创建序列文件

使用 seqdirectory 实用程序从示例创建序列文件.生成序列的语法如下:

mahout seqdirectory -i <input file path> -o <output directory>

步骤3:将序列文件转换为矢量

使用 seq2parse 从序列文件创建矢量文件效用. seq2parse 实用程序的选项如下:

$MAHOUT_HOME/bin/mahout seq2sparse
--analyzerName (-a) analyzerName  The class name of the analyzer
--chunkSize (-chunk) chunkSize    The chunkSize in MegaBytes.
--output (-o) output              The directory pathname for o/p
--input (-i) input                Path to job input directory. 
的目录路径名 - 输入(-i)输入作业输入目录的路径.

步骤4:训练向量

使用 trainnb 实用程序训练生成的向量.使用 trainnb 实用程序的选项如下:

mahout trainnb
 -i ${PATH_TO_TFIDF_VECTORS}
 -el
 -o ${PATH_TO_MODEL}/model
 -li ${PATH_TO_MODEL}/labelindex
 -ow
 -c

步骤5:测试载体

使用 testnb 实用程序测试载体.使用 testnb 实用程序的选项如下:

mahout testnb
 -i ${PATH_TO_TFIDF_TEST_VECTORS}
 -m ${PATH_TO_MODEL}/model
 -l ${PATH_TO_MODEL}/labelindex
 -ow
 -o ${PATH_TO_OUTPUT}
 -c
 -seq