推薦引擎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的配置等資料可以參考:

  1. Linux環境下RHadoop配置筆記

  2. Hadoop1.2.1僞分佈模式安裝教程

  3. Hadoop1.2.1僞分佈式升級全分佈式集羣改裝筆記

  4. 搭建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 的方法對購買記錄進行並行統計和彙總。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章