Touch the mahout

  • 921 views
Uploaded on

 

More in: Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
921
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
6
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Touch The Mahout ! makoto uehara
  • 2. 自己紹介 【名前】 ・ 上原 誠 (@pioho07) Facebook申請歓迎 【経歴】 ・ ・ ~2012年2月 某SIerでインフラ周りに従事 2012年3月 サイバーエージェント入社 - Amebaスマフォプラットフォームの構築 - 統合ログ解析基盤やオンラインデータベースの インフラミドルウェア部分を担当 - Hadoop、HBase、Flume
  • 3. Whats Mahout ?
  • 4. Whats Mahout ? スケーラブルな 機械学習・データマイニング ライブラリ
  • 5. これ
  • 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. 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. 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. Reccomendation 「ユーザAはこの商品を4点と評価しています ユーザBはこの商品を3.5点と評価しています」 といった情報を元にして、 「ユーザAにはこの商品がお勧めです」 という結果を出すヤツ まず、誰がどの商品をオススメしているかを表すデータを作成します MahoutにはユーザとかアイテムをIDにして渡さないといけないので、 入力ファイルは数字祭なファイルになります
  • 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. User2 User3 Score=4.5 Score=4.5
  • 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. 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. Command Run ●処理時間はけっこうかかった。 21行の入力ファイルで 2~3分かかった。。 ●mahout version 0.7 ●はまったとこ 入力ファイルに改行が入ってるとエラーが出てハマった
  • 15. SIMILARITY(相関) SIMILARITY in Recommenditembased SIMILARITY_COOCCURRENCE SIMILARITY_LOGLIKELIHOOD SIMILARITY_TANIMOTO_COEFFICIENT SIMILARITY_CITY_BLOCK SIMILARITY_COSINE SIMILARITY_PEARSON_CORRELATION SIMILARITY_EUCLIDEAN_DISTANCE よくわかりません ><
  • 16. SIMILARITY(相関) SIMILARITY_PEARSON_CORRELATION SIMILARITY_TANIMOTO_COEFFICIENT 今回この2つで 試してみよう
  • 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. 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. SIMILARITY(相関) PEARSON_CORRELATION だと、 User3にはItem 103をScore=4.2794でレコメンド TANIMOTO_COEFFICIENTだと、 User3にはItem 106をScore=3.5357でレコメンド アルゴリズムの違いで お勧め商品もスコアも違うね
  • 20. SIMILARITY(相関) 入力ファイルいじって 無理やりにでもUser2に商品102を お勧めしてみてやる!
  • 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. レコメンドさせられた?結果は・・? 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. レコメンドさせるられたか?結果 ただ、 PEARSON_CORRELATIONだとうまくいったが、 TANIMOTO_COEFFICIENTだとうまくいかなかった アルゴリズムの違いなんだろうね・・
  • 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. ご清聴ありがとうございました!