Apache Mahoutをローカル環境で実行する。
統計学的な話と平行して、機械学習についても進めて行きたかったのであるが、Hadoop MapReduceを使っての相関行列計算にかなりの時間を割いてしまった。
今回のログでは、Apache Mahoutをローカル環境で実行してみる。
Apache Mahoutのバージョンは0.7。ローカル環境は、Mac Book Pro (Mountain Lion)である。
注記(2013/8/14);2013/7/25にMahout0.8がリリースされていたので、そちらへ変更。以下、「Mahout0.7」は「Mahout0.8」と読み替えてください。
Apache Mahoutは、ちょっと変わったプロジェクトだ。
「機械学習のツールを提供している」というよりも、「機械学習で使うための部品(アルゴリズム)を提供している」といった方が正確で、何をどうしたらいいのか分かりづらい。また、Hadoopと一緒に登場することが多いが、提供されているアルゴリズムが「全てHadoop MapReduceで動く」わけではない。
協調フィルタリングは、Tasteという別プロジェクトを吸収したものなので、ちょっと経路が違うように感じる。このあたりは、「Mahout in Action」に詳しいので、参照されたい。
- 作者: Sean Owen,Robin Anil,Ted Dunning,Ellen Friedman,伊東直子,真鍋加奈子,堀内孝彦,都元ダイスケ
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/10/26
- メディア: 大型本
- 購入: 3人 クリック: 26回
- この商品を含むブログ (11件) を見る
また、以前にも述べたが、Mahoutの対象としている機械学習のエリアは、ベクトル空間で考えると、次数が大きい反面、空間内のプロットが疎らに散らばっている。(観測値行列が疎になる)
疎らに散らばっているということは、大きな次元を使い切っていないととらえられるので、次元縮約などの方法論とアルゴリズムが重要視される。
統計学的にも、同じように「次元が落ちる」ことは普通におこるが、体系的な理論の中では、(機械学習ほど)当たり前とは扱われないと思う。
さて、以下では、Mahoutを本家プロジェクトからダウンロードし、サンプルプログラムを動かしてみる。
まず、Mahout0.7を本家サイトからダウンロードして、ホームディレクトリ/Users/tetsuyaに解凍した。
サンプルにあるclassify-20newsgroups.sh(ニュースの購読データの分類)を実行してみたいが、バグがあって動かない。
こちらのサイトを参考にさせてもらって、$MAHOUT_HOME/bin/mahoutを修正する。
注記(2013/8/14);Mahout0.8では、classify-20newsgroups.shが動かないバグが修正されているようなので、以下の修正はしなくとも、Naive Bayes, Complement Naive Bayes分類が動きます。
diff mahout mahout.org 224c224 < CLASSPATH="${CLASSPATH}:${MAHOUT_HOME}/lib/hadoop/*" --- > CLASSPATH="${CLASSPATH}:${MAHOUT_HOME/lib/hadoop/*}"
次に環境変数を設定する。(example実行時に、$HADOOP_HOME is deprecatedとでるので、これはいらないかもしれない)
export JAVA_HOME=[your_java_home] export HADOOP_HOME=[your_hadoop_home] export HADOOP_CONF_DIR=[your_hadoop_home]/conf export MAHOUT_HOME=[your_mahout_home] export CLASS_PATH=$HADOOP_HOME:$HADOOP_CONF_DIR:$MAHOUT_HOME/conf export PATH=$MAHOUT_HOME/bin:$PATH
$MAHOUT_HOME/examples/binに移動し、MAHOUT_LOCAL=TRUEを指定してサンプルを実行する。
MAHOUT_LOCAL=TRUE ./classify-20newsgroups.sh
実行すると、いくつかの分類手法を聞かれるので、単純ベイズ分類(2番のNaive Bayes Classification)を選択して実行すると学習が始まって、結果として、混同行列(Confusion Matrix:正解に対して、どのように分類されたかを示す表)が出力される。
Confusion Matrix ------------------------------------------------------- a b c d e f g h i j k l m n o p q r s t <--Classified as 284 0 0 0 2 0 0 0 1 0 0 1 0 0 0 2 1 2 11 0 | 304 a = alt.atheism 0 337 3 18 5 15 6 0 0 0 0 4 8 1 1 0 0 0 1 0 | 399 b = comp.graphics 1 33 235 69 14 32 10 2 1 1 0 1 2 3 0 0 0 0 0 1 | 405 c = comp.os.ms-windows.misc 0 6 7 358 19 4 10 2 0 0 0 0 7 0 0 0 0 0 0 0 | 413 d = comp.sys.ibm.pc.hardware 1 4 0 12 359 2 5 2 0 0 1 1 7 1 0 0 0 0 0 0 | 395 e = comp.sys.mac.hardware