推薦引擎mahout安裝與配置
一、硬件環境
操作系統:Linux ubuntu-13.04-desktop-i386
jdk安裝版本:jdk-7u51-linux-i586
Hadoop版本:Hadoop-1.1.1(一個Namenode,三個Datanode部署)
二、安裝步驟
在Mahout安裝之前讀過幾篇有關機器學習的文章,面對協同過濾、分類聚類等算法的講解我是深感無力啊,那么深奧的算法實現簡直看著就要哭了好嘛,但慶幸的是Mahout的安裝配置非常簡單,甚至比Hadoop偽集群配置還要簡單。
進入Mahout官網找到下載路徑,我們下載0.9版本。
首先要做的是解壓:
tar -zxvf mahout-distribution-0.9.tar.gz /home/mhadoop/software
然后是配置環境變量。在/etc/profile配置文件中加入
MAHOUT_HOME=/home/mhadoop/software/mahout-distribution-0.9 PATH=$MAHOUT_HOME/bin CLASSPATH=$MAHOUT_HOME/lib export MAHOUT_HOME
然后在單機上檢驗Mahout是否安裝完成。使用如下命令看是否能呈現出Mahout中一些集成的算法。
mahout -help
三、Mahout運行測試
先下載一個數據包作為準備:synthetic_control.data,下載地址,并把這個文件放在$MAHOUT_HOME目錄下。
然后啟動Hadoop:
start-all.sh
創建測試目錄testdata,并把數據導入到這個tastdata目錄中(這里的目錄的名字只能是testdata):
hadoop fs -mkdir testdata # hadoop fs -put /home/mhadoop/software/mahout-distribution-0.9/synthetic_control.data testdata
運行使用kmeans算法執行程序:
hadoop jar /home/mhadoop/software/mahout-distribution-0.9/mahout-examples-0.9-job.jar org.apache.mahout.clustering.syntheticcontrol.kmeans.Job
等幾分鐘過后,查看結果:
hadoop fs -lsr output
如果在一大堆文件中看到以下結果那么算法即運行成功,你的Mahout安裝也就成功了。
clusteredPoints clusters-0 clusters-1 clusters-10 clusters-2 clusters-3 clusters-4 clusters-5 clusters-6 clusters-7 clusters-8 clusters-9 data
四、單節點向全分布式轉換
Mahout沒有Hadoop那么繁瑣與復雜,只要你在一臺單機上配好環境之后,當你將這個系統復制到其他虛擬機上時,即可直接使用,不需要進行任何配置。
有關Hadoop的配置等資料可以參考:
附:Mahout簡介
Mahout 是一套具有可擴充能力的機器學習類庫。它提供機器學習框架的同時,還實現了一些可擴展的機器學習領域經典算法的實現,可以幫助開發人員更加方便快捷地創建智能應用程序。通過和 Apache Hadoop 分布式框架相結合,Mahout 可以有效地使用分布式系統來實現高性能計算。
Mahout 現在提供 4 種使用場景的算法。
推薦引擎算法:通過分析用戶的使用行為的歷史記錄來推算用戶最可能喜歡的商品、服務、套餐的相關物品。實現時可以基于用戶的推薦(通過查找相似的用戶來推薦項目)或基于項目的推薦(計算項目之間的相似度并做出推薦)。
聚類算法:通過分析將一系列相關的物品等劃分為相關性相近的群組。
分類算法:通過分析一組已經分類的物品,將其他未分類的其他物品按同樣規則歸入相應的分類。
相關物品分析算法:識別出一系列經常一起出現的物品組(經常一起查詢、放入購物 車等)。
Mahout 算法所處理的場景,經常是伴隨著海量的用戶使用數據的情況。通過將 Mahout 算法構建于 MapReduce 框架之上,將算法的輸入、輸出和中間結果構建于 HDFS 分布式文件系統之上,使得 Mahout 具有高吞吐、高并發、高可靠性的特點。最終,使業務系統可以高效快速地得到分析結果。
MapReduce 應用場景
視頻分析和檢索
使用 Hadoop Map/Reduce 算法,將存放在視頻圖片庫中的海量數據并行分析檢索,并可以將分析結果實時匯總,以提供進一步的分析及使用。Map/Reduce 算法使得原來需要幾天的分析計算縮短到幾個小時,如果需要甚至可以通過添加服務器的方式線性增加系統的處理能力。新的算法,比如數字城市中的車牌識別、套牌分析、車輛軌跡分析等應用,都通過 Map/Reduce 算法部署到服務器集群中。
客戶流失性分析
風險分析需要在不同數據源的海量數據中使用模式識別技術尋找出具有風險傾向的個體或公司。海量數據的存儲、搜索、讀取和分析都是需要高計算能力和高吞吐量的系統來實現。使用 Map/Reduce算法可以將復雜的計算動態地分布到服務器集群中的各臺服務器上并行處理,可以通過服務器的線性擴充輕易突破計算能力的瓶頸,解決海量數據高性能計算的問題。某運行商將所有的通訊記錄實時導入到 HBase 中,一方面通過 HBase 提供實時的通訊記錄查詢功能,另一方面通過Map/Reduce 分析用戶的歷史通訊記錄以識別出優質客戶;當他們的通訊量顯著減少時,意味著這些用戶可能已轉移到其他運行商,從而可以采取特定優惠措施留住這些用戶。
推薦引擎
推薦引擎工具用于找出物品之間的相關性,然后推薦給用戶相似的物品,從而達到進一步吸引用戶,提高用戶粘性的目的。某購物網站采用 Map/Reduce 分析大量用戶的購買記錄,計算購買記錄間的相似性,從而找出商品間的相關度。然后以商品為索引列出相關的其他商品。在用戶購買了某一個商品后,網站根據分析結果推薦給用戶可能感興趣的其他商品。由于用戶的購買記錄是海量數據,要在特定時間內及時得到分析結果,必需采取 Map/Reduce 的方法對購買記錄進行并行統計和匯總。