1. 程式人生 > >如何利用Spark MLlib進行個性推薦?

如何利用Spark MLlib進行個性推薦?

個性推薦

在現今的推薦技術和算法中,最被大家廣泛認可和采用的就是基於協同過濾的推薦方法。


協同過濾(Collaborative Filtering, 簡稱CF) 是利用集體智慧的一個典型方法。換句話說,就是借鑒和你相關人群的觀點來進行推薦。


MLlib中的協同過濾,常應用於推薦系統。

利用某興趣相投、擁有共同經驗之群體的喜好,來推薦使用者感興趣的資訊,補充用戶-商品(User-Item)效用矩陣中所缺失的部分

MLlib當前支持基於模型的協同過濾,其中用戶和商品通過一小組隱語義因子進行表達,並且這些因子也用於預測缺失的元素。

為此, MLlib實現了交替最小二乘法(ALS) 來學習這些隱性語義因子。


基於用戶的協同過濾(User CF)

基於用戶對物品的偏好找到相鄰鄰居用戶,然後將鄰居用戶喜歡的推薦給當前用戶。上述過程就屬於User CF。

基於物品的CF(Item CF)

原理和基於用戶的CF類似,只是在計算鄰居時采用物品本身,而不是從用戶的角度,即基於用戶對物品的偏好找到相似的物品,然後根據用戶的歷史偏好,推薦相似的物品給他。

兩者的計算復雜度和適用場景皆不同


圖書推薦的例子

技術分享


數據格式:“用戶 書 打分”

用戶1和5,具有相同的興趣。他們都喜歡101這本書,對102的喜歡弱一些,對103的喜歡更弱

用戶1和4,具有相同的興趣,他們都喜歡101和103,沒有信息顯示用戶4喜歡102。

用戶1和2,興趣好像正好相反,用戶1喜歡101,但用戶2討厭101,用戶1喜歡103而用戶2正好相反。

用戶1和3,交集很少,只有101這本書顯示了他們的興趣

技術分享


那麽應該給用戶1推薦哪本書?不是101, 102或者103,因為用戶已購買,推薦系統需要發現新的事物。

直覺上,用戶4、5與用戶1類似,所以推薦一些用戶4和5喜歡的書籍,給用戶1是不錯的。

這樣使得104、105和106成為可能的推薦。

整體上看,104是最有可能的一個推薦,這基於104的4.5和4.0的偏好打分。


大部分的推薦系統,通過給item評價打分來實現。

評價推薦系統的一種方式,是評價它的評估偏好值的質量

評價評估偏好和實際偏好的匹配度。


訓練集和打分

計算評估值和實際值之間的平均距離,分值越低越好。

0.0表示非常好的評估 ,這說明評估值和實際值根本沒有差距

技術分享


可以通過和其它朋友共同喜歡某個或某類影片,來確定用戶相似

通常是通過“距離”來表示相似

例如:歐幾裏得距離、皮爾遜相關度、曼哈頓距離、Jaccard系數等等。

技術分享

根據上述“距離”的算法,可以找出與自己“口味一樣”的人了,但這並不是目的。目的是找出推薦的物品。


本文出自 “中科院計算所培訓” 博客,謝絕轉載!

如何利用Spark MLlib進行個性推薦?