Mahout 0. 8からTestForestによる分析結果の出力がよりくわしく出力されるように
前回は理論編として,
解説の前に,
ただし,
今回は,
サンプルデータをダウンロードする
今回利用するサンプルデータは,
- 1行が1顧客のデータ
- 各行はカンマ区切りで各商品の購入有無を記載
(Y:ある, N:ない)
顧客Aの商品1の購入有無, 顧客Aの商品2の購入有無, … 顧客Aの商品1000の購入有無 顧客Bの商品1の購入有無, 顧客Bの商品2の購入有無, … 顧客Bの商品1000の購入有無 顧客Cの商品1の購入有無, 顧客Cの商品2の購入有無, … 顧客Cの商品1000の購入有無 (省略)
今回は1000個の商品数を対象とするので,
また,
descriptorファイルを作成する
今回利用するDecisionForestは,
descriptorファイルを作成するには,
Describeクラスは,
hadoop fs -put gihyo-mahout-df-sample-learning.csv . hadoop jar $MAHOUT_HOME/mahout-core-0.7-job.jar org.apache.mahout.classifier.df.tools.Describe -p gihyo-mahout-df-sample-learning.csv -f gihyo-mahout-df-sample.info -d 999 C L
Describeクラスのパラメータには,
- --path (-p)⇒入力データ
(学習データ) を指定 - --file (-f)⇒describeファイルの出力先を指定
- --descriptor (-d)⇒入力データの各列を説明
- --regression (-r)⇒回帰問題を解く場合はこのオプションを付加
--descriptor (-d)オプションでは,
- N⇒数値
- C⇒カテゴリ
(性別など) - L⇒ラベル
(分類先クラス) - I⇒無視
(利用しない)
たとえば,
-d N N C I L
同じ種類が連続する場合は,
-d 2 N C I L
今回のサンプルデータでは,
-d 999 C L
- ※1)
- 以後,
0. 8を利用されている場合, 0. 7を0. 8と適宜読み替えてください。
モデルを作成する
descriptorファイルが無事に作成できた後は,
モデルの作成は,
hadoop jar $MAHOUT_HOME/mahout-examples-0.7-job.jar org.apache.mahout.classifier.df.mapreduce.BuildForest -d gihyo-mahout-df-sample-learning.csv -ds gihyo-mahout-df-sample.info -sl 32 -t 25 -o gihyo-mahout-df-sample.model
BuildForestクラスのおもなパラメータには,
- --data (-d)⇒入力データ
(学習データ) を指定 - --dataset (-ds)⇒作成したdescriptorファイルを指定
- --selection (-sl)⇒一つの決定木で利用する説明変数の数
(CSVファイルの列数) を指定 (ランダム抽出) - --partial (-p)⇒指定した場合,
学習データのうち, 一部のデータのみを利用 - --nbtrees (-t)⇒作成する決定木の数を指定
- --output (-o)⇒モデルの出力先
--selection (-sl)の値は,