Mahout-classification

提供:Dev Guides
移動先:案内検索

Mahout-分類

分類とは何ですか?

分類は、既知のデータを使用して、新しいデータを既存のカテゴリのセットに分類する方法を決定する機械学習手法です。 例えば、

  • iTunesアプリケーションは、分類を使用してプレイリストを準備します。
  • Yahoo!などのメールサービスプロバイダー Gmailはこの手法を使用して、新しいメールをスパムとして分類するかどうかを決定します。 分類アルゴリズムは、特定のメールをスパムとしてマークするユーザーの習慣を分析することにより、トレーニングを行います。 それに基づいて、分類子は、今後のメールを受信トレイまたはスパムフォルダーのどちらに保管するかを決定します。

分類の仕組み

特定のデータセットを分類する際、分類システムは次のアクションを実行します。

  • 最初に、学習アルゴリズムのいずれかを使用して新しいデータモデルを準備します。
  • 次に、準備されたデータモデルがテストされます。
  • その後、このデータモデルを使用して、新しいデータを評価し、 そのクラス。

分類作業

分類の適用

  • クレジットカード詐欺の検出-分類メカニズムを使用して、クレジットカード詐欺を予測します。 分類器は、以前の不正行為の履歴情報を使用して、将来のどの取引が不正行為になる可能性があるかを予測できます。
  • スパムメール-以前のスパムメールの特性に応じて、 分類子は、新たに検出された電子メールをスパムフォルダーに送信するかどうかを決定します。

単純ベイズ分類器

MahoutはNaive Bayes分類アルゴリズムを使用します。 次の2つの実装を使用します。

  • 分散単純ベイズ分類
  • 相補的な単純ベイズ分類

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.

ステップ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