您好,登錄后才能下訂單哦!
電商大數(shù)據(jù)項(xiàng)目-推薦系統(tǒng)實(shí)戰(zhàn)(一)環(huán)境搭建以及日志,人口,商品分析
https://blog.51cto.com/6989066/2325073
電商大數(shù)據(jù)項(xiàng)目-推薦系統(tǒng)實(shí)戰(zhàn)之推薦算法
https://blog.51cto.com/6989066/2326209
電商大數(shù)據(jù)項(xiàng)目-推薦系統(tǒng)實(shí)戰(zhàn)之實(shí)時(shí)分析以及離線分析
https://blog.51cto.com/6989066/2326214
(七)推薦系統(tǒng)常用算法
協(xié)同過濾算法
協(xié)同過濾算法(Collaborative Filtering:CF)是很常用的一種算法,在很多電商網(wǎng)站上都有用到。CF算法包括基于用戶的CF(User-based CF)和基于物品的CF(Item-based CF)。
(八)Apache Mahout和Spark MLLib
① Apache Mahout簡(jiǎn)介
Apache Mahout是Apache Software Foundation (ASF)旗下的一個(gè)開源項(xiàng)目,提供了一些經(jīng)典的機(jī)器學(xué)習(xí)的算法,皆在幫助開發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序。目前已經(jīng)有了三個(gè)公共發(fā)型版本,通過ApacheMahout庫(kù),Mahout可以有效地?cái)U(kuò)展到云中。Mahout包括許多實(shí)現(xiàn),包括聚類、分類、推薦引擎、頻繁子項(xiàng)挖掘。
Apache Mahout的主要目標(biāo)是建立可伸縮的機(jī)器學(xué)習(xí)算法。這種可伸縮性是針對(duì)大規(guī)模的數(shù)據(jù)集而言的。Apache Mahout的算法運(yùn)行在ApacheHadoop平臺(tái)下,他通過Mapreduce模式實(shí)現(xiàn)。但是,Apache Mahout并非嚴(yán)格要求算法的實(shí)現(xiàn)基于Hadoop平臺(tái),單個(gè)節(jié)點(diǎn)或非Hadoop平臺(tái)也可以。Apache Mahout核心庫(kù)的非分布式算法也具有良好的性能。
Mahout主要包含以下5部分
?頻繁挖掘模式:挖掘數(shù)據(jù)中頻繁出現(xiàn)的項(xiàng)集。
?聚類:將諸如文本、文檔之類的數(shù)據(jù)分成局部相關(guān)的組。
?分類:利用已經(jīng)存在的分類文檔訓(xùn)練分類器,對(duì)未分類的文檔進(jìn)行分類。
?推薦引擎(協(xié)同過濾):獲得用戶的行為并從中發(fā)現(xiàn)用戶可能喜歡的事物。
?頻繁子項(xiàng)挖掘:利用一個(gè)項(xiàng)集(查詢記錄或購(gòu)物記錄)去識(shí)別經(jīng)常一起出現(xiàn)的項(xiàng)目。
② Spark MLLib簡(jiǎn)介
Spark MLlib(Machine Learnig lib) 是Spark對(duì)常用的機(jī)器學(xué)習(xí)算法的實(shí)現(xiàn)庫(kù),同時(shí)包括相關(guān)的測(cè)試和數(shù)據(jù)生成器。Spark的設(shè)計(jì)初衷就是為了支持一些迭代的Job, 這正好符合很多機(jī)器學(xué)習(xí)算法的特點(diǎn)。
Spark MLlib目前支持4種常見的機(jī)器學(xué)習(xí)問題: 分類、回歸、聚類和協(xié)同過濾。Spark MLlib基于RDD,天生就可以與Spark SQL、GraphX、Spark Streaming無縫集成,以RDD為基石,4個(gè)子框架可聯(lián)手構(gòu)建大數(shù)據(jù)計(jì)算中心!
下圖是MLlib算法庫(kù)的核心內(nèi)容:
九、基于用戶興趣的商品推薦
(一)基于用戶的CF(User CF)和基于物品的CF(Item CF)
?基于用戶的CF(User CF)
基于用戶的 CF 的基本思想相當(dāng)簡(jiǎn)單,基于用戶對(duì)物品的偏好找到相鄰鄰居用戶,然后將鄰居用戶喜歡的推薦給當(dāng)前用戶。計(jì)算上,就是將一個(gè)用戶對(duì)所有物品的偏好作為一個(gè)向量來計(jì)算用戶之間的相似度,找到 K 鄰居后,根據(jù)鄰居的相似度權(quán)重以及他們對(duì)物品的偏好,預(yù)測(cè)當(dāng)前用戶沒有偏好的未涉及物品,計(jì)算得到一個(gè)排序的物品列表作為推薦。圖 2 給出了一個(gè)例子,對(duì)于用戶 A,根據(jù)用戶的歷史偏好,這里只計(jì)算得到一個(gè)鄰居 - 用戶 C,然后將用戶 C 喜歡的物品 D 推薦給用戶 A。
?基于物品的CF(Item CF)
基于物品的 CF 的原理和基于用戶的 CF 類似,只是在計(jì)算鄰居時(shí)采用物品本身,而不是從用戶的角度,即基于用戶對(duì)物品的偏好找到相似的物品,然后根據(jù)用戶的歷史偏好,推薦相似的物品給他。從計(jì)算的角度看,就是將所有用戶對(duì)某個(gè)物品的偏好作為一個(gè)向量來計(jì)算物品之間的相似度,得到物品的相似物品后,根據(jù)用戶歷史的偏好預(yù)測(cè)當(dāng)前用戶還沒有表示偏好的物品,計(jì)算得到一個(gè)排序的物品列表作為推薦。圖 3 給出了一個(gè)例子,對(duì)于物品 A,根據(jù)所有用戶的歷史偏好,喜歡物品 A 的用戶都喜歡物品 C,得出物品 A 和物品 C 比較相似,而用戶 C 喜歡物品 A,那么可以推斷出用戶 C 可能也喜歡物品 C。
十、基于ALS協(xié)同過濾推薦
一)ALS的基本原理
(二)基于Spark MLLib的ALS
基本的過程是:
a.加載數(shù)據(jù)到rating RDD中
b.使用rating RDD訓(xùn)練ALS模型
c.使用ALS模型為用戶進(jìn)行物品推薦,將結(jié)果打印
d.評(píng)估模型的均方差
(三)基于Apache Mahout的ALS
1.將rating分為預(yù)測(cè)集(10%)和訓(xùn)練集(90%)
bin/mahout splitDataset -i /input/ratingdata.txt -o /output/ALS/dataset
2.使用并行ALS算法,對(duì)訓(xùn)練集來矩陣進(jìn)行分解,之后會(huì)在/output/ALS/out生成兩個(gè)矩陣U(用戶特征矩陣)和M(物品特征矩陣),以及評(píng)分
bin/mahout parallelALS -i /output/ALS/dataset/trainingSet/ -o /output/ALS/out --numFeatures 20 --numIterations 5 --lambda 0.1
3.通過預(yù)測(cè)集來對(duì)模型進(jìn)行評(píng)價(jià),評(píng)價(jià)標(biāo)準(zhǔn)是RMSE。RMSE結(jié)果會(huì)輸出在/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.最后進(jìn)行推薦
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
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。