電商大數據項目-推薦系統實戰之推薦算法(三)

電商大數據項目-推薦系統實戰(一)環境搭建以及日誌,人口,商品分析
http://blog.51cto.com/6989066/2325073
電商大數據項目-推薦系統實戰之推薦算法
http://blog.51cto.com/6989066/2326209
電商大數據項目-推薦系統實戰之實時分析以及離線分析
http://blog.51cto.com/6989066/2326214

(七)推薦系統常用算法
協同過濾算法
協同過濾算法(Collaborative Filtering:CF)是很常用的一種算法,在很多電商網站上都有用到。CF算法包括基於用戶的CF(User-based CF)和基於物品的CF(Item-based CF)。

(八)Apache Mahout和Spark MLLib
① Apache Mahout簡介
Apache Mahout是Apache Software Foundation (ASF)旗下的一個開源項目,提供了一些經典的機器學習的算法,皆在幫助開發人員更加方便快捷地創建智能應用程序。目前已經有了三個公共髮型版本,通過ApacheMahout庫,Mahout可以有效地擴展到雲中。Mahout包括許多實現,包括聚類、分類、推薦引擎、頻繁子項挖掘。
Apache Mahout的主要目標是建立可伸縮的機器學習算法。這種可伸縮性是針對大規模的數據集而言的。Apache Mahout的算法運行在ApacheHadoop平臺下,他通過Mapreduce模式實現。但是,Apache Mahout並非嚴格要求算法的實現基於Hadoop平臺,單個節點或非Hadoop平臺也可以。Apache Mahout核心庫的非分佈式算法也具有良好的性能。
Mahout主要包含以下5部分
頻繁挖掘模式:挖掘數據中頻繁出現的項集。
聚類:將諸如文本、文檔之類的數據分成局部相關的組。
分類:利用已經存在的分類文檔訓練分類器,對未分類的文檔進行分類。
推薦引擎(協同過濾):獲得用戶的行爲並從中發現用戶可能喜歡的事物。
頻繁子項挖掘:利用一個項集(查詢記錄或購物記錄)去識別經常一起出現的項目。

② Spark MLLib簡介
Spark MLlib(Machine Learnig lib) 是Spark對常用的機器學習算法的實現庫,同時包括相關的測試和數據生成器。Spark的設計初衷就是爲了支持一些迭代的Job, 這正好符合很多機器學習算法的特點。
Spark MLlib目前支持4種常見的機器學習問題: 分類、迴歸、聚類和協同過濾。Spark MLlib基於RDD,天生就可以與Spark SQL、GraphX、Spark Streaming無縫集成,以RDD爲基石,4個子框架可聯手構建大數據計算中心!
下圖是MLlib算法庫的核心內容:

九、基於用戶興趣的商品推薦
(一)基於用戶的CF(User CF)和基於物品的CF(Item CF)
基於用戶的CF(User CF)
基於用戶的 CF 的基本思想相當簡單,基於用戶對物品的偏好找到相鄰鄰居用戶,然後將鄰居用戶喜歡的推薦給當前用戶。計算上,就是將一個用戶對所有物品的偏好作爲一個向量來計算用戶之間的相似度,找到 K 鄰居後,根據鄰居的相似度權重以及他們對物品的偏好,預測當前用戶沒有偏好的未涉及物品,計算得到一個排序的物品列表作爲推薦。圖 2 給出了一個例子,對於用戶 A,根據用戶的歷史偏好,這裏只計算得到一個鄰居 - 用戶 C,然後將用戶 C 喜歡的物品 D 推薦給用戶 A。
基於物品的CF(Item CF)
基於物品的 CF 的原理和基於用戶的 CF 類似,只是在計算鄰居時採用物品本身,而不是從用戶的角度,即基於用戶對物品的偏好找到相似的物品,然後根據用戶的歷史偏好,推薦相似的物品給他。從計算的角度看,就是將所有用戶對某個物品的偏好作爲一個向量來計算物品之間的相似度,得到物品的相似物品後,根據用戶歷史的偏好預測當前用戶還沒有表示偏好的物品,計算得到一個排序的物品列表作爲推薦。圖 3 給出了一個例子,對於物品 A,根據所有用戶的歷史偏好,喜歡物品 A 的用戶都喜歡物品 C,得出物品 A 和物品 C 比較相似,而用戶 C 喜歡物品 A,那麼可以推斷出用戶 C 可能也喜歡物品 C。

十、基於ALS協同過濾推薦
一)ALS的基本原理

(二)基於Spark MLLib的ALS

基本的過程是:
a.加載數據到rating RDD中
b.使用rating RDD訓練ALS模型
c.使用ALS模型爲用戶進行物品推薦,將結果打印
d.評估模型的均方差

(三)基於Apache Mahout的ALS
1.將rating分爲預測集(10%)和訓練集(90%)
bin/mahout splitDataset -i /input/ratingdata.txt -o /output/ALS/dataset
電商大數據項目-推薦系統實戰之推薦算法(三)

2.使用並行ALS算法,對訓練集來矩陣進行分解,之後會在/output/ALS/out生成兩個矩陣U(用戶特徵矩陣)和M(物品特徵矩陣),以及評分
bin/mahout parallelALS -i /output/ALS/dataset/trainingSet/ -o /output/ALS/out --numFeatures 20 --numIterations 5 --lambda 0.1
電商大數據項目-推薦系統實戰之推薦算法(三)
3.通過預測集來對模型進行評價,評價標準是RMSE。RMSE結果會輸出在/output/ALS/rmse/rmse.txt
bin/mahout evaluateFactorization -i /output/ALS/dataset/probeSet/ -o /output/ALS/rmse --userFeatures /output/ALS/out/U --itemFeatures output/ALS/out/M
4.最後進行推薦
bin/mahout recommendfactorized -i /output/ALS/out/userRatings -o /output/ALS/recommendations --userFeatures /output/ALS/out/U --itemFeatures output/ALS/out/M --numRecommendations 6 --maxRating 5

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