2012年9月30日 星期日

[筆記] 從推薦系統到Apache Mahout

Source: apache-mahout

最近閒暇之餘在研究一個題目 - 推薦系統,怎麼會想要研究這個題目呢?因為鳥先生最近熱血於規劃他的美食推薦系統(不過那又是另一個故事了),而我們的分工方式就是他負責前端,我負責後端,結果這個恐怖的推薦系統似乎就落到我頭上!? 推薦系統.....一點概念也沒有,於是乎上網搜尋了相關資訊,看到了這篇"How to build a recommender system presentation" 。看完了整個發毛,遙想當年統計學低空掠過,畢業後就還給老師了,上了研究所去旁聽machine learning,也因為統計學早就還給老師了所以整個鴨聽雷...囧rz...

直到今天看到了一個影片,就突然喚醒了我的記憶 (隨著年紀增長記憶力越來越低落...)

(老外真的都很會做一些淺顯易懂的影片~:P)

Mahout ! 就是那道光,於是我又想起了今年Java Two 王建興大師演講的題目似乎就是在介紹利用Mahout實作的推薦系統[1] (原諒我到處趕場,就是沒聽到這場),然後才發現一系列他寫的關於推薦系統的文章[2][3][4],其中這一段真是打動我的心啊
當站在Mahout的肩膀來開發推薦系統時,你會發現,過去我們在開發推薦系統或機器學習的應用中,最耗費時間的環節之一,也就是開發這些演算法甚至是打 造應用程式框架,突然間都消除了。而且,更重要的是,和你一起競爭的開發者或團隊,也都站在和你一樣的立足點上一起出發,因為大家都可以憑藉著 Mahout的力量,立即得到這一切,開發應用程式的關鍵和瓶頸似乎轉移了。

不過這是大師的觀點,對於我們這種Machine Learning 小白,看完文章後只有劉姥姥進大觀園的感覺,除了驚嘆Mahout 的強大外,更暗自覺得不妙(要新學的東西也太多了吧....囧),因為Mahout被建造的目的主要是提供Machine Learning 所需要的各種演算法引擎(推薦只是Machine Learning 的子集),所以除了推薦系統外(Mahout中專指協同過濾式的推薦),更提供分類演算法、群集演算法、模式探勘(Pattern Mining)、降維(Dimension Reduction),以及向量相似度(Vector Similarity)....等[5]各種演算法引擎。所以說這就好像進到了蝙蝠俠的武器庫裡,擁有各式各樣殺傷力強大的武器,但在使用前還是得先去了解每個武器的特性,適合使用的場合,不然只會浪費了這麼好的武器,甚至還會被後座力傷到。

所以在使用前似乎應該先服用coursera 的線上課程,有個基礎的了解?
(那個誰誰誰...快去唸書啊...Orz...)

除了了解原理外,所以接下來該怎麼玩?

1. 利用Mahout 單機板模是學習使用這些工具與API
2. 架設單機版 Hadoop 嘗試讓 Mahout 的程式能在上面跑
3. 如果要進入Production ,我想最方便的方法就是讓程式跑在 AWS Elastic MapReduc

很好...看樣子有得忙了...

延伸閱讀:

IBM - Mahout 介紹

Reference:

[1] 沙中撈金術﹣談開放原始碼的推薦系統
[2] 適合現實應用的混合推薦系統
[3] 以人數與內容特徵建立推薦系統
[4] 憑藉推薦系統來活化長尾的部分
[5] 大象背上的男人:Mahout
張貼留言