日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gram矩阵_推荐算法三视角:矩阵,图,时间线

發(fā)布時間:2023/12/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gram矩阵_推荐算法三视角:矩阵,图,时间线 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

關(guān)于推薦系統(tǒng),如果在忘掉所有的公式和代碼,忘記所有的語言描述,腦海里就剩下幾張圖景,會是什么?一張二維表格,一個拓撲圖,一條時間線。這三幅圖景,是我看待推薦算法的三種視角。

視角一:矩陣視角

在腦中想象一個二維的表格,每一行代表一個用戶,每一列代表一個物品,表格里的每一個點代表用戶對物品的操作,這個操作可以是評分,點擊,點贊。其中,有些格子記錄了行為,有些格子是空的。到這里,我們就建立了基本的矩陣視角,推薦問題轉(zhuǎn)化成了如何補上那些空格子。

用戶對物品的評分等于相似用戶對該物品評分的加權(quán)平均值,這就是user-base的協(xié)同過濾了。換一個方向,用戶對物品的評分等于該用戶對其他物品的評分按物品相似加權(quán)平均值,這就是item-base的協(xié)同過濾。度量用戶之間的相似度,把矩陣的一行——對物品的評分向量作為該用戶的表示向量,那么用戶之間可以計算向量的距離,可以選擇任何距離公式,如余弦距離,皮爾森距離。對于物品之間的相似度,換一個方向即可。

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

物品直接的相似度,除了上面的啟發(fā)式算法,能不能通過數(shù)據(jù)本身學(xué)習(xí)所得?這就誕生了SLIM(Sparse Linear Methods)方法。矩陣

是 評分矩陣,要學(xué)習(xí)一個 維的物品相似的矩陣 。 的每一行是用戶的歷史評分, 的每一列是每一個物品和該列對應(yīng)物品的相似度,計算內(nèi)積即為該用戶對該列物品的評分,通過梯度下降訓(xùn)練來擬合真實評分。其中, 非負體現(xiàn)了相似度的物理意義;對角線限制為0避免對角線全都學(xué)習(xí)到1完美過擬合;添加L1正則產(chǎn)生稀疏的 ,使得結(jié)果在大規(guī)模物品集上可用; 的每一列的學(xué)習(xí)都可以看作一個線性回歸模型,訓(xùn)練時可以彼此相互獨立,因而可以分布式學(xué)習(xí)。

在矩陣視角下,很自然可以進行矩陣分解。SVD矩陣分解將n個用戶m個物品的大矩陣分解成三個矩陣相乘,中間的矩陣越靠近左上角的特征值越大,代表矩陣分解的主要成分,也就是說保留左上角的

維矩陣D,其余的都置為零,將原來的等于變?yōu)榧s等于。將藍色和紅色的矩陣合并,得到一個 維的矩陣,每一個行代表一個 維的用戶向量,對于黃色矩陣保留其前 行(后面的不影響計算了),每一列代表一個物品向量,用戶和物品向量的內(nèi)積也就是矩陣相乘后對應(yīng)矩陣的值,也就是空缺處的評分,將向量索引起來就可以推薦了。

要使用SVD分解,待分解矩陣要是稠密的,稀疏的評分矩陣要按照統(tǒng)計學(xué)方法填充,如填充均值。另外,SVD過擬合現(xiàn)象嚴重,泛化誤差太大。在2006年Netflix Prize的百萬推薦大獎賽上, Simon Funk 在博客公開FunkSVD算法。直接將評分矩陣分解成兩個矩陣相乘,

維度的用戶矩陣,每一行是用戶的隱式向量表示, 維的物品矩陣,每一列是物品的隱式向量表示,用戶和物品向量的內(nèi)積即為預(yù)估的評分。那如何進行分解呢?隨機初始化矩陣,使用均方誤差作為loss,梯度下降進行學(xué)習(xí)。這個過程中還可以加入正則項,降低泛化誤差。由FunkSVD開始,基于Matrix factor(MF)的方法大放異彩。

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

如果把上面介紹的SLIM和MF解結(jié)合起來,將物品的相似度矩陣

分解成 兩個低維矩陣,用戶對某物品的評分,等于他過去評分過的物品在 中對應(yīng)的向量和 中該物品向量內(nèi)積的和,這就是FISM算法。相比SLIM的稀疏處理,變?yōu)榉纸饨稻S。最后再附上一張圖,說明MF,SLIM和FISM之間的關(guān)系。

視角二:圖視角

把用戶和物品看作頂點,用戶的評分在用戶和物品之間建立起邊,就得到了一個二部圖;在二部圖的基礎(chǔ)上添加更多的頂點和邊,形成一個更為復(fù)雜的圖,輔助二部圖的計算。在圖的視角下,推薦問題轉(zhuǎn)化成了在圖上尋找高效的鏈接模式。

我們認為在同一個用戶的歷史行為中,那么兩個物品之間有一條邊,現(xiàn)在要計算兩個物品之間的相似度,最樸素的思想就是數(shù)一數(shù)他們之間有多少條邊??紤]每一條邊權(quán)重不一樣,邊是通過用戶建立的,用戶的點擊的物品越多,對應(yīng)邊的權(quán)重就越小。這就是Adamic/Adar算法的思想。

阿里著名的協(xié)同過濾推薦算法swing,尋找圖中更加穩(wěn)固的形狀,共同評分過兩個物品的用戶集合中,每兩個用戶和這個兩個物品形成了一個四邊形(下圖紅邊為一個swing結(jié)構(gòu)),統(tǒng)計有多少個這樣的結(jié)構(gòu),每一個結(jié)構(gòu)的權(quán)重是不同的,這個結(jié)構(gòu)里兩個用戶共同評分過的物品的數(shù)量越多權(quán)重就越小。

從用戶和物品的二部圖出發(fā)進行構(gòu)圖,再結(jié)合隱因子模型(Latent Factor Model),就進入了Graph-Embedding的領(lǐng)域。DeepWalk算法在圖上隨機游走深度優(yōu)先遍歷得到序列,然后和word2vec類似地使用Skip-Gram(A和B序列中相鄰,用A的embedding作為特征最大化B的選中概率)進行訓(xùn)練。Node2Vec算法在DeepWalk的基礎(chǔ)上,考慮隨機游走的方式,引入深度優(yōu)先和廣度優(yōu)先的權(quán)衡,能夠得到更好的更靈活的頂點隱式表示。LINE算法考慮頂點的二階相似,兩個頂點有邊為一階相似,兩個頂點有共同的鄰居頂點為二階相似,它雖不做隨機游走,但可以看作是廣度優(yōu)先的采樣。Graph-Embedding取得了頂點的embedding,計算相似度可以得到用戶物品距離,物品物品距離,用于推薦。

GCN(圖卷積)接收拓撲圖作為網(wǎng)絡(luò)輸入,可以計算每一個頂點更好的表示,相比graph-embedding可以有監(jiān)督地為推薦目標而訓(xùn)練。但GCN在運算時,每一層都要輸入整個圖,在推薦系統(tǒng)里,物品和用戶都可以是百萬級別以上,實際中無法使用。GraphSAGE通過RandomWalk采樣,解決了這個問題,用在推薦領(lǐng)域就是PinSage算法。從某頂點出發(fā),深度優(yōu)先走k步,得到多個子圖,組成一個batch進行訓(xùn)練,。然后按照采樣的反方向做前向傳播,這就是一個k層的圖網(wǎng)絡(luò),下圖是一個k為2的例子。

在用戶和物品的二部圖基礎(chǔ)上,用戶和用戶根據(jù)社會關(guān)系建立起邊來,這就是社會化推薦。

在用戶和物品的二部圖基礎(chǔ)上,增加物品的屬性作為頂點,建立新的邊,就得到了一個異質(zhì)信息網(wǎng)絡(luò)。比如一個電影推薦系統(tǒng),除了用戶和電影外,還有導(dǎo)演,演員,電影類型,導(dǎo)演拍攝電影,電影屬于某種類型,演員出演電影,導(dǎo)演與演員合作,諸如此類就能建立很多邊。其中一類推薦算法叫做meta-path,通過專家經(jīng)驗人工挑選出一些圖中路徑,如用戶->演員->電影,用戶->導(dǎo)演->電影,這樣的路徑稱之為meta-path,計算每一條meta-path的權(quán)重,將用戶和物品間的所有meta-path聯(lián)合計算評分。

視角三:時間線

把用戶對物品的行為想象成一條時間線,我們已知當(dāng)前時刻前用戶的物品行為序列,推薦問題被轉(zhuǎn)化成了預(yù)測下一個時刻用戶發(fā)生行為的物品。

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

Translation-based推薦在序列建模中引入Metric Learning(把行為關(guān)系和高維空間距離映射起來),用戶

,當(dāng)前行為物品 ,下一個物品 三者向量化表示,訓(xùn)練使得它們滿足 ,推薦時只需拿到用戶歷史行為的物品向量加上用戶向量得到下一個物品向量,然后在推薦集合中KNN尋找即可完成推薦。

以前模型的輸入形式有限,人們通過特征處理將數(shù)據(jù)組織成模型可以接受的形式;隨著深度學(xué)習(xí)的發(fā)展,數(shù)據(jù)越來越傾向于保存其原有的形式,人們通過模型設(shè)計來學(xué)習(xí)有效的模式。在時間線的視角下,直接用深度模型結(jié)構(gòu)建模序列,預(yù)測下一物品,形成了一個可以發(fā)揮想象力和燃燒算力的領(lǐng)域——Sequential/Session-base推薦。在2016年的時候,RNN是處理序列問題的標配,它從NLP領(lǐng)域走來,誕生了GRU4Rec算法。受到NLP領(lǐng)域Char-CNN啟發(fā),CNN的結(jié)構(gòu)也逐漸用于建模序列結(jié)構(gòu),Attention機制大火之后,RNN+Attention,CNN+Attention,RNN+CNN+Attention被枚舉了一遍。隨著google老師的BERT取得NLP領(lǐng)域巨大成就,Self-Attention以及多層的Transformer結(jié)構(gòu)開始成為序列建模的常規(guī)配置。最近的文章里,圖神經(jīng)網(wǎng)絡(luò)(GNN),Memory networks,變分自編碼器(VAE)也成為了序列推薦領(lǐng)域的深度樂高積木。

在CTR預(yù)估領(lǐng)域,越來越多的模型直接將用戶歷史行為序列按照時間順序排列,使用深度模型結(jié)構(gòu)直接建模。

總結(jié)

其實如果要細數(shù),還有一個視角叫做高維空間視角。用戶和物品都是一個高維度空間里的點,空間里點之間的距離越近,代表著物品和物品越相關(guān),用戶對物品越偏好,推薦問題轉(zhuǎn)化成了如何將用戶和物品嵌入到高維空間里。典型的主題如Metric Learning。不過這個視角的正交性不好,深度學(xué)習(xí)席卷推薦系統(tǒng)后,embedding是個太常見的思路,前面很多的方法也都是最終把問題轉(zhuǎn)化成了高維空間嵌入,如graph-embedding,Transition-base推薦。為了避免歸類上的糾結(jié);再加上任何一個深度網(wǎng)絡(luò)作為Encoder把用戶和物品embedding,都可以歸在這個視角,沒有那么多令人印象深刻的典型方法,就不做單獨梳理了。

To My Best Knowledge,我把自己認為推薦系統(tǒng)里經(jīng)典且令人印象深刻的方法歸在三種視角中——矩陣,圖,時間線。本來想談?wù)務(wù)J識的,寫著寫著寫多了,變成了一篇梳理文章。如果對你從偏算法的角度理解推薦系統(tǒng)有所助益,我就很開心了。后面有所學(xué)習(xí)所得,也會持續(xù)更到這篇文章,感興趣的收藏關(guān)注一下吧!

引用

https://blog.csdn.net/baimafujinji/article/details/6474273

http://xtf615.com/2018/05/03/r

Sequential Recommender Systems: Challenges, Progress and Prospects

Translation-based Recommendation

總結(jié)

以上是生活随笔為你收集整理的gram矩阵_推荐算法三视角:矩阵,图,时间线的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。