Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Mahout資料分析基礎入門

6,903 views

Published on

Mahout是hadoop上scalable machine learning工具,也是bigdata分析的解決方案。
這場talk會分享 hadoop與mahout環境快速建立的建議,避免還沒操作到mahout就在架環境時GG的困境,也會簡單介紹 recommendation,cluster,frequent pattern,...等原理,並搭配一些範例分享如何透過mahout來實作。

Published in: Education
  • Be the first to comment

Mahout資料分析基礎入門

  1. 1. Mahout資料分析基礎入門 Raymond@hadoopCon 2014 1
  2. 2. Raymond http://systw.net 興趣 • 異常偵測 • 資料分析 • 網路安全 • 程式開發 現職 • Acer eDC資安系統部資深專案工程師 • 康寧專校資訊安全兼任講師 • 台科大資工所博士生 2
  3. 3. Acer eDC • SoC(資安監控中心) • 幫助客戶偵測資安事件 • 也幫助企業建置專屬SoC平台 3
  4. 4. 我們的任務 從Log被產生,到轉變為資訊的所有過程 • 收集各類型Log • 整合到SoC • 分析並找出重要資訊 4
  5. 5. 我們的目標 找出危險並告訴客戶 5
  6. 6. 分析是其中一個工作 for example • Statistic • Data Mining • Machine Learning 6
  7. 7. 就是今天的主題 資料分析基礎入門 7
  8. 8. Outline • Mahout介紹 • 快速建立環境 • 動動手玩分群 • 動動手玩推薦系統 • 其他方法 8
  9. 9. 分析工具 • Python scikit-learn • R • Weka, Matlab • Mahout 9
  10. 10. https://mahout.apache.org/ 10
  11. 11. Introduction to Apache Mahout in Youtube, BTI360 11
  12. 12. Introduction to Apache Mahout in Youtube ,BTI360 12
  13. 13. Mahout User (直接使用Mahout內建命令) Developer (用Mahout提供的library改寫程式) 13
  14. 14. 什麼時候能用Mahout ? • 資料非常巨大ex: Acer eDC • 純練習 14
  15. 15. 要用多少節點跑Mahout ? • 當你Mahout跑太久的時候ex:2天 …omit 14/01/27 10:01:39 INFO driver.MahoutDriver: Program took 151260185 ms (Minutes: 2521.886416666666667) 15
  16. 16. Hadoop and Mahout 快速建立環境 16
  17. 17. Hadoop 安裝 • Etu Virtual Appliance • Hortonworks • 全手工安裝 17
  18. 18. Mahout 安裝 In Hortonworks # yum install mahout …omit… # mahout 18
  19. 19. Mahout 安裝 Download mahout • mahout-distribution-0.9.tar.gz (user) • mahout-distribution-0.9-src.tar.gz (developer) # tar –zxvf mahout-distribution-xx.tar.gz # cd mahout-distribution-.xx # bin/mahout 19
  20. 20. 執行Mahout # mahout Error: JAVA_HOME is not set. 20
  21. 21. 執行Mahout # export JAVA_HOME=/usr/jdk64/jdk1.6.0_31 # mahout MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath. Running on hadoop, using /usr/lib/hadoop/bin/hadoop and HADOOP_CONF_DIR=/etc/hadoop/conf MAHOUT-JOB: /usr/lib/mahout/mahout-examples-0.8.0.2.0.6.1-101-job.jar An example program must be given as the first argument. Valid program names are: ...omit... 21
  22. 22. 快速的完成環境建立 22
  23. 23. Clustering 動動手玩分群 23
  24. 24. DataSet Feature 1 Feature 2 ID 1 0 1 ID 2 1 0 ID 3 1 1 ID 4 2 1 ID 5 1 2 ID 6 2 2 ID 7 5 6 ID 8 6 5 ID 9 6 6 ID 10 9 9 24
  25. 25. DataSet視覺化 25
  26. 26. 分群DataSet視覺化 26
  27. 27. 分群DataSet Feature 1 Feature 2 ID 1 0 1 ID 2 1 0 ID 3 1 1 ID 4 2 1 ID 5 1 2 ID 6 2 2 ID 7 5 6 ID 8 6 5 ID 9 6 6 ID 10 9 9 27
  28. 28. 分群太簡單了? 28
  29. 29. Try it 29
  30. 30. 透過分群演算法 30
  31. 31. 分群 常見應用 31
  32. 32. 資料描述 告訴你這個資料長這樣,根據資料特性可分為8大群組 32
  33. 33. 異常偵測 33
  34. 34. 這麼好用 34
  35. 35. 一個指令搞定 mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job 35
  36. 36. Photo Demo 36
  37. 37. 資料集介紹(就是剛剛的範例) Upload(GB) Download(GB) 172.16.10.1 0 1 172.16.10.2 1 0 172.16.10.3 1 1 172.16.10.4 2 1 172.16.10.5 1 2 172.16.10.6 2 2 172.16.10.7 5 6 172.16.10.8 6 5 172.16.10.9 6 6 172.16.10.10 9 9 37
  38. 38. ETL #vi clustering.data 0 1 1 0 1 1 2 1 1 2 2 2 5 6 6 5 6 6 9 9 38
  39. 39. 將資料丟到Hadoop # hadoop fs -mkdir testdata # hadoop fs -put clustering.data testdata # hadoop fs -ls -R testdata -rw-r--r-- 3 root hdfs 288374 2014-02-05 21:53 testdata/clustering.data 39
  40. 40. 開始clustering # mahout org.apache.mahout.clustering.syntheticcontrol.canopy.Job -t1 3 -t2 2 -i testdata -o output ...omit... 14/09/08 01:31:07 INFO clustering.ClusterDumper: Wrote 3 clusters 14/09/08 01:31:07 INFO driver.MahoutDriver: Program took 104405 ms (Minutes: 1.7400833333333334) 40
  41. 41. …canopy.Job -t1 3 -t2 2 -i testdata -o… 41 -t2 2 找出3群 -t1 3
  42. 42. …canopy.Job -t1 6 -t2 5 -i testdata -o… 42 -t2 5 -t1 6 找出2群
  43. 43. 尋找final檔 #hadoop fs –ls -R output ...omit... drwxr-xr-x - root hdfs 0 2014-02-07 14:48 output/clusteredPoints drwxr-xr-x - root hdfs 0 2014-02-07 14:48 output/clusters-0 drwxr-xr-x - root hdfs 0 2014-02-07 14:48 output/clusters-1-final drwxr-xr-x - root hdfs 0 2014-02-07 14:48 output/data drwxr-xr-x - root hdfs 0 2014-02-07 14:48 output/random-seeds ...omit... 43
  44. 44. 輸出結果 #mahout clusterdump --input output/clusters-1-final --pointsDir output/clusteredPoints C-0{n=1 c=[9.000, 9.000] r=[]} Weight : [props - optional]: Point: 1.0: [9.000, 9.000] C-1{n=2 c=[5.833, 5.583] r=[0.167, 0.083]} Weight : [props - optional]: Point: 1.0: [5.000, 6.000] 1.0: [6.000, 5.000] 1.0: [6.000, 6.000] C-2{n=4 c=[1.313, 1.333] r=[0.345, 0.527]} Weight : [props - optional]: Point: 1.0: [1:1.000] 1.0: [0:1.000] 1.0: [1.000, 1.000] 1.0: [2.000, 1.000] 1.0: [1.000, 2.000] 1.0: [2.000, 2.000] 44
  45. 45. 視覺化結果 org.apache.mahout.clustering.display 45
  46. 46. 網路IP分群視覺化 http://flowdm.openfoundry.org 46
  47. 47. 網路IP分群視覺化 http://flowdm.openfoundry.org 47
  48. 48. 恭喜大家 得到技能”clustering by mahout” 目前clustering技能點數為1 48
  49. 49. 下一步 挑戰真實的資料 Upload(GB) Download(GB) Flow Dtdport 172.16.10.1 53 2.2 2321k 5 172.16.10.2 10 2.1 251k 6 172.16.10.3 3.2 3.5 981k 4 172.16.10.4 1.3 5.3 12k 2 172.16.10.5 1.6 2.1 142k 4 172.16.10.6 2.8 2.6 652k 3 172.16.10.7 5.2 6.2 9k 2 172.16.10.8 6.1 1.5 65k 9 172.16.10.9 5.2 6.9 86k 3 172.16.10.10 1.8 1.9 1241k 7 49
  50. 50. 下一步 試試不同的分群 • kmeans clustering • fuzzykmeans clustering • dirichlet clustering • meanshift clustering 50
  51. 51. Recommendation 動動手玩推薦系統 51
  52. 52. 推薦系統就在你身邊 52
  53. 53. 常見應用 53
  54. 54. 線上購物 54
  55. 55. YouTube 55
  56. 56. 推薦系統類型 • content-based • collaborative filtering(協同過濾) • hybrid 56
  57. 57. collaborative filtering原理 有兩位user還沒對book-c評價, 你猜這兩位user評價如何? user對book的評價表 book-a book-b book-c User 1 5 4 5 User 2 4 5 4 User 3 5 4 User 4 1 2 User 5 2 1 1 57
  58. 58. collaborative filtering原理 user對book的評價表 book-a book-b book-c User 1 5 4 5 User 2 4 5 4 User 3 5 4 User 4 1 2 User 5 2 1 1 58
  59. 59. collaborative filtering原理 user對book的評價表 book-a book-b book-c User 1 5 4 5 User 2 4 5 4 User 3 5 4 4~5 User 4 1 2 1~2 User 5 2 1 1 59
  60. 60. 推薦系統太簡單了 60
  61. 61. 如果是這樣子呢? user對book的評價表 book1 book2 book3 book4 book5 book6 book7 book8 Book9 User1 3 2 1 5 5 1 3 1 User2 2 3 1 3 5 4 3 User3 1 2 3 3 2 1 User4 2 1 2 1 1 2 User5 3 3 1 3 2 2 3 3 2 User6 1 3 2 2 1 user7 4 4 1 5 1 3 3 4 61
  62. 62. 一個指令搞定 mahout recommenditembased 62
  63. 63. Photo Demo 63
  64. 64. 資料集介紹(就是剛剛的範例) book-a book-b book-c User 1 5 4 5 User 2 4 5 4 User 3 5 4 User 4 1 2 User 5 2 1 1 user對book的評價表 64
  65. 65. ETL #vi recom.data 1,1,5 1,2,4 1,3,5 2,1,4 2,2,5 2,3,4 3,1,5 3,2,4 4,1,1 4,2,2 5,1,2 5,2,1 5,3,1 65
  66. 66. 將資料丟到Hadoop # hadoop fs -mkdir testdata # hadoop fs -put recom.data testdata # hadoop fs -ls -R testdata -rw-r--r-- 3 root hdfs 288374 2014-02-05 21:53 testdata/recom.data 66
  67. 67. 開始Recommendation # mahout recommenditembased -s SIMILARITY_EUCLIDEAN_DISTANCE -i testdata -o output ...omit… File Input Format Counters Bytes Read=287 File Output Format Counters Bytes Written=32 14/09/04 05:46:56 INFO driver.MahoutDriver: Program took 434965 ms (Minutes: 7.249416666666667) 67
  68. 68. 顯示推薦結果 # hadoop fs -cat output/part-r-00000 3 [3:4.4787264] 4 [3:1.5212735] 68
  69. 69. 工人智慧=人工智慧 user對book的評價表 book-a book-b Book-c User 1 5 4 5 User 2 4 5 4 User 3 5 4 4~5 User 4 1 2 1~2 User 5 2 1 1 # hadoop fs -ca 3 [3:4.478726 4 [3:1.521273 69
  70. 70. 要推薦book-c給User4嗎? user對book的評價表 book-a book-b Book-c User 1 5 4 5 User 2 4 5 4 User 3 5 4 4~5 User 4 1 2 1~2 User 5 2 1 1 我們預測User4不太喜歡book-c 所以我不會推薦book-c給User4 70
  71. 71. 要推薦book-c給User3嗎? user對book的評價表 book-a book-b Book-c User 1 5 4 5 User 2 4 5 4 User 3 5 4 4~5 User 4 1 2 1~2 User 5 2 1 1 我們預測User3喜歡book-c 所以我會推薦book-c給User3 71
  72. 72. 在次恭喜大家 得到技能”recommendation by mahout” 目前recommendation技能點數為1 72
  73. 73. 下一步 Try it !!! user對book的評價表 book1 book2 book3 book4 book5 book6 book7 book8 Book9 User1 3 2 1 5 5 1 3 1 User2 2 3 1 3 5 4 3 User3 1 2 3 3 2 1 User4 2 1 2 1 1 2 User5 3 3 1 3 2 2 3 3 2 User6 1 3 2 2 1 user7 4 4 1 5 1 3 3 4 73
  74. 74. Other • Frequent pattern analysis https://systw.net/note/af/sblog/more.php?id=265 • Mahout fpgrowth https://systw.net/note/af/sblog/more.php?id=292 74
  75. 75. Other • Classification and Predication http://systw.net/note/af/sblog/more.php?id=262 • Mahout logistic http://systw.net/note/af/sblog/more.php?id=293 75
  76. 76. Summary • 快速的完成環境建立 • 一個指令完成clustering • 一個指令完成recommendation • 其他方法 76
  77. 77. Thank 77

×