docs/algo/sona/node2vec_sona.md
Node2Vec是一种知名的图表示学习算法。它能够通过结合深度优先搜索与广度优先搜索的优势采样对节点进行采样得到游走节点序列,该采样方式能够同时提取网络结构中homophily equivalence与structural equivalence两种相似特性。采样生成的序列输入Word2Vec学习出各节点的embedding,详情可参考论文Node2Vec。在算法实现上将游走节点序列采样和节点的embedding学习分开,该算法类只实现采样获得游走节点序列的步骤,节点的embedding学习则需要在该运行完成该算法后再运行Word2Vec算法完成。
我们基于Spark On Angel框架实现了该算法,其能够处理大规模工业级数据。节点的邻居集表(无边权)或Alias表(带边权)存储于Angel PSs上,spark executors根据batch数据从PSs上拉取对应节点的数据进行采样计算最终获得各个节点的游走节点序列。
进入angel环境bin目录下
input=hdfs://my-hdfs/data
output=hdfs://my-hdfs/walkpaths_n2v
source ./spark-on-angel-env.sh
$SPARK_HOME/bin/spark-submit \
--master yarn-cluster\
--conf spark.ps.instances=1 \
--conf spark.ps.cores=1 \
--conf spark.ps.jars=$SONA_ANGEL_JARS \
--conf spark.ps.memory=10g \
--jars $SONA_SPARK_JARS \
--driver-memory 5g \
--num-executors 1 \
--executor-cores 4 \
--executor-memory 10g \
--class com.tencent.angel.spark.examples.cluster.Node2VecExample \
../lib/spark-on-angel-examples-3.3.0.jar \
input:$input output:$output isWeighted:false delimiter:space needReplicaEdge:true epochNum:1 walkLength:20 useTrunc:false truncLength:6000 batchSize:1000 setCheckPoint:true pValue:0.8 qValue:1.2