什么是好的推薦系統(tǒng)?個性化和非個性化推薦
最近在寫一些關于推薦系統(tǒng)的介紹,找了不少案例及資料,總覺得不夠具體及深入,沒有一些可作為基礎及科普類,于是萌生自己來寫一篇試試。
定義:推薦系統(tǒng)是信息過濾系統(tǒng)的子類,旨在預測用戶對產(chǎn)品或服務的“評分”或“偏好”。
在過去的幾年中,無論國內或國際上各大公司在推薦系統(tǒng)上投入了大量資金。2009 年,Netflix 向一個開發(fā)團隊頒發(fā)了 100 萬美元的獎金,用于獎勵其將公司推薦引擎的準確性提高 10% 的算法。
推薦系統(tǒng)主要有兩種類型:個性化和非個性化。
一、非個性化推薦
非個性化推薦系統(tǒng)(如基于流行度的推薦器)向用戶推薦最受歡迎的Item,例如前 10 部電影、最暢銷的書籍、最常購買的產(chǎn)品。
什么是好的推薦?
- 個性化的(與該用戶相關)
- 多樣化的(包括不同的用戶興趣)
- 第二次不向用戶推薦相同商品的人
- 推薦可用產(chǎn)品的一種
二、個性化推薦
個性化推薦系統(tǒng)更詳細地分析用戶數(shù)據(jù)、他們的購買、評分以及他們與其他用戶的關系。這樣,每個用戶都將獲得定制的推薦。
目前最流行的個性化推薦系統(tǒng)類型是基于內容和協(xié)同過濾。
1、基于內容
基于內容的推薦系統(tǒng)使用item或用戶元數(shù)據(jù)來創(chuàng)建特定的推薦。觀察用戶的購買歷史。例如,如果用戶已經(jīng)閱讀了一位作者的書或購買了某個品牌的產(chǎn)品,則假定該客戶偏好該作者或該品牌,并且用戶有可能在未來購買該品牌類似產(chǎn)品。假設 小紅喜歡科幻小說,而她最喜歡的作家是 劉慈欣。如果她讀 劉慈欣的書,那么她推薦的書將是瘋狂的外星人,也是劉慈欣 寫的科幻書。
實踐中的協(xié)同過濾比基于內容的方法可實現(xiàn)更好的推薦結果。也許是因為結果的多樣性不如協(xié)同過濾。
基于內容的推薦缺點:
- 濾泡現(xiàn)象:如果用戶閱讀了一本關于某種政治意識形態(tài)的書籍,并且向他推薦了與該意識形態(tài)相關的書籍,那么他將處于“他先前興趣的泡沫”中。
- 需要收集有關用戶及其偏好的大量數(shù)據(jù)以獲得最佳推薦
- 在實踐中,有 20% 的商品吸引了 70-80% 的用戶關注,而 70-80% 的商品吸引了 20% 的用戶關注。推薦的目標是介紹其他用戶第一眼看不到的產(chǎn)品。在基于內容的方法中,這個目標沒有在協(xié)同過濾中實現(xiàn)。
2、協(xié)同過濾
協(xié)同過濾的思路很簡單:利用用戶組行為向其他用戶進行推薦。由于推薦基于其他用戶的偏好,因此稱為協(xié)作。
協(xié)同過濾有兩種類型:基于內存的和基于模型的。
2.1 基于內存
基于內存的技術無需預處理即可應用于原始數(shù)據(jù)。它們易于實施,由此產(chǎn)生的建議通常易于解釋。每次都需要對所有推薦的數(shù)據(jù)進行預測。
有兩種類型:基于用戶和基于Item的協(xié)同過濾。
- 基于用戶:“與你相似的用戶也喜歡……”產(chǎn)品是根據(jù)與觀察到的用戶相似的用戶購買/喜歡的推薦給用戶的。如果我們說用戶相似,那是什么意思?例如,小明和小紅喜歡科幻書籍。當一本新的科幻書出現(xiàn)時,小明買了那本書,因為小紅也喜歡科幻書,那么我們可以向小紅也推薦小明購買的書。
- 基于Item:“喜歡這個產(chǎn)品的用戶也喜歡......”如果小明、小紅和小花對科幻書籍 《時間簡史》 和 《時間機器》 給予高度評價,例如給 5 星,那么當 小紅購買 《時間簡史》 這本書時,那么《時間機器》這本書也被推薦給他,因為系統(tǒng)根據(jù)用戶評分將書籍識別為相似。
如何計算用戶-用戶和Item-Item相似度?
與使用關于用戶或Item的元數(shù)據(jù)的基于內容的方法不同,基于協(xié)同過濾的方法觀察并記憶用戶行為,例如用戶是否喜歡或Item是否被某個用戶喜歡或評價。
例如,這個想法是向小明推薦新的科幻小說。
步驟:
- 創(chuàng)建用戶Item評分矩陣
- 創(chuàng)建用戶-用戶相似度矩陣 (以下是示例)
- 計算每兩個用戶之間的余弦相似度(替代方案:調整余弦相似度、皮爾遜相似度、斯皮爾曼等級相關性)。這樣就得到了一個用戶-用戶矩陣。該矩陣小于初始用戶Item評分矩陣。
- 查找相似用戶
- 在用戶-用戶矩陣中,觀察到與小明最相似的用戶
- 候選生成
- 當找到小明最相似的用戶時,我們會查看這些用戶閱讀的書籍以及他們給出的評分。
- 候選人評分
- 根據(jù)評分,從小明最相似的用戶最喜歡的書籍到他們最不喜歡的書籍進行排名。
- 結果被歸一化(從 0 到 1)
- 候選過濾
- 正在檢查小明是否已經(jīng)購買了這些書。那些書應該被淘汰,因為他已經(jīng)讀過了。
Item相似度的計算以相同的方式完成,并且具有與用戶-用戶相似度相同的步驟。
基于用戶和基于Item的方法的比較
Item之間的相似度比用戶之間的相似度更穩(wěn)定,因為數(shù)學書永遠是一本數(shù)學書,但用戶可以改變主意,例如他上周喜歡的東西下周可能不喜歡。另一個優(yōu)點是產(chǎn)品比用戶少。這導致得出的結論是,具有相似性分Item-Item矩陣將小于用戶-用戶矩陣。如果新用戶訪問該站點,而基于用戶的方法在這種情況下是存在的,那么基于Item的方法也是一種更好的方法。
2.2 基于模型
這些模型是使用機器學習算法開發(fā)的。創(chuàng)建一個模型并基于它提供推薦候選結果,從而加快系統(tǒng)的工作。這種方法有更好的可擴展性。這種方法經(jīng)常使用降維,最著名的方案是矩陣分解。
矩陣分解
如果有來自用戶的反饋,例如,用戶觀看了特定的電影或閱讀了特定的書并給出了評分,則可以以矩陣的形式表示,其中每行代表特定用戶,每列代表一個特定Item。由于用戶幾乎不可能對每一個Item進行評分,因此該矩陣將有許多未填充的值,這稱為稀疏性。矩陣分解方法用于找到一組潛在因素并使用這些因素確定用戶偏好??梢酝ㄟ^分析用戶行為來評價潛在信息,潛在因素也稱為特征。
為什么要分解?
評分矩陣是兩個較小矩陣的乘積:Item特征矩陣和用戶特征矩陣。
矩陣分解步驟:
隨機用戶和Item矩陣的初始化
Ratings矩陣由用戶乘以轉置的item矩陣得到
矩陣分解的目標是最小化損失函數(shù)(預測矩陣和實際矩陣的評級差異必須最小)。每個評分可以描述為用戶矩陣中的行和Item矩陣中的列的點積。
為了最小化損失函數(shù),我們可以應用隨機梯度下降(SGD)或交替最小二乘法(ALS)。這兩種方法都可用于隨著新評級的出現(xiàn)而增量更新模型。SGD 比 ALS 更快、更準確。
3、混合推薦
混合推薦代表不同推薦者的組合。一般是幾個不同推薦器的組合將比單個算法提供更好的結果,實際上大多公司都是使用混合推薦
4、推薦系統(tǒng)指標
將使用哪些指標取決于要解決的業(yè)務指標。如果我們認為我們已經(jīng)做出了最好的推薦方案并且指標很好,但在實踐中它很不理想,那么我們的推薦方案就是不理想的。最重要的是用戶對推薦系統(tǒng)要有信心,使用推薦系統(tǒng)的結果。如果我們向他推薦前 10 個產(chǎn)品,而只有 2 或 3 個與他相關,用戶會認為推薦系統(tǒng)不好。出于這個原因,我們的想法不是總是推薦前 10 個Item,而是推薦超過某個閾值的Item項目。
指標:
- 準確度(MAE、RMSE)
- 測量前 N 個推薦人:
命中率:首先在訓練數(shù)據(jù)中找到該用戶歷史中的所有Item;刪除其中一項(交叉驗證);使用所有Item作為推薦者并找到前 10 條推薦;如Item出現(xiàn)在前 10 條推薦中,則它是成功的。如果沒有,它是不理想的。
平均互惠命中率(ARHR):我們推薦用戶在排名中排名靠前的Item比排名靠Item更多。
累積命中率:那些低于某個閾值的評分被拒絕,例如低于 4 的評分
評分命中率- 計算每個item的評分,以確定哪種評分獲得更多點擊。將 top-N 列表中每種評分的命中數(shù)相加,然后除以 top-N 列表中每個評分的Item總數(shù)。
在線 A/B 測試:A/B 測試是對推薦系統(tǒng)進行在線評估的最佳方式。
推薦系統(tǒng)實際使用中的挑戰(zhàn)
1、冷啟動問題:出現(xiàn)了新用戶,推薦什么?
- 例如前 10 名最暢銷的產(chǎn)品
- 10大促銷產(chǎn)品
- 可以采訪用戶以了解他喜歡什么
2、新用戶出現(xiàn)了,新產(chǎn)品如何被用戶認可?
- 使用基于內容的屬性
- 隨機添加新產(chǎn)品到用戶推薦
- 推廣新產(chǎn)品
3、行為攪動
- 由于用戶隨時間改變行為,一定量的隨機化應該是推薦系統(tǒng)的一部分,以刷新推薦Item的前 N 個列表
4、注意不要對用戶進行任何形式的區(qū)別對待
5、避免推薦結果包含粗俗詞語、宗教和政治話題或毒品的商品