推薦算法——相似性推薦和協(xié)同過濾
1 基于相似性的推薦流程
用戶偏好如何收集
用戶偏好如何整合
大多數情況我們提取的用戶行為都多于一種,如何組合這些不同的用戶行為,基本上有以下兩種方式:
不同的行為分組
一般可以分為“查看”和“購買”等等,然后基于不同的行為,計算不同的用戶 / 物品相似度。
加權操作
根據不同行為反映用戶喜好的程度將它們進行加權,得到用戶對于物品的總體喜好。一般來說,顯式的用戶反饋比隱式的權值大,但比較稀疏,畢竟進行顯示反饋的用戶是少數;同時相對于“查看”,“購買”行為反映用戶喜好的程度更大,比如:“關注”,“加入購物車”,“下訂單后取消”,“付款”反應用戶的喜好度不同。但這也因應用而異。
2 相似度如何計算
收集了用戶行為數據,經過一定的預處理和歸一化,得到一個用戶偏好的二維矩陣,一維是用戶列表,另一維是物品列表,值是用戶對物品的偏好,一般是 [0,1] 或者 [-1, 1] 的浮點數值
在用戶–物品偏好的二維矩陣中,我們可以將一個用戶對所有物品的偏好作為一個矢量來計算用戶之間的相似度,或者將所有用戶對某個物品的偏好作為一個矢量來計算物品之間的相似度
相似度和距離在定義上是相反的概念
常用到的相似度計算
都為0 S為不相關數
3 協(xié)同過濾(Collaborating Filtering)
協(xié)同過濾是利用集體智慧的一個典型方法。
協(xié)同(Collaborating)是群體行為,過濾(filtering)則是針對個人的行為。
協(xié)同過濾基于如下基本假設:如果一個人A在一個問題上和另一個人B持相同觀點,那么對于另外一個問題,比起
隨機選擇的一個路人甲,A更有可能同B持相同觀點。
生活中如果你想去看電影,一般會問問周圍的朋友,看看最近有什么好看的電影推薦,我們一般更傾向于從口味比較類似的朋友那里得到推薦。這就是協(xié)同過濾的核心思想。
協(xié)同過濾推薦算法是誕生最早,并且較為著名的推薦算法,具體又可分為兩類:
Item-based CF:
? 通過用戶對不同item的評分來評測item之間的相似性,基于item之間的相似性做出推薦
? 物以類聚
User-based CF:
? 通過不同用戶對item的評分來評測用戶之間的相似性,基于用戶之間的相似性做出推薦
? 人以群分
關聯(lián)規(guī)則 vs 協(xié)同過濾
關聯(lián)規(guī)則:
? 回答問題:某消費者購買商品A,那么他還可能買什么商品?
? 特征:直接的推薦,從整體的數據中挖掘潛在關聯(lián),與單個人的偏好無關
協(xié)同過濾:
? 回答問題:與A客戶相似的客戶群是誰?將客戶群中的物品推薦給A(A沒有的物品);與A物品相似的物品群是什么?
對某用戶,若其已經購買或A,則推薦該用戶與A相似的物品群
? 特征:間接推薦,即先找到相似的人(user based)或物(item based),然后再根據品味相似的人的偏好進行推薦
? 協(xié)同過濾= 協(xié)同(集體智慧的部分)+過濾(針對具體某個人又做了一次個性化)
4 基于用戶(User-based)的協(xié)同過濾算法
基于用戶的協(xié)同過濾,通過不同用戶對物品的評分來評測用戶之間的相似性,基于用戶之間的相似性做出推薦
簡單概括:給用戶推薦和他興趣相似的其他用戶喜歡的物品
基于用戶(User-based)的協(xié)同過濾算法—應用
如圖1,矩陣是用戶對商品的一個評級列表,橫軸是商品(書本),縱軸是用戶,對應的值是用戶對商品的評級,最高5分,最低1分,評級越高說明用戶對該商品越喜愛,空則代表用戶沒有對商品進行評級。
基于用戶的協(xié)同過濾的基本思想很簡單,基于用戶對物品的偏好找到相鄰鄰居用戶,然后將鄰居用戶喜歡的推薦給當前用戶。
計算上,就是將一個用戶對所有物品的偏好作為一個向量來計算用戶之間的相似度,找到相似鄰居后,根據鄰居的相似度權重以及他們對物品的偏好,預測當前用戶對沒有涉及的物品的偏好,計算得到一個排序的物品列表作為推薦。
圖給出了一個例子,對于用戶A,根據用戶的歷史偏好,這里只計算得到一個鄰居用戶C,然后將用戶C喜歡的物品D推薦給用戶A。
5 基于物品(Item-based)的協(xié)同過濾算法
基于item的協(xié)同過濾,通過用戶對不同item的評分來評測item之間的相似性,基于item之間的相似性做出推薦。
簡單概括:給用戶推薦和他之前喜歡的物品相似的物品。
基于物品的原理和基于用戶類似,只是在計算鄰居時采用物品本身,而不是從用戶的角度,即基于用戶對物品的偏好找到相似的物品進行推薦
從計算的角度看,就是將所有用戶對某個物品的偏好作為一個向量來計算物品之間的相似度,得到物品的相似物品后,根據用戶歷史的偏好預測當前用戶還沒有表示偏好的物品,計算得到一個排序的物品列表作為推薦
上圖給出了一個例子,對于物品A,根據所有用戶的歷史偏好,喜歡物品A 的用戶都喜歡物品C,得出物品A和物品C 比較相似,而用戶C喜歡物品A,那么可以推斷出用戶C可能也喜歡物品C
User-based CF vs Item-based CF
對于電子商務和電影音樂的推薦網站,考慮到用戶數量一般大大超過商品數量,此時基于物品的協(xié)同過濾推薦計算復雜度相對較低,是應用比較廣泛的推薦算法
對于如新聞推薦等物品增長很快,實時性較高的場合,更適合采用基于用戶的協(xié)同過濾
對于比如微博這樣的社交網站,一方面考慮到內容的數量和更新速度,基于用戶的協(xié)同過濾是一個更不錯的選擇,再加上社會網絡信息,可以增加用戶對推薦解釋的信服程度
6 案例:基于物品的協(xié)同過濾
案例背景
該網站為互聯(lián)網用戶提供個性化電影推薦服務
數據:
網站提供所有電影信息
網站收集用戶行為數據,包括瀏覽、評分和評論等各種行為數據
目標
網站幫助用戶找到還沒有看過并符合他興趣的電影列表
數據樣本
測試數據集: ? 每行3個字段,依次是用戶ID,電 影ID,用戶對電影的評分(0-5分,每0.5分為一個評分點)
實現步驟
建立物品的同現矩陣
建立用戶對物品的評分矩陣
矩陣計算推薦結果
步驟1:建立物品的同現矩陣
步驟2:建立用戶對物品的評分矩陣
步驟3:矩陣計算推薦結果
同現矩陣*評分矩陣=推薦結果
協(xié)同(集體行動)+過濾(針對個人偏好)=個性化推薦
7 協(xié)同過濾的優(yōu)缺點
? 優(yōu)點
? 能夠過濾難以進行機器自動內容分析的信息,如藝術品,音樂等。
? 共享其他人的經驗,避免了內容分析的不完全和不精確
? 有推薦新信息的能力??梢园l(fā)現內容上完全不相似的信息,可以發(fā)現用戶潛在的但自己尚未發(fā)現的興趣偏好。
? 缺點
? 冷啟動問題
? 數據稀疏問題
? 熱門物品的干擾,兩個不同領域的最熱門物品之間具有較高的相似度
8 案例:協(xié)同過濾
電影打分推薦 比較基于用戶/物品的協(xié)同過濾方案
基于內容的推薦
根據商品自身屬性或用戶定義標簽進行推薦
基于內容的推薦
基于內容的推薦-基于標簽
? 根據標簽推薦物品的基本思想就是找到用戶常用的一些標簽,然后找到具有這些標簽的熱門物品,將其推薦給用戶
? 需要注意的問題:
? 一個是要保證新穎性和多樣性,可以用TF-IDF方法來降低熱門物品的權重
? 另一個則是需要清除某些同義重復標簽和沒有意義的標簽
基于內容推薦方法的優(yōu)缺點
? 優(yōu)點
? 不需要用戶行為數據,沒有冷啟動和稀疏數據的問題。
? 能為具有特殊興趣愛好的用戶進行推薦。
? 能推薦新的或不是很流行的項目,沒有新項目問題。
? 通過推薦項目的內容特征,可以給出推薦理由。
? 有比較成熟的分類學習模型可以應用。
? 缺點
? 要求能從內容中提取出有意義的特征
? 要求內容具備結構性
? 要求用戶的興趣偏好能夠通過特征表達
9 混合推薦方法
加權型混合推薦
? 將來自不同推薦算法生成的候選結果及結果的分數,進一步進行組合(Ensemble)加權,生成最終的推薦
排序結果
? 分級型混合推薦
? 根據不同的推薦場景,將不同的推薦算法按照效果優(yōu)劣進行層次性劃分。在對應的推薦場景下,優(yōu)先采用
高可信度的推薦算法生成的結果
? 交叉混合推薦
? 將不同推薦算法的生成結果,按照一定的配比組合在一起,打包后集中呈現給用戶,保證最終推薦結果的
多樣性
10 案例:微博推薦系統(tǒng)的設計
關鍵問題-冷啟動
如何給新用戶做個性化推薦
? 根據其注冊信息進行粗粒度的推薦,如年齡,性別,愛好等
? 在新用戶注冊后為其提供一些內容,讓他們反饋對這些內容的興趣,再根據這些數據來進行推薦
? 如何將新物品推薦給用戶
? 在推薦列表中隨機給用戶展示新物品,為新物品積累曝光機會和行為數據
? 通過語義分析對物品抽取關鍵詞并賦予權重,這種內容特征類似一個向量,通過向量之間的余弦相似度便
可得出物品之間的相似度,從而進行推薦
? 新網站在數據稀少的情況下如何做個性化推薦
? 基于人工的力量,比如人工編輯熱門榜單,人工分類標注
? 依托第三方數據,比如關聯(lián)社交網絡賬號,導入聯(lián)系人信息,抓取社交內容
關鍵問題-時間因素
對于新聞資訊類推薦,時間權重很重要??梢酝ㄟ^對每一個推薦物品加入時間衰減因子,對于越久之前的物品,賦予越小的權重
? 對于Item CF,在找相似物品時著重考慮用戶最近喜歡的物品? 對于User CF,如果兩個用戶同時喜歡了相同的物品,那么可以給予這兩個用戶更高的相似度,而在推薦物品時,也可著重推薦口味相近的用戶最近喜歡的物品
? 在相似度計算時基于時間對用戶行為賦予一定權重,時間間隔越久權重越低,經過這種改進的算法往往能得到用戶更滿意的結果
關鍵問題-數據稀疏性
考慮到現在互聯(lián)網用戶和商品的規(guī)模,數據非常稀疏,直接應用協(xié)同過濾效果并不太好
? 這個問題本質上是無法完全克服的,只能一定程度上緩解
? 數據是否產生關聯(lián)比用戶的偏好更重要
? 實踐表明,稀疏數據情況下給同一個商品分別打負分(低評價)和打正分的兩個用戶要看做正相關的而非負相關的
? 基于相似性可以傳播的假設,通過擴散的算法,從原來的一階關聯(lián)(兩個用戶有多少相似打分或者共同購買的商品)到二階甚至更高階的關聯(lián),這種方法計算量比較大
? 基于單品的數據可能非常稀疏,如果把這些商品信息粗粒化,在品類的水平上數據就會變得稠密。如果能夠計算品類之間的相似性,就可以幫助進行基于品類的推薦
11 基于矩陣分解(SVD)的推薦算法
? 奇異值分解(SVD)的定義:
? 任何一個MxN的矩陣A,如果它的行數M大于或等于它的列數N,那么它就可以被轉換成以下三個矩陣的乘積:一個MxR的正交矩陣U, 一個RxR的對角矩陣(奇異值矩陣), 和一個RxN正交矩陣V的轉置矩陣
? 對于由M個產品和N個用戶組成的評分矩陣MxN,我們就可以把這個矩陣分解為 MxR 的矩陣U, RxR 的奇異值矩陣和 RxN 的矩陣V ? 取S矩陣的前幾個奇異值就可以接近原來的MxN的矩陣,而不必取完整的S
大數據 推薦系統(tǒng) 數據挖掘 智能數據 機器學習
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。