一、LINE演算法
LINE(Large-scale Information Network Embedding)演算法是由Facebook研究人員提出的用於將大型信息網路映射到向量空間中的演算法。其核心思想是通過對節點的一階和二階相似性建立目標函數,並使用隨機梯度下降演算法來學習節點的向量表示。
其它網路嵌入演算法的問題在於不同類型的網路結構會留下不同的網路特徵,而LINE演算法通過通過直接學習網路的重要特徵進行解決,並具有很好的通用性。
二、line演算法中的一階相似性
在LINE演算法中,一階相似性指的是節點直接相連的相似性,即通過共同鄰居來計算節點的相似性。計算方式為使用softmax函數對鄰居節點的向量和自身節點的向量進行點積得到一個分數,再將所有鄰居向量的分數歸一化,得到一個向量的相似性。
使用一階相似性的原因在於節點之間通過直接鏈接構成的網路種類相同的結構比較多,並且計算相對簡單,可擴展性較強。
三、LINE演算法優勢
LINE演算法相較於傳統的網路嵌入演算法(如DeepWalk、node2vec等)具有以下優勢:
1、高效的模型訓練:Levy等人在論文中指出,LINE演算法對於大型網路的訓練模型比DeepWalk更快,更節省內存。
2、高質量的向量表示:LINE演算法使用一階和二階相似性計算節點向量表示,相比於其它方法,生成的向量表示更貼近網路結構。
3、可擴展的節點表示:LINE演算法的向量表示維度較低,可以擴展到包含數百萬個節點的大型網路。
四、anatline的總體目標
anatline是LINE演算法的升級版,目標是將anatomical connectomes嵌入到共同空間中,通過計算節點之間的相似度來更好地理解大腦的結構和功能。研究人員使用anatline演算法將圖像數據轉換為網路結構,並將網路結構進行向量表示,從而較好地理解大腦結構信息。
五、line函數
LINE演算法的核心代碼如下所示:
def LINE(G, dim, order=3): n_nod = G.shape[0] q, r = divmod(dim, order) return init_network(G, dim), learn_G(G, q, r, n_nod)
六、baseline演算法
在LINE演算法提出之前,DeepWalk和node2vec是處理大型信息網路的常見演算法。深度行走演算法(DeepWalk)使用隨機遊走的方法來採樣節點,使用基於向量表示的方法來學習節點的embedding;而node2vec演算法定義了一個參數化隨機遊走進行採樣,並提供了可調節的隨機遊走策略別選項,可以更好地反映網路結構。
七、line演算法和ELSR演算法比較
LSR是由著名計量經濟學家Ridge回歸提出的方法。與LINE演算法相比,LSR演算法採用更廣泛的異構數據進行訓練,因此其表達效果更加優秀。但是,相較於LINE演算法,LSR演算法更加需要數據的多樣性支持。
八、Online演算法
線上演算法是在處理大規模數據時具有優異性能的演算法之一。LINE演算法也可以擴展到線上演算法,其具體實現方法是將學習和更新過程分批進行,並且每個批次具有足夠的數據量和具有代表性的數據,從而提高了效率和效果。
九、inode演算法
在LINE演算法的基礎上,inode演算法提出了節點間協同探查機制,利用鄰居節點之間的依賴關係優化了節點向量表示。在許多大型信息網路上,inode演算法較LINE演算法都獲得了更優的效果。
十、line的用法
在python中可以通過安裝gensim來使用LINE演算法,具體代碼實現方式如下:
from gensim.models import Line model = Line(sentences, size=100, window=5, min_count=5, sg=1, hs=1, workers=12) #sentences是語料,可以是任意形式的迭代器或者一個可以迭代的文件,如: model = Line(corpus_file='coor.txt') #size是生成的向量的維度 #window是窗口大小 #min_count是忽略所有頻率小於此值的單詞 #sg是訓練演算法,1代表skip-gram,0代表cbow #hs是否使用層次softmax。如果使用則negative參數將失效 #workers是線程數 #訓練線上的模型: model.train(corpus_file='coor.txt', epochs=model.iter)
通過以上方式可以進行語料的訓練,產生非常優秀的高維向量,同時也可以通過對LINE演算法進行調整來進行優化!
原創文章,作者:BDSV,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/137744.html