LoginSignup
1
1

More than 5 years have passed since last update.

Azure HDInsight(on Linix)でMahoutを使ってみる

Last updated at Posted at 2015-12-16

Azureで機械学習したいなら、API化とかが簡単にできるAzure ML使うほうがいろいろ楽ですが、オーソドックスにMahoutを使う手順も確認してみます。とは言え普通のLinuxクラスタでMahout使うのと何も変わりません。

基本的にはここの通りやれば良い。

HDInsightクラスタの作成

詳しくはこちらをご覧下さい。2015年12月17日現在、利用できるMahoutのバージョンは0.9のようです。

また、各HDInsightのバージョンで利用できる各種ツールのバージョンはここで確認できます。

最新版の3.3を利用すれば0.9+が利用できるようになるようです。ニューラルネットとかに対応している?のでしょうかね。

データの準備

データは、MSがテスト用に用意していてくれているものを利用します。

テストデータのダウンロードと展開

コンソールにログインした状態で、

curl -O http://files.grouplens.org/datasets/movielens/ml-100k.zip
unzip ml-100k.zip
cd ml-100k
hadoop fs -put u.data /example/data/mahout/

サンプルでは、/example/data/を利用していますが、ここには別のファイルが既に存在しているので、読み込みエラーになるかと思います。

内容を覗いてみる

普通にcatすれば良いのですが、せっかくなのでHiveでテーブルを作成して内容を見れうようにしておきます。

CREATE EXTERNAL TABLE members(
    userID string,
    movieID string,
    userRating string,
    time string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
LOCATION 'wasb://<container>@<account>.blob.core.windows.net/example/data/mahout/';

<container>,<account>は適宜変更して下さい。

Mahoutの利用

コマンドの実行

では、Mahoutを利用してみます。recommenditembasedをSIMILARITY_COOCCURRENCEオプションで実行しています。
いわゆるレコメンドです。強調フィルタリング。

mahout recommenditembased \
    -s SIMILARITY_COOCCURRENCE \
    -i /example/data/mahout/u.data \
    -o /example/data/output \
    --tempDir /temp/mahouttemp

10万人の処理をするのに、1ノードで20分くらいかかります。この量であればHadoopでMahout使わない方が効率がいいかもしれません。

結果

結果は、/example/data/output/以下にpart-r-00000という名称で出力されます。

1   [234:5.0,347:5.0,237:5.0,47:5.0,282:5.0,275:5.0,88:5.0,515:5.0,514:5.0,121:5.0]
2   [282:5.0,210:5.0,237:5.0,234:5.0,347:5.0,121:5.0,258:5.0,515:5.0,462:5.0,79:5.0]

上記の場合、ID 1の会員さんへのオススメムービーはID 234のムービーで、スコアは5.0といった意味になります(オススメは複数あります)。

実際にECサイト等で利用する場合は、このファイルを取得し、RDB等に流し込んでユーザーを取得した後、ユーザーテーブルやムービーテーブルをJOINさせてレコメンドを見せる感じになります。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1