Touch The Mahout !

makoto uehara
自己紹介
【名前】
・ 上原 誠 (@pioho07)
Facebook申請歓迎

【経歴】
・
・

~2012年2月 某SIerでインフラ周りに従事
2012年3月 サイバーエージェント入社
- Amebaスマフォプラットフォームの構築
-...
Whats Mahout ?
Whats Mahout ?

スケーラブルな
機械学習・データマイニング ライブラリ
これ
CyberZ’s Hadoop Cluster
Slave
Server*5

HDD:100TB
CPU:120Core
memory:480GB

Master
Server*3

Hadoop Cluster

管理ツール
使ってます

...
Mahout’s Algorithm

Help見ると
アルゴリズム
いっぱい

[hdfs@svr001 ~]$ mahout
An example program must be given as the first argument.
V...
Reccomendation

[hdfs@svr001 ~]$ mahout
An example program must be given as the first argument.
Valid program names are:
a...
Reccomendation

「ユーザAはこの商品を4点と評価しています
ユーザBはこの商品を3.5点と評価しています」
といった情報を元にして、
「ユーザAにはこの商品がお勧めです」
という結果を出すヤツ

まず、誰がどの商品をオススメして...
こんな感じで
入力ファイル作成
●Input File1
UserID:1-5
ItemID:101-107
Score:0.0-5.0

●Input File1
1,101,5.0
1,102,3.0
1,103,2.5
2,101,2.0...
User2

User3

Score=4.5
Score=4.5
Mahout Command Line
mahout¥

Mahout

recommenditembased¥

Algorithm

--input /mahout/recommend_sample1.csv¥

Input File

-...
Command Run
[hdfs@svr001 ~]$ mahout recommenditembased --input
/mahout/recommend_sample1.csv --output /mahout/recome1 --si...
Command Run

●処理時間はけっこうかかった。
21行の入力ファイルで
2~3分かかった。。
●mahout version 0.7

●はまったとこ
入力ファイルに改行が入ってるとエラーが出てハマった
SIMILARITY(相関)

SIMILARITY in Recommenditembased

SIMILARITY_COOCCURRENCE
SIMILARITY_LOGLIKELIHOOD
SIMILARITY_TANIMOTO_COE...
SIMILARITY(相関)

SIMILARITY_PEARSON_CORRELATION
SIMILARITY_TANIMOTO_COEFFICIENT

今回この2つで
試してみよう
Run Result
●Similarity
PEARSON_CORRELATION(同時に起こる2つのことの一時的な特性)

●Run
mahout recommenditembased --input /mahout/recommend_s...
Run Result
●Similarity
TANIMOTO_COEFFICIENT(谷本係数)

●Run
mahout recommenditembased --input /mahout/recommend_sample1.csv --...
SIMILARITY(相関)
PEARSON_CORRELATION だと、
User3にはItem 103をScore=4.2794でレコメンド

TANIMOTO_COEFFICIENTだと、
User3にはItem 106をScore=3...
SIMILARITY(相関)

入力ファイルいじって
無理やりにでもUser2に商品102を
お勧めしてみてやる!
【Step1】
入力データを、
user1,2,3の購入傾向が似ている状況にする

【Step2】
user1,2,3は
商品101,103を購入し評価5.0としている
user1,2は商品102も購入し高評価している

なので
↓↓↓
【Re...
レコメンドさせられた?結果は・・?
mahout recommenditembased --input /mahout/recommend_sample1.csv --output
/mahout/recome1 --similarityCla...
レコメンドさせるられたか?結果

ただ、
PEARSON_CORRELATIONだとうまくいったが、
TANIMOTO_COEFFICIENTだとうまくいかなかった
アルゴリズムの違いなんだろうね・・
レコメンドさせるられたか?結果

mahout recommenditembased --input /mahout/recommend_sample2.csv -output /mahout/recome22 --similarityClas...
ご清聴ありがとうございました!
Upcoming SlideShare
Loading in...5
×

Touch the mahout

1,092

Published on

Published in: Technology, Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,092
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Touch the mahout

  1. 1. Touch The Mahout ! makoto uehara
  2. 2. 自己紹介 【名前】 ・ 上原 誠 (@pioho07) Facebook申請歓迎 【経歴】 ・ ・ ~2012年2月 某SIerでインフラ周りに従事 2012年3月 サイバーエージェント入社 - Amebaスマフォプラットフォームの構築 - 統合ログ解析基盤やオンラインデータベースの インフラミドルウェア部分を担当 - Hadoop、HBase、Flume
  3. 3. Whats Mahout ?
  4. 4. Whats Mahout ? スケーラブルな 機械学習・データマイニング ライブラリ
  5. 5. これ
  6. 6. CyberZ’s Hadoop Cluster Slave Server*5 HDD:100TB CPU:120Core memory:480GB Master Server*3 Hadoop Cluster 管理ツール 使ってます CDH4.4.0 Hive MR Hue HDFS ClouderaManager v4.7.3
  7. 7. Mahout’s Algorithm Help見ると アルゴリズム いっぱい [hdfs@svr001 ~]$ mahout An example program must be given as the first argument. Valid program names are: arff.vector: : Generate Vectors from an ARFF file or directory baumwelch: : Baum-Welch algorithm for unsupervised HMM training canopy: : Canopy clustering cat: : Print a file or resource as the logistic regression models would see it cleansvd: : Cleanup and verification of SVD output clusterdump: : Dump cluster output to text clusterpp: : Groups Clustering Output In Clusters cmdump: : Dump confusion matrix in HTML or text formats cvb0_local: : LDA via Collapsed Variation Bayes, in memory locally. dirichlet: : Dirichlet Clustering recommendfactorized: : Compute recommendations using the factorization of a rating mat recommenditembased: : Compute recommendations using item-based collaborative filterin fkmeans: : Fuzzy K-means clustering fpg: : Frequent Pattern Growth : : :
  8. 8. Reccomendation [hdfs@svr001 ~]$ mahout An example program must be given as the first argument. Valid program names are: arff.vector: : Generate Vectors from an ARFF file or directory baumwelch: : Baum-Welch algorithm for unsupervised HMM training レコメンド canopy: : Canopy clustering やってみたいよね cat: : Print a file or resource as the logistic regression models would see it cleansvd: : Cleanup and verification of SVD output clusterdump: : Dump cluster output to text clusterpp: : Groups Clustering Output In Clusters cmdump: : Dump confusion matrix in HTML or text formats cvb0_local: : LDA via Collapsed Variation Bayes, in memory locally. dirichlet: : Dirichlet Clustering recommendfactorized: : Compute recommendations using the factorization of a rating mat recommenditembased: : Compute recommendations using item-based collaborative filterin fkmeans: : Fuzzy K-means clustering fpg: : Frequent Pattern Growth : : :
  9. 9. Reccomendation 「ユーザAはこの商品を4点と評価しています ユーザBはこの商品を3.5点と評価しています」 といった情報を元にして、 「ユーザAにはこの商品がお勧めです」 という結果を出すヤツ まず、誰がどの商品をオススメしているかを表すデータを作成します MahoutにはユーザとかアイテムをIDにして渡さないといけないので、 入力ファイルは数字祭なファイルになります
  10. 10. こんな感じで 入力ファイル作成 ●Input File1 UserID:1-5 ItemID:101-107 Score:0.0-5.0 ●Input File1 1,101,5.0 1,102,3.0 1,103,2.5 2,101,2.0 2,102,2.5 2,103,5.0 2,104,2.0 3,101,2.5 3,102,4.0 3,105,4.5 4,101,5.0 4,103,3.0 4,104,4.5 4,106,4.0 5,101,4.0 5,102,1.0 5,103,2.0 5,104,4.0 5,105,3.5 5,106,4.0
  11. 11. User2 User3 Score=4.5 Score=4.5
  12. 12. Mahout Command Line mahout¥ Mahout recommenditembased¥ Algorithm --input /mahout/recommend_sample1.csv¥ Input File --output /mahout/recome1 ¥ Output Dir –similarityClassname¥ SIMILARITY_PEARSON_CORRELATION SIMILARITY
  13. 13. Command Run [hdfs@svr001 ~]$ mahout recommenditembased --input /mahout/recommend_sample1.csv --output /mahout/recome1 --similarityClassname SIMILARITY_PEARSON_CORRELATION MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath. Running on hadoop, using /opt/cloudera/parcels/CDH-4.4.01.cdh4.4.0.p0.39/lib/hadoop/bin/hadoop and HADOOP_CONF_DIR=/etc/hadoop/conf MAHOUT-JOB: /opt/cloudera/parcels/CDH-4.4.01.cdh4.4.0.p0.39/lib/mahout/mahout-examples-0.7-cdh4.4.0-job.jar 13/12/12 11:26:23 INFO common.AbstractJob: Command line arguments: {-booleanData=[false], --endPhase=[2147483647], -input=[/mahout/recommend_sample4.csv], --maxPrefsPerUser=[1000], -minPrefsPerUser=[1], --output=[temp/preparePreferenceMatrix], --ratingShift=[0.0], --startPhase=[0], --tempDir=[temp]} 13/12/12 11:26:24 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same. 13/12/12 11:26:25 INFO input.FileInputFormat: Total input paths to process : 1 13/12/12 11:26:25 INFO mapred.JobClient: Running job: job_201312042139_0225 13/12/12 11:26:26 INFO mapred.JobClient: map 0% reduce 0% 13/12/12 11:26:34 INFO mapred.JobClient: map 100% reduce 0% 13/12/12 11:26:39 INFO mapred.JobClient: map 100% reduce 67%
  14. 14. Command Run ●処理時間はけっこうかかった。 21行の入力ファイルで 2~3分かかった。。 ●mahout version 0.7 ●はまったとこ 入力ファイルに改行が入ってるとエラーが出てハマった
  15. 15. SIMILARITY(相関) SIMILARITY in Recommenditembased SIMILARITY_COOCCURRENCE SIMILARITY_LOGLIKELIHOOD SIMILARITY_TANIMOTO_COEFFICIENT SIMILARITY_CITY_BLOCK SIMILARITY_COSINE SIMILARITY_PEARSON_CORRELATION SIMILARITY_EUCLIDEAN_DISTANCE よくわかりません ><
  16. 16. SIMILARITY(相関) SIMILARITY_PEARSON_CORRELATION SIMILARITY_TANIMOTO_COEFFICIENT 今回この2つで 試してみよう
  17. 17. Run Result ●Similarity PEARSON_CORRELATION(同時に起こる2つのことの一時的な特性) ●Run mahout recommenditembased --input /mahout/recommend_sample1.csv --output /mahout/recome1 --similarityClassname SIMILARITY_PEARSON_CORRELATION ●Result [hdfs@svr001 ~]$ hadoop fs -cat /mahout/recome/part-r-0000* 3 [103:4.279442] 1 [105:2.868604] 2 [105:3.1569808]
  18. 18. Run Result ●Similarity TANIMOTO_COEFFICIENT(谷本係数) ●Run mahout recommenditembased --input /mahout/recommend_sample1.csv --output /mahout/recome2 --similarityClassname SIMILARITY_TANIMOTO_COEFFICIENT ●Result [hdfs@svr001 ~]$ hadoop fs -cat /mahout/recome2/part-r-0000* 3 [106:3.5357144,104:3.3799999,103:3.3125] 1 [105:3.6363637,106:3.5,104:3.4714286] 4 [105:4.2746477,102:4.2] 2 [106:2.9056604,105:2.6296296]
  19. 19. SIMILARITY(相関) PEARSON_CORRELATION だと、 User3にはItem 103をScore=4.2794でレコメンド TANIMOTO_COEFFICIENTだと、 User3にはItem 106をScore=3.5357でレコメンド アルゴリズムの違いで お勧め商品もスコアも違うね
  20. 20. SIMILARITY(相関) 入力ファイルいじって 無理やりにでもUser2に商品102を お勧めしてみてやる!
  21. 21. 【Step1】 入力データを、 user1,2,3の購入傾向が似ている状況にする 【Step2】 user1,2,3は 商品101,103を購入し評価5.0としている user1,2は商品102も購入し高評価している なので ↓↓↓ 【Result!】 user3に商品102をrecommend するっしょ!? 1,101,5.0 1,102,5.0 1,103,5.0 1,108,1.5 2,101,5.0 2,102,4.0 2,103,5.0 2,104,2.0 2,108,5.0 3,101,5.0 3,103,5.0 3,105,4.5 3,107,1.0 3,108,4.5 4,101,1.5 4,103,1.0 4,104,2.5 4,106,6.0 5,101,1.0 5,102,1.5 5,103,2.0 5,104,3.0 5,105,3.5 5,106,5.0
  22. 22. レコメンドさせられた?結果は・・? mahout recommenditembased --input /mahout/recommend_sample1.csv --output /mahout/recome1 --similarityClassname SIMILARITY_PEARSON_CORRELATION [hdfs@svr001 ~]$ hadoop fs -cat /mahout/recome10/part-r-0000* 3 [102:4.8554997,106:4.5731964] 1 [106:5.0,105:4.615747] 4 [105:2.6432545,102:2.6432545,108:1.2666667] 2 [105:4.7233295,106:4.133889] 5 [108:3.5] キタ━(゚∀゚)━!
  23. 23. レコメンドさせるられたか?結果 ただ、 PEARSON_CORRELATIONだとうまくいったが、 TANIMOTO_COEFFICIENTだとうまくいかなかった アルゴリズムの違いなんだろうね・・
  24. 24. レコメンドさせるられたか?結果 mahout recommenditembased --input /mahout/recommend_sample2.csv -output /mahout/recome22 --similarityClassname SIMILARITY_TANIMOTO_COEFFICIENT [hdfs@svr001 ~]$ hadoop fs -cat /mahout/recome32/part-r-0000* 3 [104:4.8636365,106:4.852941,102:4.8076925] 1 [104:4.0,105:3.9807692,107:3.9545455,106:3.857143] 4 [107:4.25,108:4.0,102:3.6410255,105:3.6325302] 2 [107:5.0,105:4.354839,106:3.6893203] 5 [107:2.6111112,108:1.872093] 2番目になってる
  25. 25. ご清聴ありがとうございました!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×