一、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-hk/n/137744.html