如何利用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係數等等。
根據上述“距離”的演算法,可以找出與自己“口味一樣”的人了,但這並不是目的。目的是找出推薦的物品。
協同過濾(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進行個性推薦?機器學習Spark
- 【大資料 Spark】利用電影觀看記錄資料,進行電影推薦大資料Spark
- 母嬰電商網站是如何進行個性化推薦的網站
- Spark MLlib FPGrowth演算法Spark演算法
- 有贊個性化推薦能力的演進與實踐
- 推薦系統應該如何保障推薦的多樣性?
- AI開源專案 - Spark MLlibAISpark
- Spark推薦系統實踐Spark
- 百億資料個性化推薦:彈幕工程架構演進架構
- 愛奇藝個性化推薦排序實踐排序
- 個性化推薦系統來了
- 餐館個性化推薦應用
- 推薦如何建立一個MAILLISTAI
- 機器學習庫Spark MLlib簡介與教程機器學習Spark
- Spark MLlib學習(1)--基本統計Spark
- Spark MLlib 核心基礎:向量 And 矩陣Spark矩陣
- 薦書 | 《利用Python進行資料分析》Python
- python利用ffmpeg進行rtmp推流直播Python
- Amazon和Netflix的個性化推薦是如何工作的?
- 智慧推薦系統:個性化推薦引領消費新潮流
- Spark MLlib SVM 文字分類器實現Spark文字分類
- Spark MLlib NaiveBayes 貝葉斯分類器SparkAI
- 個性化推薦引擎:外界對推薦演算法攻擊的影響演算法
- 個性化推薦系統實踐應用
- IDEA外掛和個性化配置推薦Idea
- 從Spark MLlib到美圖機器學習框架實踐Spark機器學習框架
- 如何利用AI技術推進班組建設?AI
- 第三篇:一個Spark推薦系統引擎的實現Spark
- 美圖個性化推薦的實踐與探索
- 攜程個性化推薦演算法實踐演算法
- 如何提升推薦系統的可解釋性?京東智慧推薦賣點技術全解析
- 如何提升推薦系統的可解釋性?京東智慧推薦賣點技術全解析!
- Spark Machine Learning 04 構建基於Spark的推薦引擎 (待完善)SparkMac
- 推薦一個工具
- 乾貨|個性化推薦系統五大研究熱點之可解釋推薦(五)
- 如何利用 github 進行多人協作開發Github
- 如何利用PPPOE進行ASDL撥號連線?
- 對於相同喜好的使用者,電商高手用Spark MLlib程式碼如何操作?Spark