作者 | Benedek Rozemberczki

译者 | 天道酬勤 责编 | Carol

出品 | AI科技大本营(ID:rgznai100)

空手道俱乐部(Karate Club)是NetworkX Python软件包的无监督机器学习扩展库。详细可以参阅此处的文档:

https://github.com/benedekrozemberczki/karateclub。

空手道俱乐部采用先进的方法对图结构化数据进行无监督学习。简而言之,它是用于小型图形挖掘研究的瑞士军刀。

首先,它在节点级和图级提供了网络嵌入技术。其次,它包括各种重叠和不重叠的社区检测方法。实现的方法涵盖广泛的网络科学(NetSci,Complenet)、数据挖掘(ICDM,CIKM,KDD)、人工智能(AAAI,IJCAI)和机器学习(NeurIPS,ICML,ICLR)会议、研讨会和著名期刊。

一个简单示例

 

空手道俱乐部使现代社区检测技术的使用变得非常容易(可参阅此处的随附教程:https://karateclub.readthedocs.io/en/latest/notes/introduction.html)。下面的代码段在合成图上使用了重叠的社区检测算法。

设计原则

当创建空手道俱乐部时,我们使用了面向API的机器学习系统设计观点——为了成为最终用户友好的机器学习工具。这种面向API的设计原则包含一些简单的思想。在本节中,我们将通过适当的说明性示例详细讨论这些思想及其明显的优势。

1)封装模型超参数与检验

通过使用适当的Python对象的构造函数来创建无人监督的空手道俱乐部模型实例。该构造函数具有一个默认的超参数设置,该设置允许合理地使用现成的模型。简单地说,这意味着最终用户不需要非常详细地理解内部模型机制,就可以使用在我们的框架中实现的方法。

我们设置这些默认超参数来提供合理的学习和运行时性能。如果需要,可以在模型创建时使用构造函数的适当参数化来修改这些模型超参数。超参数存储为公共属性,以便允许检查模型设置。

我们通过上面的代码片段演示了超参数的封装。首先,我们要为使用标准超参数设置的NetworkX生成的Erdos-Renyi图创建一个嵌入。

当构建模型时,我们不会更改这些默认超参数,而可以打印尺寸超参数的标准设置。其次,我们可以设置不同数量的维度,因此我们创建了一个新模型,并且仍然可以公开访问维度超参数。

2) 类的一致性和非扩散性

空手道俱乐部中的每个无监督机器学习模型都实现为一个单独的类,该类继承自Estimator类。因为我们假设最终用户对与特定技术有关的算法细节不是特别感兴趣,所以在我们的框架中实现的算法只有少数几种公共方法。

所有模型都通过使用fit()方法进行拟合,该方法接受输入(图形、节点特征)并调用适当的私有方法来学习嵌入或集群。节点和图的嵌入由get_embedding()公共方法返回,而集群成员关系则通过调用get_memberships()来检索。

在上面的代码段中,我们创建了一个随机图,并使用具有默认超参数的DeepWalk模型,使用public fit()方法对该模型进行拟合,并通过调用public get_embedding()方法返回嵌入。

我们可以对这个示例进行修改,通过更改模型导入和构造函数以最小的工作量创建嵌入的walklet,这些修改将产生下面的代码片段。

综观以上两个代码片段,API驱动设计的优势显而易见,因为我们只需要进行一些修改即可。首先,必须更改嵌入模型的导入。其次,我们需要更改模型构造,并且已经设置了默认的超参数。

第三,DeepWalk和Walklets类提供的公共方法的行为相同。嵌入是通过fit()学习的,并由get_embedding()返回。当用于特征提取的上游非监督模型性能较差时,这可以快速、最少地更改代码。

3)标准化数据集提取

我们设计了空手道俱乐部,以便在拟合模型时使用标准化的数据集提取。实际上,这意味着目的相同的算法使用相同的数据类型进行模型训练。详细如下:

  • 基于邻域和结构节点的嵌入技术使用单个NetworkX图作为拟合方法的输入。

  • 属性节点嵌入过程将NetworkX图作为输入,并将要素表示为NumPy数组或SciPy稀疏矩阵。在这些矩阵中,行对应于节点,列对应于特征。

  • 图级嵌入方法和统计图指纹将NetworkX图的列表作为输入。

  • 社区检测方法使用NetworkX图作为输入。

4)高性能模型力学

图挖掘算法的底层机制是使用广泛使用的Python库实现的,这些库不依赖于操作系统,并且不需要其他外部库(如TensorFlow或者PyTorch)的存在。空手道俱乐部中的内部图形表示使用NetworkX。

密集的线性代数运算是使用NumPy完成的,而稀疏的对等运算则使用SciPy。隐式矩阵分解技术利用GenSim软件包,而依赖图形数据处理的方法则使用PyGSP。

5)标准化的输出生成和接口

空手道俱乐部的标准化输出生成可确保用于相同目的的无监督学习算法始终以一致的数据点顺序返回相同类型的输出。

这种设计原则具有非常重要的意义。当将某种类型的算法替换为相同类型的算法时,不必更改使用上游无监督模型输出的下游代码。具体而言,通过我们的框架生成的输出使用以下数据结构:

  • 调用get_embedding()方法时,节点嵌入算法(保留领域、属性和结构)始终返回NumPy浮点数组。数组中的行数是顶点数,并且行索引始终对应于顶点索引。此外,列数是嵌入维数。

  • 当调用get_embedding()方法时,整个图形嵌入方法(光谱指纹、隐式矩阵分解技术)将返回Numpy浮点数组。行索引对应于单个图在输入图列表中的位置。同样,列代表嵌入维数。

  • 调用get_memberships()方法时,社区检测过程将返回一个字典。节点索引是键,与键对应的值是顶点的社区成员。某些图集群技术会创建节点嵌入,来查找顶点集群。调用get_embedding()方法时,它们将返回NumPy浮点数组。该数组的结构类似于节点嵌入算法返回的数组。

我们将通过下面的代码片段演示标准化的输出生成和接口。我们创建随机图的集群,并返回包含集群成员资格的字典。使用外部社区库,我们可以计算这些集群的模块化。

这表明标准化的输出生成将与外部图挖掘和机器学习库的接口变得更容易了。

6) 局限性

目前,空手道俱乐部的设计存在一定的局限性,我们对输入进行了假设。我们假定NetworkX图是无向的,并且由单个强连接的组件组成。所有算法都假定节点的索引是连续的,并且起始节点索引为0。此外,我们假设图不是多部分的,节点是均匀的,并且边是未加权的(每个边都有单位权重)。

对于整个图形嵌入算法,图集中的所有图形都必须修改先前列出的关于输入的要求。基于Weisfeiler-Lehman特性的嵌入技术允许节点具有单个字符串功能,可以使用功能键进行访问。在没有此键的情况下,这些算法默认将中心度用作节点特征。

如果有不清楚的地方或其他意见,欢迎评论告诉我们。

原文:

https://hackernoon.com/karate-club-a-python-library-for-graph-representation-learning-05383yh9

本文为 CSDN 翻译,转载请注明来源出处。

【End】

《原力计划【第二季】- 学习力挑战》正式开始!
即日起至 3月21日,千万流量支持原创作者,更有专属【勋章】等你来挑战

推荐阅读 

☞深度好文 | 中间人攻击、ARP欺骗背后的原理及漏洞还原

☞全方位解析阿里云核心技术竞争力,CSDN 独家在线峰会来了!

☞用于小型图形挖掘研究的瑞士军刀:空手道俱乐部的图表学习Python库

☞罗永浩欲直播带货,京东说可以帮忙联系

☞MySQL数据库无完整备份删库,除了跑路还能怎么办?

☞Libra新编程语言 :Move 的所有权模型灵感来源原来是它……

你点的每一个在看,我认真当成了喜欢

美国空手道俱乐部的 Python 库原来长这样!相关推荐

  1. 用于小型图形挖掘研究的瑞士军刀:空手道俱乐部的图表学习Python库

    作者 | Benedek Rozemberczki 译者 | 天道酬勤 责编 | Carol 出品 | AI科技大本营(ID:rgznai100) 空手道俱乐部(Karate Club)是Networ ...

  2. python xlsx 样式 谷歌开源 样式_连续加班一周最终把所有的Python库整理出来了,愿各位早日学会Py-站长资讯中心...

    MySQLdb,成熟的[MySQL]数据库模块, Baresql,SQL数据库包 ZODB,Python本地对象数据库.一个K-V对象图数据库. pickledb,简单和轻量级的K-V键值存储. Ti ...

  3. 长知识了!这8个很少用但却很实用的 Python 库真棒!

    欢迎关注 ,专注Python.数据分析.数据挖掘.好玩工具! 本文介绍一些我们可能很少听过,但是对于特定问题或者特定任务来说,却非常实用的工具包,文末提供技术交流群,欢迎大家一起学习讨论. 为了配合上 ...

  4. 手把手教你上手python库pydbgen(附代码、安装地址)

    原文标题:Introducing pydbgen: A random dataframe/database table generator 作者:Tirthajyoti Sarkar 翻译:王婷 校对 ...

  5. 这个Python库助你发现网络图的社区结构

    来源:机器之心 熟知社区发现算法,你不能错过这个 Python 库.它涵盖 Louvain 算法.Girvan-Newman 算法等多种社区发现算法,还具有可视化功能. 网络是由一些紧密相连的节点组成 ...

  6. 被“Python之父”称为最强外挂 这个Python库没人敢说不好

    今天就带你深入体验易于使用.文档健全.功能强大的开源 Python 绘图库 Plotly,教你如何用超简单的(甚至只要一行!)代码,绘制出更棒的图表. "沉没成本谬误"是人们常犯的 ...

  7. 数据科学20个最好的Python库(有福利哦)

    Python 在解决数据科学任务和挑战方面继续处于领先地位.去年,我们曾发表一篇博客文章 Top 15 Python Libraries for Data Science in 2017,概述了当时业 ...

  8. aws python库_如何使用Python,AWS和IEX Cloud创建自动更新股市数据的Excel电子表格

    aws python库 Many Python developers in the financial world are tasked with creating Excel documents f ...

  9. Karate空手道俱乐部数据集的简单处理

    1.Karate数据集简介 Karate空手道俱乐部复杂网络是常用于复杂网络社区发现研究的网络,该网络共有 34个节点和78条边,其中34个节点表示某空手道俱乐部的 34 名成员,节点之间的边表示两个 ...

最新文章

  1. usaco Arithmetic Progressions(看了题解)
  2. easyNeurons 神经网络入门教程
  3. 机械硬盘低级格式化软件_低级比高级安全?磁盘格式化要保护秘密
  4. Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 (ISO)
  5. Storing and Retrieving Images from SQL Server using Microsoft .NET
  6. [推荐] TechNet 广播 SQL Server 2000完结篇
  7. 线程池三种队列使用,SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue
  8. 设置IIS指向另一台机器上的共享
  9. 《编译原理》学习笔记 ·002【第二章:文法和语言(形式语言理论)-1】
  10. 使用maven启动web项目报错
  11. ios沙箱软件_ios沙盒2存档-ios沙盒2最新版下载0.5.2苹果版-西西软件下载
  12. GD32实战6__串口读写
  13. 计算机什么快捷键是睡眠,电脑睡眠快捷键(ctrl加哪个键是睡眠)
  14. [年度总结]我的ACM2013
  15. [BZOJ1050] [HAOI2006] 旅行comf (Kruskal, LCT)
  16. Ubuntu16.04挂载exfat格式U盘
  17. 模电精髓“200问”
  18. bing词典案例分析
  19. Pulmonary--Detection5
  20. 要以一种平和的心态对待那些“可爱”的木马病毒

热门文章

  1. jquery中的map()方法与js中的map()方法
  2. xamarin误删vEthernet(internal Ethernet Port Windows Phone Emulator) 网络设备的处理。
  3. PHP GD压缩图片
  4. 在iOS平台使用libcurl
  5. 关于TTThumbsViewController加载更多
  6. 学会这20条,做个聪明的人
  7. 并发环境下的缓存容器性能优化(上):不可变的哈希表
  8. Suse11开启SSH密码登录
  9. java接口自动化书籍_java接口自动化优化(一)
  10. opencv给视频打马赛克