1. 程式人生 > >電商大資料專案-推薦系統實戰之推薦演算法

電商大資料專案-推薦系統實戰之推薦演算法

(1)
電商大資料專案-推薦系統實戰
http://blog.51cto.com/6989066/2325073

(七)推薦系統常用演算法
協同過濾演算法
協同過濾演算法(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