1. 程式人生 > >推薦系統漫談

推薦系統漫談

bsp d+ 解決 復雜 負責 人工 性問題 新用戶 反饋

  如今,推薦系統已經在電商平臺、信息流分發平臺、廣告平臺等等,在處理大量用戶信息的時,解決信息過載問題的重要手段。推薦系統是一個較大的系統,而我立身算法角度,談一談我對推薦系統中推薦算法的理解與看法。

推薦系統一般來講主要分為兩個部分:召回部分排序部分。做了三年的算法後,給我的感覺,大部分的場景其實都可以用推薦算法這兩個部分來套(當然,具體問題還是可以具體分析,這裏說的只是一種解決問題的套路而已,並不是說方法通用)。

  推薦系統發展到現在其實已經有十多年了,這期間有較多的算法被業界精英們紛紛提出,但經過前輩們的大量的實踐證明,沒有一個算法可以通用的解決所有的問題,這其實也從另外一個層面說明,為什麽推薦系統需要投入一個團隊的人力來做這個事情。

推薦算法需要解決的問題:

1、將用戶需要的商品或者信息在合適的時候推薦給到相應的用戶

2、冷啟動問題

3、數據稀疏問題

4、算法的穩定性

5、大數據問題

6、多樣性和新穎性問題

7、長期興趣和短期興趣的融合

下面主要根據推薦系統的發展歷程來說說推薦系統中推薦算法:

1、基於規則的方法

該方法一般是采用一些人工的先驗知識,制定一些規則決定推薦給到用戶商品或者廣告。最常見的就是熱門推薦。這種方法推薦可能一定程度上丟失個性化,因為熱門推薦是全局角度來統計的。

2、基於內容的推薦方法

該方法是借助完善的用戶畫像,根據用戶不同維度的信息來進行推薦,並且借助數據挖掘的方法,了解不同特征的用戶對不同商品/廣告的偏好,以此為推薦結果給到用戶。

這種方法存在一個問題是用戶的特征可能維度較多,而哪一個維度更重要一些是需要一定的先驗知識的。

3、基於協同過濾的推薦方法

該方法通常來講一般分為兩種:UserBased CF和ItemBased CF

(1)UserBasedCF:該方法是通過用戶,找到該用戶相似的用戶,再根據相似用戶的行為,推薦給該用戶

(2)ItemBasedCF:該方法是通過用戶購買的商品,通過找到該商品相似的商品,將相似的商品推薦給該用戶

從上面的介紹可以看出,這兩種方法都需要計算相似度(用戶相似度或者商品相似度),常見的相似度有Jacarrd距離,Cos距離等。該方法主要的缺點是相似度計算效率比較低。且存在冷啟動問題。

4、基於模型的推薦方法

  該方法是通過用戶對已購買的商品的一個反饋行為得到一個評分矩陣(如:電影評分矩陣),采用矩陣分解的方法進行分解,得到一個user和item矩陣。再來計算用戶對商品的偏好。

  該方法優點是可以解決數據稀疏性問題,缺點是:前提是用戶存在行為數據,已評價的數據。這就存在一個冷啟動的問題,即新用戶沒有任何行為的用戶如何給出推薦結果呢?

  常見的矩陣分解方法有:SVD,SVD++,ALS等

5、混合推薦

一般稍微復雜推薦系統是包含召回和排序兩個過程,而上面介紹的四種方法往往都是在召回的過程中。而工業界負責的推薦會加上一個精排過程。該過程主要是通過機器學習的方法進行排序。需要用到LTR方法。

即前面四種方法可以作為四路召回,最後再進行精排。

技術分享圖片

6、評價指標

說了推薦算法的一些方法,最後肯定要說一下評價指標:

(1)MAE:平均絕對誤差

(2)MSE&RMSE

(3)Precision:TOPN的精確度

(4)Recall:TOPN的召回率

(5)F1:TOPN的F1指標

(6)AUC:TOPN的AUC

(7)新穎度

推薦系統漫談