Mahout学习路线图
Hadoop家族系列文章,主要介紹Hadoop家族產品,常用的項目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的項目包括,YARN, Hcatalog, Oozie, Cassandra, Hama, Whirr, Flume, Bigtop, Crunch, Hue等。
從2011年開始,中國進入大數據風起云涌的時代,以Hadoop為代表的家族軟件,占據了大數據處理的廣闊地盤。開源界及廠商,所有數據軟件,無一不向Hadoop靠攏。Hadoop也從小眾的高富帥領域,變成了大數據開發的標準。在Hadoop原有技術基礎之上,出現了Hadoop家族產品,通過“大數據”概念不斷創新,推出科技進步。
作為IT界的開發人員,我們也要跟上節奏,抓住機遇,跟著Hadoop一起雄起!
關于作者:
- 張丹(Conan), 程序員Java,R,PHP,Javascript
- weibo:@Conan_Z
- blog:?http://blog.fens.me
- email: bsspirit@gmail.com
轉載請注明出處:
http://blog.fens.me/hadoop-mahout-roadmap/
前言
Mahout是Hadoop家族中與眾不同的一個成員,是基于一個Hadoop的機器學習和數據挖掘的分布式計算框架。Mahout是一個跨學科產品,同時也是我認為Hadoop家族中,最有競爭力,最難掌握,最值得學習的一個項目之一。
Mahout為數據分析人員,解決了大數據的門檻;為算法工程師,提供基礎的算法庫;為Hadoop開發人員,提供了數據建模的標準;為運維人員,打通了和Hadoop連接。
Mahout就是訓象人,在Hadoop上創造新的智慧!
目錄
1. Mahout介紹
Mahout 是基于Hadoop的機器學習和數據挖掘的一個分布式框架。Mahout用MapReduce實現了部分數據挖掘算法,解決了并行挖掘的問題。
根據”Mahout In Action”書中的介紹,Mahout實現3大類算法, 推薦(Recommendation),聚類(Clustering),分類(Classification)。
下文介紹的學習路線圖,將以”Mahout In Action”書中思路展張。
2. Mahout學習路線圖
Mahout知識點,我已經列在圖中,希望幫助其他人更好的了解Mahout。
接下來,是我的學習經歷,誰都沒有捷徑。把心踏實下來,就不那么難了。
3. 我的學習經歷
之前,大概花了半年的時間,專門研究過Mahout,當時Mahout的資料非常少,中文資料更是僅僅幾篇。直到發現了“Mahout In Action”如獲至寶,開始反復地讀。先不著急上手去做什么,一遍一遍地讀。直到讀完3遍,心理才有了一點把握。
從“推薦”算法開始,UserCF, ItemCF。 記得第一次在公司給小組講的時候,還設計了一份問卷,我列出了10個網站,(其中6個IT大站,2個個人blog,2個社交類社區),分別讓大家去投票,0-5分,0為不知道,1-5為對網站喜愛程序。
問卷結果格式:
user1, website1, 5
user1, website2, 2
user1, website3, 4
user2, website3, 2
user3, website3, 5
user4, website3, 0
…..
通過這個問卷來模擬嘗試Mahout的推薦模型!計算的結果對大家來說,都是比較奇怪。為什么會有這樣的推薦呢。 然后,深入Mahout源代碼,看算法的實現,知道了相似度矩陣,距離算法,推薦算法,模型驗證等,不同業務要求,不同的算法調用,對結果都是有影響的。把書中所有的的概念,關鍵詞都整理過(可惜當時沒寫博客)。整整花了3個月,每天12個小時的強度,把推薦部分完整地學下來了。
然后,應用到實際業務中。我的任務是做“職位推薦”,我只有用戶瀏覽職位,收藏職位,申請職位的行為數據。
第一次嘗試,直接套用推薦模型,但結果非常之差。
出現問題的原因是有2點:
- 1. 職位是有時效性的,每個職位可能3個月就會過期:推薦結果包含了很多的過期職位。
- 2. 大量的用戶行為都是歷史的,甚至是2-3年前的:推薦結果不符合用戶的預期。我估計每半年用戶的職位都可能有上升,所以歷史行為是不能直接用于當前用戶的計算。
修改方案:
1. 對用戶行為數據集進行過濾,只計算最近半年內的用戶行為。
2. 對結果集進行過濾,排除過期的職位。
3. 分別用不同的算法模型計算(我記得Tanimoto的Item Base結果最好)
對于推薦結果有了大幅度的提升。故事到此就結束了!雖然我還做了更多的事情,不過這個產品由于公司結構性調整,最終沒有上線。(程序員的悲哀!)
聚類模型,我把這個算法 應用在網站用戶的活躍度分析。假設一個網站,注冊用戶1000W,每天登陸的1W。我們想了解一下,未登陸的999W用戶有什么特點!!用到Mahout的k-means和Canopy做聚類,假設1000W的用戶可能可以劃分為5個大的群體。最后我們得到了一個結果,分享到了團隊。故事又到此結束了。(實現就是這么悲哀!)
分類模型,我嘗試著用Native Bayes對我的個人郵件進行垃圾分類。按機器學習的操作流程,歷史數據健分詞后,訓練分類器,每天時時的數據通過分類器進行判斷。整個自動化過程都已經完成。故事又結束了!(接受現實吧。)
其實還有一些,我爭取都整理出來。
Mahout是有一定的學習門檻,而且需要跨學科的知識。只要堅持學習,沒有跨不過的鴻溝!樂觀努力!
4. Mahout的使用案例
已經整理成文章的案例
- 用R解析Mahout用戶推薦協同過濾算法(UserCF)
- RHadoop實踐系列之三 R實現MapReduce的協同過濾算法
- 用Maven構建Mahout項目
- Mahout推薦算法API詳解
- 從源代碼剖析Mahout推薦引擎
- Mahout分步式程序開發 基于物品的協同過濾ItemCF
- Mahout分步式程序開發 聚類Kmeans
- 用Mahout構建職位推薦引擎
正在準備更多的案例…..
相關文章:
Hadoop家族產品學習路線圖
轉載請注明出處:
http://blog.fens.me/hadoop-mahout-roadmap/
總結
以上是生活随笔為你收集整理的Mahout学习路线图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hive学习路线图
- 下一篇: 用Maven构建Hadoop项目