基于hadoop的推薦算法-mahout版

基于hadoop的推薦算法-mahout版 - - ITeye技術網(wǎng)站 http://blackproof.iteye.com/blog/2110877

求項目相似矩陣是基于項目的協(xié)同過濾算法的核心
公式有很多種,核心是物品i和物品j相關用戶的交集與并集的商


基于hadoop的推薦算法,講其中mahout實現(xiàn)的基于項目的推薦算法
分為4步:
1.獲得人-物 用戶矩陣
輸入為所有人對物品的評價或關聯(lián)
map端輸出key為人,value為物品+傾好度
reeduce端輸出key為人,vallue為多個物品+傾好度

2.獲得物-物 項目矩陣
輸入為“用戶矩陣”,講每一行人-物數(shù)據(jù)中的物品做笛卡爾積,生產(chǎn)成物-物的關聯(lián)
map端輸出為key為物,value為關聯(lián)度
reduce端輸出key為物,value為多個物的關聯(lián)度
(可以根據(jù)各種規(guī)則生成項目相似度矩陣表,此處算法帶過)
修改:
求項目相似矩陣是基于項目的協(xié)同過濾算法的核心
公式有很多種,核心是物品i和物品j相關用戶的交集與并集的商
mahout使用的公式是1.dot(i,j) = sum(Pi(u)Pi(u))
2.norms(i) = sum(Pi(u)^2)
3.simi(i,j) = 1/(1+(norms(i)-2
dot(i,j)+noorm(i))^1/2)

mahout的實現(xiàn)方法是
第一個job,用物品-人的矩陣,求得norms,即物品的用戶平方和,輸出是物-norms
第二個job,Map:用人-物的矩陣,求Pi(u)Pi(u),即相同用戶的物品的評價的乘機,輸出物-多個對端物品的Pi(u)Pi(u)
Reduce:用物-多個對端物品的Pi(u)*Pi(u)和物-norms,求得物品的相似矩陣(因為這個時候可以匯總所有和這個物品相關的物品的dot)
第三個job,補全物品的相似矩陣

3.獲得用戶-項目相似矩陣
輸入為人-物 用戶矩陣 和 物-物 項目矩陣
Map端輸出key為物,value為類VectorOrPrefWritable,是包含物與人的傾好度,或是物與物的相似度
reduce端輸出key為物,value為類VectorAndPrefWritable,是匯總當個物品到所有人的傾好度和到所有物品的相似度

4.獲得用戶推薦矩陣
輸入為VectorAndPrefWritable
Map端輸出為key:人,value:物+系數(shù)(map端根據(jù)單個物品貢獻的系數(shù)生成推薦系數(shù),也就是人到物品A的傾好度*物品A到其他物品的相似度)
reduce端輸出為key:人,,value:推薦項目+系數(shù)(reduce端使用自定公式,匯總所有單物品貢獻的四叔,求人到其他項目的傾好度,取topn作為當前用戶的推薦項目)

再在這里貼幾個mahout推薦算法分析的帖子:
http://eric-gcm.iteye.com/blog/1817822
http://eric-gcm.iteye.com/blog/1818033
http://eric-gcm.iteye.com/blog/1820060

以下是mahout代碼:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容