在DT(data technology)時代,網上購物、觀看視頻、聆聽音樂、閱讀新聞等各個領域無不充斥着各類推薦,個性化推薦已經徹底融入人們的平常生活當中。個性化推薦根據用戶的歷史行爲數據進行深層興趣點挖掘,將用戶最感興趣的物品推薦給用戶,從而作到千人千面,不只知足了用戶本質的信息訴求,也最大化了企業的自身利益,因此個性化推薦蘊含着無限商機。算法
號稱「推薦系統之王」的電子商務網站亞馬遜曾宣稱,亞馬遜有20%~30%的銷售來自於推薦系統。其最大優點就在於個性化推薦系統,該系統讓每一個用戶都能有一個屬於本身的在線商店,而且在商店中能招到本身最感興趣的商品。美國著名視頻網站Netflix曾舉辦推薦系統比賽,懸賞100萬美圓,但願能將其推薦算法的預測準確度提高10%。美國最大的視頻網站YouTube曾作過實驗比較個性化推薦和熱門視頻的點擊率,結果顯示個性化推薦的點擊率是後者的兩倍。cookie
達觀數據擁有雄厚的研發推薦系統的技術積累,曾在ACM、CIKM、KDD、Hackathon等國際競賽的獲獎,在內容推薦,文本挖掘、廣告系統等方面申請有超過三十項國家發明專利。本文從數據處理、用戶行爲建模到個性化推薦,分享達觀數據在個性化推薦系統方面積累的一些經驗。(達觀數據聯合創始人 於敬)網絡
推薦系統的本質其實就是經過必定的方式將用戶和喜歡的物品聯繫起來。物品和用戶自身擁有衆多屬性信息進行標識。
1) 物品屬性
物品表示推薦系統的客體,在不一樣的應用場景下,物品指代不一樣的待推薦事物。好比,在書籍推薦中,物品表示書籍;在電商推薦中,物品表示商品;在電影推薦中,物品表示電影;在社交網絡推薦中,物品表示人。商品有多種屬性標識本身是什麼。機器學習
商品屬性
函數
2) 用戶屬性
用戶表示推薦系統的主體,自身屬性包括人口統計學信息以及從用戶行爲數據中挖掘分析獲得的偏好等。
學習
用戶屬性
測試
3) 用戶行爲
用戶的每一次的行爲操做無不反應用戶心裏的本質需求,包括頁面瀏覽、點擊、收藏、購物、搜索、打分、評論等,這些數據是個性化推薦系統的最重要的數據。根據用戶自身獨有的行爲數據,能夠爲每個用戶生成特有的畫像。
大數據
用戶行爲分析
優化
4) 數據處理
在數據採集的過程當中,不免會出現一些髒數據,在使用數據前須要進行清洗。過濾掉關鍵字段爲空、數值異常、類型異常等數據;用戶id包括cookie、手機號、email、註冊id等,須要進行映射獲得用戶惟一id;以及數據去重等操做。另外,還有「人爲」的髒數據,如做弊、刷單等行爲,這些數據也須要清除,不然會嚴重影響後續算法的效果。達觀數據在反做弊方面也作了不少工做,可有效篩選各類行爲上的做弊狀況。網站
基於用戶歷史行爲的進行挖掘分析,獲得刻畫用戶本質需求的一組屬性集合,即獲得用戶模型,個性化推薦的準確性很大程度上依賴於對用戶屬性刻畫的準確性。達觀數據採用了多種方式進行量化,主要包括顯式用戶偏好分析和隱式用戶興趣點挖掘。
1) 顯式用戶偏好分析
結合用戶歷史行爲和物品信息,能夠獲得每種行爲下的用戶偏好數據,包括偏好的維度及偏好程度,如偏好的物品、品牌、類別、標籤等。再將各類行爲的偏好數據合併,最終獲得用戶在物品、品牌、類別、標籤等各個維度上的偏好程度。合併不一樣維度的數據時,須要考慮到不一樣的行爲類型反應用戶偏好程度是不一樣的。好比購買行爲比點擊行爲更能反映用戶的偏好,則由購買行爲計算獲得的偏好數據在合併時賦予的權重要高一些。要保證各類行爲的各個維度的數據具備可比性,須要進行歸一化,並且同緯度的要採用相同的歸一化方法。
2) 隱式用戶興趣點挖掘
除告終合物品信息進行分析計算獲得的顯式偏好外,還有一部分隱式興趣點須要挖掘,這部分主要用於細分用戶羣體,進行有針對性的進行更有效的推薦。劃分羣體的準則要根據具體的業務需求而定,好比是不是高價值用戶、是否價格敏感、是否對大牌情有獨鍾、大神用戶和小白用戶的區分、喜歡熱門流行仍是偏小衆的等等。藉助機器學習中的分類(如SVM)和聚類(如k-means)算法可有效解決用戶羣體的劃分問題,牽涉到的訓練和測試數據須要先根據一些規則粗略獲得候選集,在結合人工標記的進行篩選。除了能夠從行爲數據中抽取特徵外,也能夠從物品和用戶的屬性數據中抽取特徵。通過模型的訓練、預測和後處理,從而將用戶劃分到不一樣的羣體。
3) 協同過濾的基石
在個性化推薦中,應用很普遍的是基於用戶的協同過濾算法。這個算法最重要一點是類似用戶的計算。
類似度計算方法對推薦效果的影響
類似度的計算不少種方法,如餘弦類似度、皮爾遜相關度等,曾經使用mahout作過的一個不一樣類似度度量方法下的對比測試結果,測試中score的計算使用的是絕對差值的平均,越小越好。本次測試結果代表,在基於用戶的協同過濾中,使用皮爾遜相關度的計算方法,推薦效果最好。
其實不一樣的類似度計算方法有各自的優缺點,適用不一樣的應用場景,能夠經過對比測試進行選取。在實際業務中,類似度的計算方法都有不少變種,好比是否考慮去除冷門物品和熱門物品的影響。畢竟過於冷門和過於熱門的物品對衡量用戶間的類似度時區分度很差,這時就須要進行剪枝。這種基於K近鄰的選取類似用戶的方法,類似度的閾值設置對結果影響很大,太大的話召回物品過多,準確度會有降低。
4) 時間維度上的考量
在處理各個維度的偏好數據時,須要考慮用戶行爲的有價值程度是隨時間衰減的,即行爲發生時間距當前的時間越近,獲得的數據越能表徵用戶未來的行爲。畢竟用戶的口味隨着時間的推移是會變化的,因此時間越近權重越高。
另外,還須要考慮偏好和興趣點數據的在時間上的持續和變化過程,即須要刻畫用戶的口味呈現的時間規律。爲了解決這個問題,咱們根據不一樣的時間間隔來界定,分長期、短時間、近期和實時四個時間維度。長期的覆蓋了用戶幾乎一直不變的興趣,短時間的覆蓋了用戶變化中的興趣,而近期則反映了用戶的「嚐鮮」的特色。這三種興趣是離線計算的,還要考慮用戶的實時興趣,咱們經過很短的時間間隔進行近線挖掘分析,從而快速適應用戶當前的信息需求。
經過上述過程,最終就爲每一個用戶生成了各個維度上的偏好和興趣點數據。
以用戶模型和物品屬性數據爲載體,結合多種推薦算法和效果優化策略,個性化推薦系統將用戶最感興趣的物品精準推薦給當前用戶。不一樣算法有本身的應用場景,因此根據業務須要、數據的豐富程度、效果衡量指標等選擇合適的推薦算法,而後根據推薦結果進行不斷迭代,最終完成符合預期效果的個性化推薦系統。
個性化推薦流程
1) 基於內容的推薦
主要過程是將用戶的信息特徵和物品對象的特徵相匹配的過程,從而獲得待推薦的物品集合。經過用戶模型中的類別、標籤、品牌等各維度的偏好數據,在全量物品列表中尋找與之匹配的用戶感興趣的物品列表,並給出用戶感興趣的程度。根據挖掘的興趣點,對部分用戶進行有針對性的推薦,爲其「量身定製」推薦結果,知足其特有的需求。基於內容的推薦方法,優勢是能保證推薦內容的相關性,而且根據內容特徵能夠解釋推薦結果,並且對新物品的推薦是也能有很好的考量。缺點是因爲內容高度匹配,致使推薦結果的驚喜度較差,並且對新用戶不能提供可靠的推薦結果。
2) 基於協同過濾的推薦
協同過濾方法主要基於羣體智慧,認爲類似的用戶對新物品的喜愛也是類似的,類似的物品對於同一用戶來講,喜愛程度也是類似的。這種方法克服了基於內容方法的一些弊端,最重要的是能夠推薦一些內容上差別較大可是又是用戶感興趣的物品。大體分爲兩類:基於近鄰的方法和基於模型的方法。前者在數據預測中直接使用已有數據進行預測,將用戶的全部數據加載到內存中進行運算。基於模型的方法則是經過數據進行模型訓練,而後爲用戶預測新的物品,主要包括:pLSA(Probabilistic Latent Semantic Analysis)、LDA(Latent Dirichlet Allocation)、SVM(Support Vector Machines)、SVD(Singular Value Decomposition)等。
基於用戶模型中的類似用戶列表和偏好的物品列表,分別使用基於用戶的和基於物品的協同過濾,將類似用戶喜歡的物品和類似的物品加入到推薦的候選集當中。同時,推薦權重的計算會考量類似度的大小及物品自身的質量分。
3) 基於知識的推薦
當用戶的行爲數據較少同時又有明確的需求時,協同過濾和基於內容的推薦效果不盡人意,可是基於知識的推薦能夠幫助咱們解決這類問題。這種方法不須要用戶行爲數據就能推薦,因此不存在冷啓動問題。推薦結果主要依賴兩種形式,一是用戶需求跟物品之間類似度,一種是明確的推薦規則。實際應用主要是以強規則爲主。
4) 補足策略
當用戶歷史數據比較侷限或者在冷啓動的時候,致使待推薦物品的數量不足沒有達到預約要求時,根據用戶模型的數據,結合挖掘的各類榜單進行補足,如全局熱門、分類熱門等。
5) 多算法融合
單一算法有各自的優缺點,並不能知足實際的線上需求。爲了提供最優質的個性化推薦服務,保證推薦結果的多樣性、新穎性和驚喜度,須要融合多個推薦算法,進行混合推薦。常見的混合方法有如下幾種:
a) 加權式混合
主要是對每一個算法賦予不一樣的權重,經過將多個推薦算法的結果進行加權組合在一塊兒,最後排序獲得推薦結果。
不一樣推薦算法的結果須要歸一化在相同的範圍內,而且各個算法的權重之和爲1。
b) 交叉式混合
主要是直接將不一樣的推薦算法的結果組合在一塊兒推薦給用戶,從而每一個推薦算法的優質結果都會被展現給用戶。
c) 切換式混合
主要是根據不一樣應用場景決定使用哪種推薦算法,應用場景改變的話則切換推薦算法。例如在新聞推薦時,首先使用基於內容的推薦,當找不到合適的內容時,接着使用協同過濾算法進行跨內容的推薦,最後使用樸素貝葉斯分類器找到與用戶長期興趣匹配的結果。
d) 串聯混合
主要是將不一樣的推薦算法進行排序,後面的推薦算法對前面的不斷優化,最終獲得一個多級優化下的推薦結果。
e) 分級混合
主要是先界定不一樣的算法的好壞,優先使用好算法的推薦結果,得不到結果時再使用次好的,依次類推。
達觀數據在實踐中充分利用了各類混合方法來提升推薦效果,並取得了優異的成效。例如基於加權式和分級混合的流程是,首先經過權重的大小來衡量每種推薦算法結果的好壞,產生待推薦的物品集合,在合併的時候,將優先使用好的推薦算法的結果。實踐中則是各類指標綜合權衡,整個過程也要複雜不少。(達觀數據 於敬 陳運文)
6) 重排序
排序學習(Learning To Rank, LTR)一直是機器學習中的熱門研究領域。因爲排序過程牽涉到各類維度的參數數據,致使調參費時費力,並且極可能會出現過擬合現象。而機器學習方法不只有成熟的理論基礎,並且很容易融合多種特徵,經過不斷的迭代來進行參數優化,可有效解決數據稀疏、過擬合等問題。著名的Netflix 公司就在他們的推薦系統中全面應用了LTR 技術。
排序學習的流程
對於已標註的訓練集,首先選定LTR方法,肯定損失函數,以最小化損失函數爲目標進行優化便可獲得排序模型的相關參數,這就是學習過程。預測過程將待預測結果輸入學習獲得的排序模型中,便可獲得結果的相關得分,利用該得分進行排序便可獲得待預測結果的最終順序。LTR分按點(pointwise)、按對(pairwise) 和按表(listwise) 三種方法,涉及到的常見模型有LR(Logistic Regression)、SVM、DT(Decision Tree)。
關於排序模型的選擇,LR 算法主要適用於特徵數不少、樣本量很大的狀況。若是是樣本量很大,可是特徵比較少的狀況時,建議使用DT的算法。主要是由於在特徵數較少時,對應的問題每每是非線性的,此DT算法能夠發揮自身的優點。另外,SVM在解決非線性分類問題是效果也很是好。相對於另外兩種方法,按表的方法每每更加直接,它專一於本身的目標和任務,直接優化排序結果,所以每每效果也是最好的。
通過多個推薦算法的處理,最終獲得待推薦物品的結合,使用少許維度的特徵進行排序過於簡單,效果也大打折扣。基於推薦算法獲得的相關特徵,結合物品和用戶的特徵進行組合,能夠獲得各類特徵,而且有些特徵是正相關有些是負相關,須要不斷優化。藉助機器學習方法獲得了最終的物品排序,呈現給用戶。
本文從構建用戶模型到個性化推薦,介紹了達觀數據的一些實踐經驗。個性化推薦系統能有效解決信息過載和長尾物品兩個方面的問題,不只提供了極佳的用戶體檢,知足了用戶的信息需求,也幫助了企業挖掘其中蘊含的無限商機。達觀數據一直致力於爲企業提供優質的大數據服務,通過多年的摸索,目前在個性化推薦系統研發和效果提高方面已經積累了豐富的實戰經驗。固然新技術也在不斷出現,深度學習的興起也給個性化推薦效果的提高帶來了更大的契機和想象空間,達觀數據也在這方面進行不斷探索,後續有機會再跟你們一塊兒分享。(達觀數據 於敬)