deepwalk

GitHub
2.8k 814 简单 1 次阅读 2天前NOASSERTION其他
AI 解读 由 AI 自动生成,仅供参考

DeepWalk 是一款专为图结构数据设计的开源深度学习工具,旨在将复杂的网络节点转化为计算机易于理解的数值向量。在传统机器学习难以直接处理非欧几里得空间的图数据时,DeepWalk 巧妙地解决了这一难题:它通过模拟图中的“随机游走”生成节点序列,并借用自然语言处理中 Word2Vec 的思想,将这些序列视为句子来学习节点的隐含特征表示。

其核心技术亮点在于将图遍历问题转化为语言模型任务,无需复杂的图论先验知识,即可高效捕捉节点间的局部与全局结构信息。生成的嵌入向量可直接应用于节点分类、链接预测及社区发现等下游任务,且在 BlogCatalog 等基准数据集上展现了优异的准确性。

DeepWalk 主要面向人工智能研究人员、数据科学家及后端开发者。如果你正在处理社交网络分析、推荐系统构建或生物信息网络挖掘等工作,需要一种轻量级且高效的方案来提取图特征,DeepWalk 将是理想的选择。它支持多种输入格式(如邻接表、边列表),安装简便,依赖清晰,非常适合希望快速验证图算法效果或深入探索图表示学习领域的技术用户。

使用场景

某电商平台的推荐算法团队正试图从海量的用户 - 商品交互日志中挖掘潜在的社群结构,以优化“猜你喜欢”的冷启动策略。

没有 deepwalk 时

  • 特征工程繁琐:工程师需手动设计基于度数、聚类系数等统计指标,难以捕捉图中复杂的非线性关系。
  • 稀疏数据失效:对于交互记录少的新用户或冷门商品,传统矩阵分解方法因数据过于稀疏而无法生成有效向量。
  • 计算扩展性差:面对亿级节点的关系网,传统的谱聚类算法内存占用极高,训练过程耗时数天且难以并行加速。
  • 语义信息丢失:仅依赖直接连接判断相似度,忽略了“朋友的朋友也是朋友”这类高阶拓扑结构信息。

使用 deepwalk 后

  • 自动化表征学习:deepwalk 通过模拟随机游走将图结构转化为序列,利用 Skip-gram 模型自动输出低维稠密向量,无需人工设计特征。
  • 冷启动突破:即使只有少量交互边,deepwalk 也能通过游走路径捕捉局部结构,为新节点生成高质量的嵌入表示。
  • 高效分布式训练:支持多核并行(--workers 参数),在普通服务器上即可在数十分钟内完成大规模图的训练,效率提升显著。
  • 高阶关系捕获:生成的向量天然保留了图中的社区属性,使得结构相似但未直接相连的商品能被精准关联。

deepwalk 的核心价值在于将复杂的图结构数据转化为机器学习友好的稠密向量,让非欧几里得数据的深度挖掘变得简单高效。

运行环境要求

操作系统
  • 未说明
GPU

不需要 GPU,基于 CPU 运行

内存

未说明(示例中提及 --max-memory-data-size 参数,暗示内存取决于数据规模)

依赖
notes该工具主要通过随机游走学习图节点表示。若需完全复现论文中的实验结果,可能需要安装旧版 gensim (0.10.2)。在多核机器上训练时,建议增大 --workers 参数以加速。输入支持邻接表、边列表或 Matlab .mat 格式。
python未说明
numpy
scipy
gensim (注意:复现论文结果需版本 0.10.2,当前版本依赖较新的 gensim)
deepwalk hero image

快速开始

=============================== DeepWalk

DeepWalk 使用短随机游走来学习图中顶点的表示。

用法

示例用法 $deepwalk --input example_graphs/karate.adjlist --output karate.embeddings

--input: 输入文件名

1. ``--format adjlist`` 表示邻接表格式,例如:

    1 2 3 4 5 6 7 8 9 11 12 13 14 18 20 22 32
    2 1 3 4 8 14 18 20 22 31
    3 1 2 4 8 9 10 14 28 29 33
    ...

2. ``--format edgelist`` 表示边列表格式,例如:

    1 2
    1 3
    1 4
    ...

3. ``--format mat`` 表示包含邻接矩阵的 Matlab .mat 文件
    (注意,您还需要指定邻接矩阵的变量名 ``--matfile-variable-name``)

--output: 输出文件名

输出的表示采用 skipgram 格式——第一行为头信息,其余行分别为节点 ID 和 *d* 维表示:

    34 64
    1 0.016579 -0.033659 0.342167 -0.046998 ...
    2 -0.007003 0.265891 -0.351422 0.043923 ...
    ...

完整命令列表 完整的命令行选项列表可通过 $deepwalk --help 查看。

评估

在这里,我们将展示如何在 DeepWalk 论文所使用的 BlogCatalog 数据集上评估 DeepWalk。 首先,我们运行以下命令以生成其 DeepWalk 嵌入:

deepwalk --format mat --input example_graphs/blogcatalog.mat
--max-memory-data-size 0 --number-walks 80 --representation-size 128 --walk-length 40 --window-size 10
--workers 1 --output example_graphs/blogcatalog.embeddings

此处指定的参数与论文中的相同。 如果您使用的是多核机器,请尝试将 --workers 设置为更大的值,以加快训练速度。 在一台配备 24 个 Xeon E5-2620 @ 2.00GHz CPU 的单机上,此命令大约需要 20 分钟才能完成(--workers 设置为 20)。 然后,我们使用 example_graphs/scoring.py 对学到的嵌入进行多标签节点分类任务的评估:

python example_graphs/scoring.py --emb example_graphs/blogcatalog.embeddings
--network example_graphs/blogcatalog.mat
--num-shuffle 10 --all

该命令在同一台机器上运行约需 8 分钟。为了加快评估速度,您可以将 --num-shuffle 设置为较小的值,但性能可能会有所波动。不同比例的标注节点下,我们得到的微平均 F1 和宏平均 F1 分数如下:

+-----------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ | 标注节点比例 | 10% | 20% | 30% | 40% | 50% | 60% | 70% | 80% | 90% | +=================+=======+=======+=======+=======+=======+=======+=======+=======+=======+ | 微平均 F1 (%) | 35.86 | 38.51 | 39.96 | 40.76 | 41.51 | 41.85 | 42.27 | 42.35 | 42.40 | +-----------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+ | 宏平均 F1 (%) | 21.08 | 23.98 | 25.71 | 26.73 | 27.68 | 28.28 | 28.88 | 28.70 | 28.21 | +-----------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+

请注意,当前版本的 DeepWalk 基于较新版本的 gensim,其 word2vec 模型的实现可能有所不同。若要完全复现我们论文中的结果,您可能需要安装旧版本的 gensim(版本 0.10.2)。

要求

  • numpy
  • scipy

(可能需要单独安装) 或使用 pip install -r requirements.txt 来安装所有依赖项

安装

  1. cd deepwalk
  2. pip install -r requirements.txt
  3. python setup.py install

引用

如果您在研究中发现 DeepWalk 很有用,我们恳请您引用以下论文:

@inproceedings{Perozzi:2014:DOL:2623330.2623732,
 author = {Perozzi, Bryan and Al-Rfou, Rami and Skiena, Steven},
 title = {DeepWalk: Online Learning of Social Representations},
 booktitle = {Proceedings of the 20th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining},
 series = {KDD '14},
 year = {2014},
 isbn = {978-1-4503-2956-9},
 location = {New York, New York, USA},
 pages = {701--710},
 numpages = {10},
 url = {http://doi.acm.org/10.1145/2623330.2623732},
 doi = {10.1145/2623330.2623732},
 acmid = {2623732},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {深度学习, 隐式表示, 带部分标签的学习, 网络分类, 在线学习, 社交网络},
} 

杂项

DeepWalk - 社会表示的在线学习。

  • 自由软件:GPLv3 许可证

.. image:: https://badge.fury.io/py/deepwalk.png :target: http://badge.fury.io/py/deepwalk

.. image:: https://travis-ci.org/phanein/deepwalk.png?branch=master :target: https://travis-ci.org/phanein/deepwalk

.. image:: https://pypip.in/d/deepwalk/badge.png :target: https://pypi.python.org/pypi/deepwalk

版本历史

v1.0.22014/11/19

常见问题

相似工具推荐

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85.1k|★★☆☆☆|昨天
图像数据工具视频

funNLP

funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。

79.9k|★☆☆☆☆|昨天
语言模型数据工具其他

cs-video-courses

cs-video-courses 是一个精心整理的计算机科学视频课程清单,旨在为自学者提供系统化的学习路径。它汇集了全球知名高校(如加州大学伯克利分校、新南威尔士大学等)的完整课程录像,涵盖从编程基础、数据结构与算法,到操作系统、分布式系统、数据库等核心领域,并深入延伸至人工智能、机器学习、量子计算及区块链等前沿方向。 面对网络上零散且质量参差不齐的教学资源,cs-video-courses 解决了学习者难以找到成体系、高难度大学级别课程的痛点。该项目严格筛选内容,仅收录真正的大学层级课程,排除了碎片化的简短教程或商业广告,确保用户能接触到严谨的学术内容。 这份清单特别适合希望夯实计算机基础的开发者、需要补充特定领域知识的研究人员,以及渴望像在校生一样系统学习计算机科学的自学者。其独特的技术亮点在于分类极其详尽,不仅包含传统的软件工程与网络安全,还细分了生成式 AI、大语言模型、计算生物学等新兴学科,并直接链接至官方视频播放列表,让用户能一站式获取高质量的教育资源,免费享受世界顶尖大学的课堂体验。

79.8k|★☆☆☆☆|昨天
其他图像数据工具

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|6天前
Agent图像开发框架

PaddleOCR

PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。

75.2k|★★★☆☆|今天
语言模型图像开发框架

awesome-machine-learning

awesome-machine-learning 是一份精心整理的机器学习资源清单,汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点,这份清单按编程语言(如 Python、C++、Go 等)和应用场景(如计算机视觉、自然语言处理、深度学习等)进行了系统化分类,帮助使用者快速定位高质量项目。 它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库,还是资深工程师对比不同语言的技术选型,都能从中获得极具价值的参考。此外,清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源,构建了从学习到实践的全链路支持体系。 其独特亮点在于严格的维护标准:明确标记已停止维护或长期未更新的项目,确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”,awesome-machine-learning 以开源协作的方式持续更新,旨在降低技术探索门槛,让每一位从业者都能高效地站在巨人的肩膀上创新。

72.1k|★☆☆☆☆|6天前
开发框架其他