Mahout 简明教程

Mahout - Classification

What is Classification?

分类是一种机器学习技术,它使用已知数据来确定如何将新数据归类到一组现有类别中。例如,

  1. iTunes 应用程序使用分类来创建播放列表。

  2. 雅虎!和 Gmail 等邮件服务提供商使用此技术来决定是否将新邮件归类为垃圾邮件。分类算法通过分析用户将某些邮件标记为垃圾邮件的习惯来自我训练。基于此,分类器决定是否将将来的邮件发送到您的收件箱或垃圾邮件文件夹。

How Classification Works

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

  1. 最初,使用任何一种学习算法准备一个新的数据模型。

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

  3. 然后,使用该数据模型评估新数据并确定其类别。

classification works

Applications of Classification

  1. Credit card fraud detection - 分类机制用于预测信用卡欺诈。通过使用以前的诈骗历史信息,该分类器可以预测哪些未来交易可能会变成诈骗。

  2. Spam e-mails - 根据以前垃圾邮件的特征,该分类器确定新收到的电子邮件是否应发送到垃圾邮件文件夹。

Naive Bayes Classifier

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

  1. Distributed Naive Bayes classification

  2. Complementary Naive Bayes classification

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

朴素贝叶斯的一个优点是它只需要少量训练数据来估算分类所需的特征。

对于某些类型的概率模型,朴素贝叶斯分类器能在受监督的学习设置中非常有效地进行训练。

尽管其假设过于简化,但朴素贝叶斯分类器在许多复杂的实际情况中运行良好。

Procedure of Classification

以下步骤用于实现分类:

  1. Generate example data

  2. 从数据创建序列文件

  3. 将序列文件转换为向量

  4. Train the vectors

  5. Test the vectors

Step1: Generate Example Data

生成或下载要分类的数据。例如,您可以从以下链接获取 20 newsgroups 示例数据: 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

Step 2: Create Sequence Files

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

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

Step 3: Convert Sequence Files to Vectors

使用 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.

Step 4: Train the Vectors

使用 trainnb 实用工具训练生成向量。使用 trainnb 实用工具的选项如下:

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

Step 5: Test the Vectors

使用 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