推薦算法三視角:矩陣,圖,時間線


關於推薦系統,若是忘掉全部的公式和代碼,忘記全部的語言描述,腦海裏就剩下幾張圖景,會是什麼?一張二維表格,一個拓撲圖,一條時間線。這三幅圖景,是我看待推薦算法的三種視角。



視角一:矩陣視角



在腦中想象一個二維的表格,每一行表明一個用戶,每一列表明一個物品,表格裏的每個點表明用戶對物品的操做,這個操做能夠是評分,點擊,點贊。其中,有些格子記錄了行爲,有些格子是空的。到這裏,咱們就創建了基本的矩陣視角, 推薦問題轉化成了如何補上那些空格子。


用戶對物品的評分等於類似用戶對該物品評分的加權平均值,這就是user-base的協同過濾了。換一個方向,用戶對物品的評分等於該用戶對其餘物品的評分按物品類似加權平均值,這就是item-base的協同過濾。度量用戶之間的類似度,把矩陣的一行——對物品的評分向量做爲該用戶的表示向量,那麼用戶之間能夠計算向量的距離,能夠選擇任何距離公式,如餘弦距離,皮爾森距離。對於物品之間的類似度,換一個方向便可。

對於任何兩個物品,能夠計算它們的評分差值。具體來講,兩個物品有一批共同的歷史評分用戶,也就是矩陣裏兩列有交集的行,每一行能夠計算一個差值,將差值平均起來,做爲兩個物品的距離。和上面的距離不一樣的,這個差值能夠想象成物理中的位移,帶着符號的。推薦時,某用戶對於某個物品的評分,等於某用戶對其餘物品評分加上這個位移,再進行平均獲得的平均評分。和上面的item-base同樣的,都是列向量計算類似度,只不過類似度由距離變成了位移。這就是著名的 Slope-One算法


物品直接的類似度,除了上面的啓發式算法,能不能經過數據自己學習所得?這就誕生了SLIM(Sparse Linear Methods)方法。矩陣   是   評分矩陣,要學習一個   維的物品類似的矩陣   。   的每一行是用戶的歷史評分,   的每一列是每個物品和該列對應物品的類似度,計算內積即爲該用戶對該列物品的評分,經過梯度降低訓練來擬合真實評分。其中,   非負體現了類似度的物理意義;對角線限制爲0避免對角線全都學習到1完美過擬合;添加L1正則產生稀疏的   ,使得結果在大規模物品集上可用;   的每一列的學習均可以看做一個線性迴歸模型,訓練時能夠彼此相互獨立,於是能夠分佈式學習。


在矩陣視角下,很天然能夠進行矩陣分解。SVD矩陣分解將n個用戶m個物品的大矩陣分解成三個矩陣相乘,中間的矩陣越靠近左上角的特徵值越大,表明矩陣分解的主要成分,也就是說保留左上角的   維矩陣D,其他的都置爲零,將原來的等於變爲約等於。將藍色和紅色的矩陣合併,獲得一個   維的矩陣,每個行表明一個   維的用戶向量,對於黃色矩陣保留其前   行(後面的不影響計算了),每一列表明一個物品向量,用戶和物品向量的內積也就是矩陣相乘後對應矩陣的值,也就是空缺處的評分,將向量索引發來就能夠推薦了。


要使用SVD分解,待分解矩陣要是稠密的,稀疏的評分矩陣要按照統計學方法填充,如填充均值。另外,SVD過擬合現象嚴重,泛化偏差太大。在2006年Netflix Prize的百萬推薦大獎賽上, Simon Funk 在博客公開 FunkSVD算法 。直接將評分矩陣分解成兩個矩陣相乘,   維度的用戶矩陣,每一行是用戶的隱式向量表示,   維的物品矩陣,每一列是物品的隱式向量表示,用戶和物品向量的內積即爲預估的評分。那如何進行分解呢?隨機初始化矩陣,使用均方偏差做爲loss,梯度降低進行學習。這個過程當中還能夠加入正則項,下降泛化偏差。由 FunkSVD 開始,基於 Matrix factor(MF) 的方法大放異彩。


在MF的基礎上,考慮推薦中的side information,如用戶的年齡性別,物品的類目價格。用戶和物品自身或屬性稱做一個field,field之間能夠兩兩進行矩陣分解,這個被稱做二階項,相似 BiasSVD 考慮每個field都有一個bias,這個被稱做一階項,再加上一個全局的bias項。這就是著名的 Factorization Machines(FM)。


若是把上面介紹的 SLIMMF解結合起來,將 物品的類似度矩陣   分解成   兩個低維矩陣,用戶對某物品的評分,等於他過去評分過的物品在   中對應的向量和   中該物品向量內積的和,這就是FISM算法。相比SLIM的稀疏處理,變爲分解降維。最後再附上一張圖,說明 MF SLIM FISM 之間的關係。




視角二:圖視角



把用戶和物品看做頂點,用戶的評分在用戶和物品之間創建起邊,就獲得了一個二部圖;在二部圖的基礎上添加更多的頂點和邊,造成一個更爲複雜的圖,輔助二部圖的計算。 在圖的視角下,推薦問題轉化成了在圖上尋找高效的連接模式。



咱們認爲在同一個用戶的歷史行爲中,那麼兩個物品之間有一條邊,如今要計算兩個物品之間的類似度,最樸素的思想就是數一數他們之間有多少條邊。考慮每一條邊權重不同,邊是經過用戶創建的,用戶的點擊的物品越多,對應邊的權重就越小。這就是Adamic/Adar算法的思想。

阿里著名的協同過濾推薦算法swing,尋找圖中更加穩固的形狀,共同評分過兩個物品的用戶集合中,每兩個用戶和這個兩個物品造成了一個四邊形(下圖紅邊爲一個swing結構),統計有多少個這樣的結構,每個結構的權重是不一樣的,這個結構裏兩個用戶共同評分過的物品的數量越多權重就越小。


從用戶和物品的二部圖出發進行構圖,再結合隱因子模型(Latent Factor Model),就進入了Graph-Embedding的領域。DeepWalk算法在圖上隨機遊走深度優先遍歷獲得序列,而後和word2vec相似地使用Skip-Gram(A和B序列中相鄰,用A的embedding做爲特徵最大化B的選中機率)進行訓練。Node2Vec算法在DeepWalk的基礎上,考慮隨機遊走的方式,引入深度優先和廣度優先的權衡,可以獲得更好的更靈活的頂點隱式表示。LINE算法考慮頂點的二階類似,兩個頂點有邊爲一階類似,兩個頂點有共同的鄰居頂點爲二階類似,它雖不作隨機遊走,但能夠看做是廣度優先的採樣。Graph-Embedding取得了頂點的embedding,計算類似度能夠獲得用戶物品距離,物品物品距離,用於推薦。


GCN(圖卷積)接收拓撲圖做爲網絡輸入,能夠計算每個頂點更好的表示,相比graph-embedding能夠有監督地爲推薦目標而訓練。但GCN在運算時,每一層都要輸入整個圖,在推薦系統裏,物品和用戶均可以是百萬級別以上,實際中沒法使用。GraphSAGE經過RandomWalk採樣,解決了這個問題,用在推薦領域就是PinSage算法。從某頂點出發,深度優先走k步,獲得多個子圖,組成一個batch進行訓練,。而後按照採樣的反方向作前向傳播,這就是一個k層的圖網絡,下圖是一個k爲2的例子。



在用戶和物品的二部圖基礎上,用戶和用戶根據社會關係創建起邊來,這就是社會化推薦。



在用戶和物品的二部圖基礎上,增長物品的屬性做爲頂點,創建新的邊,就獲得了一個異質信息網絡。好比一個電影推薦系統,除了用戶和電影外,還有導演,演員,電影類型,導演拍攝電影,電影屬於某種類型,演員出演電影,導演與演員合做,諸如此類就能創建不少邊。其中一類推薦算法叫作meta-path,經過專家經驗人工挑選出一些圖中路徑,如用戶->演員->電影,用戶->導演->電影,這樣的路徑稱之爲meta-path,計算每一條meta-path的權重,將用戶和物品間的全部meta-path聯合計算評分。




視角三:時間線



把用戶對物品的行爲想象成一條時間線,咱們已知當前時刻前用戶的物品行爲序列, 推薦問題被轉化成了預測下一個時刻用戶發生行爲的物品。


假設序列中下一個物品只與上一個物品有關,可使用馬爾科夫模型MC(Markov Chains),序列中相鄰的物品間進行矩陣分解。結合上文提到的用戶和物品間矩陣分解MF,用戶,當前行爲物品和下一個物品三者之間兩兩進行矩陣分解,將三個值加起來擬合評分,就獲得了FPMC(Factorizing Personalized Markov Chains)算法。

Translation-based推薦在序列建模中引入Metric Learning(把行爲關係和高維空間距離映射起來),用戶   ,當前行爲物品   ,下一個物品   三者向量化表示,訓練使得它們知足   ,推薦時只需拿到用戶歷史行爲的物品向量加上用戶向量獲得下一個物品向量,而後在推薦集合中KNN尋找便可完成推薦。


之前模型的輸入形式有限,人們經過特徵處理將數據組織成模型能夠接受的形式;隨着深度學習的發展,數據愈來愈傾向於保存其原有的形式,人們經過模型設計來學習有效的模式。在時間線的視角下,直接用深度模型結構建模序列,預測下一物品,造成了一個能夠發揮想象力和燃燒算力的領域——Sequential/Session-base推薦。在2016年的時候,RNN是處理序列問題的標配,它從NLP領域走來,誕生了GRU4Rec算法。受到NLP領域Char-CNN啓發,CNN的結構也逐漸用於建模序列結構,Attention機制大火以後,RNN+Attention,CNN+Attention,RNN+CNN+Attention被枚舉了一遍。隨着google老師的BERT取得NLP領域巨大成就,Self-Attention以及多層的Transformer結構開始成爲序列建模的常規配置。最近的文章裏,圖神經網絡(GNN),Memory networks,變分自編碼器(VAE)也成爲了序列推薦領域的深度樂高積木。


在CTR預估領域,愈來愈多的模型直接將用戶歷史行爲序列按照時間順序排列,使用深度模型結構直接建模。



總結



其實若是要細數,還有一個視角叫作高維空間視角。用戶和物品都是一個高維度空間裏的點,空間裏點之間的距離越近,表明着物品和物品越相關,用戶對物品越偏好, 推薦問題轉化成了如何將用戶和物品嵌入到高維空間裏。 典型的主題如Metric Learning。不過這個視角的正交性很差,深度學習席捲推薦系統後,embedding是個太常見的思路,前面不少的方法也都是最終把問題轉化成了高維空間嵌入,如graph-embedding,Transition-base推薦。爲了不歸類上的糾結;再加上任何一個深度網絡做爲Encoder把用戶和物品embedding,均可以歸在這個視角,沒有那麼多使人印象深入的典型方法,就不作單獨梳理了。

To My Best Knowledge,我把本身認爲推薦系統裏經典且使人印象深入的方法歸在三種視角中——矩陣,圖,時間線。原本想談談認識的,寫着寫着寫多了,變成了一篇梳理文章。但願能對你們從偏算法的角度理解推薦系統有所助益。

 引用 

https://link.zhihu.com/?target=https%3A//blog.csdn.net/baimafujinji/article/details/6474273web

http://xtf615.com/2018/05/03/recommender-system-survey/算法

Sequential Recommender Systems: Challenges, Progress and Prospects微信

Translation-based Recommendation網絡


淘系技術部-商業機器智能團隊

商業機器智能部是一支數據和算法一體的團隊,服務於淘寶、天貓、聚划算、閒魚和躺平等業務線的二十餘個業務場景,提供線上零售、內容社區、3D智能設計和端上智能等數據和算法服務。 咱們經過機器學習、強化學習、數據挖掘、機器視覺、NLP、運籌學、3D算法、搜索和推薦算法,爲千萬商家尋找商機,爲平臺運營提供智能化方案,爲用戶提升使用體驗,爲設計師提供自動搭配和佈局,從而促進平臺和生態的供給繁榮和用戶增加,不斷拓展商業邊界。

這是一支快速成長中的學習型團隊。在創造業務價值的同時,咱們不斷輸出學術成果,在KDD、ICCV、Management Science等國際會議和雜誌上發表數篇學術論文。團隊學習氛圍濃厚,每一年組織上百場技術分享交流,互相學習和啓發。真誠邀請海內外相關方向的優秀人才加入咱們,在這裏成長並貢獻才智

若是您有興趣可將簡歷發至 jiusheng.lsw@alibaba-inc.com ,期待您的加入!

✿  拓展閱讀app


做者| 劉少偉( 九勝)
編輯| 橙子君
出品| 阿里巴巴新零售淘系技術






本文分享自微信公衆號 - 淘系技術(AlibabaMTT)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。dom

相關文章
相關標籤/搜索