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