从本篇开始,我们将一起开启图上的机器学习篇章。
我们这里所说的“图”,是指图论这个领域的概念,而非图像。
为什么要开启本系列
随着当前GNN(图神经网络)在学术圈、工业界的同时爆发,未来3年左右,图上(或称复杂网络、关系数据)的机器学习、深度学习一定会呈现高度繁荣的局面,笔者建议对图论、图计算、机器学习这些领域感兴趣的朋友一定要密切关注该交叉领域的技术创新及应用发展。
现实中越来越多的数据会以网络关系的形式沉淀下来,而这类数据都可以抽象为图的形式。现实中需要解决分类、聚类、排序等问题,也都可以借助于图计算的方法来开展,因此各大互联网公司都在投入资源开展这方面的研究。
怎样上手
首先,建议先从图论这个领域着手。找本相关的书来了解一下图论研究的问题,常用的数学公式、术语、符号。对于相关的定义、定理,要尽量去消化理解。
其次,建议找一些社交网络分析、复杂网络相关的文献综述来进行阅读。读综述文献是了解一个领域最快的途径之一。然后,了解一下基于复杂网络都存在哪些应用问题可以做,业界一般是怎么解决的。
然后,动手去编程解决几个问题。已经有很多成熟的编程软件package支持图上的计算,例如networkx(python)、igraph(python、R 、C);也有拖拉拽的可视化分析软件,例如Gephi 、UCINET、Pajek等。
有哪些典型的应用问题
现实生活中典型的应用类型包括以下几种。
有监督分类。
在安全风控领域(例如反欺诈、反洗钱、内容安全等),常常会需要识别哪些用户是坏用户,这里就常用到分类的方法。传统上来讲,会先进行特征工程来加工N个特征变量,根据已有的样本来建立分类模型(这里就常常用到我们前面一个系列讲到的集成学习方法)。但目前**GNN领域的图节点分类**方法也越来越多开始得到应用。
无监督聚类。
在很多业务实践中(仍以风控为例),坏人并不是单独作案,而是有着上下游的产业链分工,在账号体系中也会存在大量的交互关系。所以进行团伙挖掘就会是一个非常典型的业务需求。就里就可以应用图聚类来开展。
图聚类一般的开展步骤是这样的:
* 1)构建一张网络。可以是基于社交关系的,也可以是基于一些物理介质(例如手机、MAC地址、IP等)等建立的用户之间的联系;
* 2)在这张图上进行聚类计算,理论界常用community dection 来描述该领域,这里还涉及到不同的群组之间是否允许存在重叠,就产生了overlap community dection的挖掘;有很多的算法可以用来发现community。这一步计算完成后,就得到了图中每一个节点所属的聚类群组;
边预测。
在广告营销领域,传统的推荐算法主要是协同过滤,现在也开始使用GNN方法来开展了,大概的思路是建立用户与商品构成的异质图,然后来进行边预测。这一块笔者没有亲身经验,所以无法更详细展开讨论。
笔者自己做过的一点实践
时间回到几年前,笔者自己也做了一些复杂网络相关的工作,CSDN上仍保存着相关的文章,厚着脸皮推荐给大家:
复杂网络社区结构发现算法-基于igraph 标签传播算法(https://blog.csdn.net/a_step_further/article/details/51176980)
复杂网络社区结构发现算法-基于python networkx clique渗透算法(https://blog.csdn.net/a_step_further/article/details/51176977#comments)
使用C++ Boost Graph Library 进行社交网络分析入门篇 (https://blog.csdn.net/a_step_further/article/details/51536586)
复杂网络节点重要性评价方法的对比-基于igraph C library(https://blog.csdn.net/a_step_further/article/details/51176986)
复杂网络社区结构发现算法-基于igraph C library (https://blog.csdn.net/a_step_further/article/details/51176973)
复杂网络节点重要性评价方法初探(https://blog.csdn.net/a_step_further/article/details/51176964)
结语
本篇主要是推荐大家关注一下图上的机器学习这个领域,然后介绍了几种实际工作中可能会涉及的几个场景,并厚着脸皮又PUSH了一下笔者个人的博客。从下篇开始我们就正式开启新的旅程了,敬请继续关注。