Graph Embedding方案之DeepWalk
?對于算法不太了解的同學(xué),這是一個看上去很沒吸引力的標(biāo)題,預(yù)計點(diǎn)擊量超不過200。最近非常迷戀一句話“萬物皆可Embedding”,講的是世間所有的事物都能通過某種方法被向量表示,一旦事物被向量表示了就可以通過乘法去做進(jìn)一步邏輯處理。比如商品A被表示為向量m,商品B被表示為向量n,則m*n的結(jié)果就是A和B的相似關(guān)系。把事物Embedding的方法有很多,今天就來介紹DeepWalk,一種把圖關(guān)系向量化的方法。
DeepWalk有什么用呢?在推薦、文本分類等領(lǐng)域都有很多場景。比如用戶觀看視頻這件事,所有用戶的視頻觀看順序組合到一起會構(gòu)成一種圖關(guān)系,每個節(jié)點(diǎn)是視頻,邊是觀看次數(shù)。當(dāng)有一個客戶先后看了A->B->C三個視頻,那么下個視頻會看什么呢,就可以用DeepWalk將所有視頻向量化,然后所有視頻的向量分別與C視頻的向量相乘,分?jǐn)?shù)最高的就可以作為下一個推薦視頻。
下面這張圖直觀展示了DeepWalk處理數(shù)據(jù)的過程:
具體DeepWalk做事物Embedding可以分兩步,第一步是Random Walk,第二步是Word2Vector。為了大家更好的理解,我們先從Word2Vector開始講。
Word2Vector
?
有的同學(xué)會奇怪,做Graph Embedding跟Word2Vector有什么關(guān)系,Word2Vector不是一個文本向量化的方法么?圖像量化其實(shí)可以巧妙的轉(zhuǎn)化成文本向量化。Word2Vector有一種模式叫做Skip-Gram,就是給定一個文章中的某個詞,預(yù)測這個詞的上下文,如下圖展示:
比如我們輸入一個文本“傲海是北京朝陽地區(qū)第一帥哥”,“朝陽”的上一個詞是“北京”,下一個詞是“地區(qū)”。當(dāng)這種訓(xùn)練樣本很多的時候,比如我們找到大量含“朝陽”的詞的語句進(jìn)行訓(xùn)練,就可以通過Skip-Gram得出“朝陽”這個詞的向量形式,這就是Skip-Gram這個算法的功能,這里需要指定一個窗口的概念,就是訓(xùn)練的時候取每個詞上下幾個詞作為輸入。那么這種上下文關(guān)系如何映射到圖向量化工作呢?我們接著看。
Random Walk
先來看看這個有向圖,我們可以從圖關(guān)系中找到幾個序列,比如A->B->E->C,這是一個有向關(guān)系鏈。這個關(guān)系跟上文提到的“傲海是北京朝陽地區(qū)第一帥哥”是有一定相似性的,我們把“北京”看成A?,“朝陽”看成B,“地區(qū)”看成E,這種圖的先后關(guān)系可以映射成文本的先后出現(xiàn)關(guān)系。Random Walk做的事就是設(shè)置一個窗口,然后順著圖關(guān)系去隨機(jī)找到類似于A->B->E這樣的先后關(guān)系。
比如我們設(shè)窗口為2,那么以B為定點(diǎn),可以找到如B->E、B->A這樣的前后關(guān)聯(lián)關(guān)系,這種關(guān)系放到Word2Vector里就能生成每個定點(diǎn)的向量表示。
Ok~講的比較淺,希望大家可以理解哈,希望有幫助,謝謝
?
總結(jié)
以上是生活随笔為你收集整理的Graph Embedding方案之DeepWalk的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 李小璐PGONE事件对推荐系统的考验
- 下一篇: 基于外卖评论的舆情风控