- Mahout 有用資源
- Mahout - 快速指南
- Mahout - 資源
- Mahout - 討論
Mahout - 分類
什麼是分類?
分類是一種機器學習技術,它使用已知資料來確定新資料應如何分類到一組現有的類別中。例如,
iTunes 應用程式使用分類來準備播放列表。
雅虎和 Gmail 等郵件服務提供商使用此技術來決定是否應將新郵件分類為垃圾郵件。分類演算法透過分析使用者將某些郵件標記為垃圾郵件的習慣來自我訓練。基於此,分類器決定未來郵件是否應存放在您的收件箱中或垃圾郵件資料夾中。
分類的工作原理
在對給定資料集進行分類時,分類器系統執行以下操作
- 最初,使用任何學習演算法準備新的資料模型。
- 然後測試準備好的資料模型。
- 此後,此資料模型用於評估新資料並確定其類別。
分類的應用
信用卡欺詐檢測 - 分類機制用於預測信用卡欺詐。使用之前欺詐的歷史資訊,分類器可以預測哪些未來的交易可能變成欺詐。
垃圾郵件 - 根據之前垃圾郵件的特徵,分類器確定是否應將新遇到的電子郵件傳送到垃圾郵件資料夾。
樸素貝葉斯分類器
Mahout 使用樸素貝葉斯分類器演算法。它使用兩種實現
- 分散式樸素貝葉斯分類
- 互補樸素貝葉斯分類
樸素貝葉斯是一種構建分類器的簡單技術。它不是用於訓練此類分類器的單一演算法,而是一系列演算法。貝葉斯分類器構建模型來對問題例項進行分類。這些分類是使用可用資料進行的。
樸素貝葉斯的一個優點是,它只需要少量訓練資料來估計分類所需的必要引數。
對於某些型別的機率模型,樸素貝葉斯分類器可以在監督學習環境中非常有效地進行訓練。
儘管其假設過於簡化,但樸素貝葉斯分類器在許多複雜的現實世界情況中都表現得相當好。
分類的過程
要實現分類,需要遵循以下步驟
- 生成示例資料
- 從資料建立序列檔案
- 將序列檔案轉換為向量
- 訓練向量
- 測試向量
步驟 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.
步驟 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