現在,推薦系統已經在電商平臺、信息流分發平臺、廣告平臺等等,在處理大量用戶信息的時,解決信息過載問題的重要手段。推薦系統是一個較大的系統,而我立身算法角度,談一談我對推薦系統中推薦算法的理解與見解。算法
推薦系統通常來說主要分爲兩個部分:召回部分和排序部分。作了三年的算法後,給個人感受,大部分的場景其實均可以用推薦算法這兩個部分來套(固然,具體問題仍是能夠具體分析,這裏說的只是一種解決問題的套路而已,並非說方法通用)。機器學習
推薦系統發展到如今其實已經有十多年了,這期間有較多的算法被業界精英們紛紛提出,但通過前輩們的大量的實踐證實,沒有一個算法能夠通用的解決全部的問題,這其實也從另一個層面說明,爲何推薦系統須要投入一個團隊的人力來作這個事情。學習
推薦算法須要解決的問題:大數據
一、將用戶須要的商品或者信息在合適的時候推薦給到相應的用戶spa
二、冷啓動問題blog
三、數據稀疏問題排序
四、算法的穩定性ci
五、大數據問題it
六、多樣性和新穎性問題數據挖掘
七、長期興趣和短時間興趣的融合
下面主要根據推薦系統的發展歷程來講說推薦系統中推薦算法:
一、基於規則的方法
該方法通常是採用一些人工的先驗知識,制定一些規則決定推薦給到用戶商品或者廣告。最多見的就是熱門推薦。這種方法推薦可能必定程度上丟失個性化,由於熱門推薦是全局角度來統計的。
二、基於內容的推薦方法
該方法是藉助完善的用戶畫像,根據用戶不一樣維度的信息來進行推薦,而且藉助數據挖掘的方法,瞭解不一樣特徵的用戶對不一樣商品/廣告的偏好,以此爲推薦結果給到用戶。
這種方法存在一個問題是用戶的特徵可能維度較多,而哪個維度更重要一些是須要必定的先驗知識的。
三、基於協同過濾的推薦方法
該方法一般來說通常分爲兩種:UserBased CF和ItemBased CF
(1)UserBasedCF:該方法是經過用戶,找到該用戶類似的用戶,再根據類似用戶的行爲,推薦給該用戶
(2)ItemBasedCF:該方法是經過用戶購買的商品,經過找到該商品類似的商品,將類似的商品推薦給該用戶
從上面的介紹能夠看出,這兩種方法都須要計算類似度(用戶類似度或者商品類似度),常見的類似度有Jacarrd距離,Cos距離等。該方法主要的缺點是類似度計算效率比較低。且存在冷啓動問題。
四、基於模型的推薦方法
該方法是經過用戶對已購買的商品的一個反饋行爲獲得一個評分矩陣(如:電影評分矩陣),採用矩陣分解的方法進行分解,獲得一個user和item矩陣。再來計算用戶對商品的偏好。
該方法優勢是能夠解決數據稀疏性問題,缺點是:前提是用戶存在行爲數據,已評價的數據。這就存在一個冷啓動的問題,即新用戶沒有任何行爲的用戶如何給出推薦結果呢?
常見的矩陣分解方法有:SVD,SVD++,ALS等
五、混合推薦
通常稍微複雜推薦系統是包含召回和排序兩個過程,而上面介紹的四種方法每每都是在召回的過程當中。而工業界負責的推薦會加上一個精排過程。該過程主要是經過機器學習的方法進行排序。須要用到LTR方法。
即前面四種方法能夠做爲四路召回,最後再進行精排。
六、評價指標
說了推薦算法的一些方法,最後確定要說一下評價指標:
(1)MAE:平均絕對偏差
(2)MSE&RMSE
(3)Precision:TOPN的精確度
(4)Recall:TOPN的召回率
(5)F1:TOPN的F1指標
(6)AUC:TOPN的AUC
(7)新穎度