随着量化宽松和经济复苏,商业银行消费金融进一步发展,在移动支付、大数据、人工智能等技术快速发展的背景下,消费金融领域开展了诸多创新,金融借贷业务发展迅速。

先介绍下金融借贷业务流程:用户前来申请借贷,经过欺诈识别后,把欺诈团伙和主观欺诈的个人拒绝掉,然后对通过的人进行信用评估,最后根据额度模型,算出利润最大化时放款金额。

举个真实的团队欺诈的例子。宜人贷在他们的财报中公布的,他们被一个团伙成功撸走了2000多单,当时宜人贷的件均4w, 一下损失了8000w!

那么如何防范这种风险呢。这就是今天要分享的图算法。图可以将这些一个个有良好记录的个体关联起来,一网打尽。

Graph简介

G=(V,E)G=(V,E)V:vertex set

E:edge set (有向,无向,有权重和没有权重)举例,两个人之间的联系, A给B买了东西,A和B之间的通话次数时长多于A和C之间。度中心性(Degree Centrality) - 表示连接到某节点的边数。在有向图中,我们可以有2个度中心性度量:流入和流出。一个节点的节点度越大就意味着该节点在网络中就越重要。

接近中心性(Closeness Centrality) - 从某节点到所有其他节点的最短路径的平均长度。反映在网络中某一节点与其他节点之间的接近程度。

介中心性(Betweenness Centrality) - 某节点在多少对节点的最短路径上。介数中心性是比较能体现节点在图中桥梁作用的中心性度量方法。介数反映了相应的节点或者边在整个网络中的作用和影响力,具有很强的现实意义。例如,在交通网络中,介数较高的道路拥挤的概率很大;在电力网络中,介数较高的输电线路和节点容易发生危险。

社团发现算法一般有:最小割, 正则化割:通过计算图的最小割,即将网络划分为预定的分组数,并使连接各分组的边的条数最少。

非负矩阵分解:基本原理是将原始矩阵分解得到社区指示矩阵和基矩阵

基于模块度的社区划分

基于节点相似性的社区划分最小割算法广泛应用在分布式计算的负载均衡中,对集群节点的分组有利于减少不相关节点之间的通信。然而由于该算法限定了网络最终分组的个数,而不能通过算法“发现”节点间的内在联系并自然地构成若干个社区,因此最小割算法应用较为局限。

本文主要分享这两类的主要算法,基于模块度的 louvain和基于信息熵infomap,基于相似度的node2vec

模块度(Modularity)公式及简化

优化目标:一般认为社团内部的点之间的连接相对稠密,而不同社团的点之间的连接相对稀疏。

所以模块度也可以理解是社区内部边的权重减去所有与社区节点相连的边的权重和,对无向图更好理解,即社区内部边的度数(内部的连线数)减去社区内节点的总度数。

模块度公式的解释

节点i和节点j之间边的权重,网络不是带权图时,所有边的权重可以看做是1;

表示所有与节点i相连的边的权重之和(度数);

表示节点i所属的社区;

表示所有边的权重之和(边的数目)。

其中

表示社区c内的边的权重之和,

表示与社区c内的节点相连的边的权重之和,即社区c节点的度之和(包含与其他社区相连边的度)。从概率的角度去看:

表示实际情况下,c社区内产生边的概率。

表示在一种理想情况下,给定任意节点i的的度ki,对节点i和节点j进行随机连边,边属于社区c的概率期望。

于是上式就表示了社区内连边数与随机期望的一个差值。连边数比随机期望值越高,表明社区划分的越好。

一般使用后面简化的公式,简化后的公式删除了判断两个节点是否划为同一个社区的函数,所以在一定程度上大大减少了Q值计算量。

Louvain

Louvain算法的思想很简单:将图中的每个节点看成一个独立的社区,此时社区的数目与节点个数相同;

对每个节点i,依次尝试把节点i分配到其每个邻居节点所在的社区,计算分配前与分配后的模块度变化

,并记录

最大的那个邻居节点,如果

,则把节点i分配

最大的那个邻居节点所在的社区,否则保持不变;重复2,直到所有节点的所属社区不再变化;

对图进行压缩,将所有在同一个社区的节点压缩成一个新节点,社区内节点之间的边的权重转化为新节点的环的权重,社区间的边权重转化为新节点间的边权重,然后重复2,3;

重复2~4,直到整个图的模块度不再发生变化。

第一阶段称为Modularity Optimization,主要是将每个节点划分到与其邻接的节点所在的社区中,以使得模块度的值不断变大;

第二阶段称为Community Aggregation,主要是将第一步划分出来的社区聚合成为一个点,即根据上一步生成的社区结构重新构造网络。重复以上的过程,直到网络中的结构不再改变为止。

移动

是社区c内节点与节点i的边权重之和,再乘以2

前面部分表示把节点i加入到社区c后的模块度,后一部分是节点i作为一个独立社区和社区c的模块度

1. 模块度与Louvain社区发现算法

infomap

从信息论的角度出发,假设一个random worker 在图上进行随机游走,那么怎么用最少的编码长度来表示其路径呢?

如果节点存在社区结构,那么社区内的节点就可以共享社区的bit位码,可以得到更小的平均比特, 所以社区划分的越好,那么表示任意一条随机游走的路径所需的平均比特就越小。

如果我们能够计算出每个节点的到达概率,就可以依据信息熵的公式来量化平均比特了:

怎么计算每个点的到达概率呢?

一个暴力的办法是在图上进行长时间的随机游走,最后统计每个节点的出现概率。太暴力了。

利用pagerank思路,初始化了每个节点的到达概率之后,就可以不断地迭代更新每个节点的到达概率,这个结果会很快趋于收敛。

其实这过程就是一个马尔科夫随机过程,随机初始化起始值,然后随机游走就相当于不停地用概率转移矩阵相乘,最后就可以达到马尔科夫稳态。

把随机游走事件归为三类:进入某个社团,离开某个社团,再社团内部游走。

定义清楚各类事件的发生概率,依据信息熵公式,就可以得到此时编码所需的平均比特了,其本质就是从信息论的角度出发。

Infomap算法的迭代过程初始化,对每个节点都视作独立的社区;

while 平均比特的值不再下降;

对图里的节点随机采样出一个序列,按顺序依次尝试将每个节点赋给邻居节点所在的社区,取平均比特下降最大时的社区赋给该节点,如果没有下降,该节点的社区不变。

参考链接

1. The map equation

3. DEEP GRAPH INFOMAX 阅读笔记

Graph embeddings

Deepwalk使用随机游走(RandomWalk)的方式在图中进行节点采样获得节点共关系,

使用skip-gram,根据步骤1中生成的节点序列学习每个节点的向量表示。skip-gram就是根据给定输入的节点,预测上下文节点。

Deepwalk有多不足,比如泛化能力,有新节点加入时,它必须重新训练模型以表示该节点。

其中一个就是采样,从其邻居中随机采样节点作为下一个访问节点,是一种可重复访问已访问节点的深度优先遍历算法。

node2vec是一种综合考虑DFS邻域和BFS邻域的graph embedding方法

node2vec

优化目标:

条件独立假设:

特征空间的对称性:

优化目标:

计算量非常大,所以论文采用负采样(negative sample)进行近似计算。

这个node2vec优化目标函数,因为它跟大名鼎鼎的word2vec是一样。

我们最初是用一个Python写的包,跑一遍算法需要一周。后来想,既然优化目标是一样的,那能不能用word2vec包,因为word2vec用c写的,而且还采用了 Hierarchical Softmax,negative sampling加速。

然后在网上找到了一个套用word2vec实现的node2vec包,速度快很多。

随机游走的方式

复杂网络处理的任务其实离不开两种特性,前面也提到过:一种是同质性,就是之前所说的社区。一种就是结构相似性,值得注意的是,结构相似的两个点未必相连,可以是相距很远的两个节点。

能不能改进DeepWalk中随机游走的方式,使它综合DFS和BFS的特性呢?所以本文引入了两个参数用来控制随机游走产生的方式。

Z是分子的归一化常数

如果已经采样了 (t,v) ,也就是说现在停留在节点v上,那么下一个要采样的节点x是哪个?作者定义了一个概率分布,也就是一个节点到它的不同邻居的转移概率:

直观的解释一下这个分布:如果t与x相等,那么采样x的概率为

;如果t与x相连,那么采样x的概率1;

如果t与x不相连,那么采样x概率为

参数p、q的意义分别如下:

返回概率p:如果 p>max(q,1) ,那么采样会尽量不往回走,对应上图的情况,就是下一个节点不太可能是上一个访问的节点t。

如果 p

出入参数q:如果 q>1 ,那么游走会倾向于在起始点周围的节点之间跑,可以反映出一个节点的BFS特性。

如果 q<1 ,那么游走会倾向于往远处跑,反映出DFS特性。

当p=1,q=1时,游走方式就等同于DeepWalk中的随机游走。

简而言之:

参数p控制重复访问刚刚访问过的顶点的概率,

参数q控制着游走是向外还是向内,若q>1,随机游走倾向于访问和t接近的顶点(偏向BFS)。若q<1,倾向于访问远离t的顶点(偏向DFS)。

缺点慢

先embedding再聚类,感觉这两个过程很割裂!!融合一下

comE

Graphembedding得到向量后,可以做很多事情,在我们这个主题可以简单的通过聚类来讲节点分组。

但是这个过程比较割裂,先优化node2vec,然后再优化聚类。能不能整体上一次性优化完呢。

comE这个算法优化目标中加入了社区的检测和嵌入。通过一个混合高斯模型将节点划分开。

2. Learning Community Embedding with Community Detection and Node Embedding on Graphs

3. Learning Community Embedding with Community Detection and Node Embedding on Graphs

评价指标

Modularity

标准化互信息 NMI ( Normalized Mutual Information )

假设对于N个样本点的两种标签划分为U 和 V. 熵为划分集的不准确性

实时社区发现

1. 基于个体稳定度博弈的动态社区发现算法研究

2. 基于标签传播的实时社区发现算法研究

3. 基于 spark streaming 的动态社区发现及其在个性化推荐应用中的研究

4. 一种基于局部模块度的增量式动态社区发现算法

5. 基于标签传播的实时社区发现算法研究

6. 图流合璧——基于Spark Streaming和GraphX的动态图计算

参考佳文

2. 社区发现(Community Detection)算法

3. 社区发现算法FastUnfolding的GraphX实现

4. 谱聚类(spectral clustering)原理总结

5. GraphWave:一种全新的无监督网络嵌入方法

6. 社团划分结果评估指标:Q、ARI、NMI

8. 2017CIKM-Network Embedding专题论文分享

9. node2vec: Scalable Feature Learning for Networks

10. node2vec: Scalable Feature Learning for Networks

11. node2vec: Scalable Feature Learning for Networks 阅读笔记

12. 基于PageRank的复杂网络社区发现

13. Modularity的计算方法——社团检测中模块度计算公式详解

14. 社区发现算法 - Fast Unfolding(Louvian)算法初探

作者:张行军 Abakus 高级风控算法经理

来源:DataFun AI+ Talk

community 计算模块度_【转载】金融风控反欺诈之图算法相关推荐

  1. community 计算模块度_燃气模块炉使用信息采集表

    公司旗下有生产燃气炉公司: 可用天燃气!液化气!炳烷!LNG!LPG! 工程机有:模块炉,容积炉,平衡热水炉! 家装机有:壁挂炉,热水器! 容积炉有:40,60,80,99千瓦带418升容积: 燃气模 ...

  2. community 计算模块度_聚苯乙烯泡沫模块可以用在哪些建筑上?

    云亭烯诚邀合作及加盟 什么是EPS?可发性聚苯乙烯(Expandable Polystyrene)通称聚苯乙烯和苯乙烯系共聚物,简称EPS,是一种轻型高分子聚合物. 它主要由聚苯乙烯和分散在其中的低沸 ...

  3. community 计算模块度_光模块深度:国内光模块企业快速崛起

    一.核心观点 二.发展追溯:技术是底蕴.创新是动力 1 光通信发展:技术迭代加快,国产替代是前进的方向 依据摩尔定律,光模块的小型化.低成本以及高速率是产品迭代的主要方向. 2 竞争格局:市场集中度高 ...

  4. 互联网金融领域反欺诈技术已发展到哪一步?

    http://www.ce.cn/xwzx/gnsz/gdxw/201711/13/t20171113_26835875.shtml 近日,在JDD大会上,京东金融集团副总裁.技术研发部总经理曹鹏介绍 ...

  5. 分享关于风控反欺诈系统的资料

    1) 阿里金融云决策平台与应用: http://www.infoq.com/cn/presentations/alibaba-financial-decision-making-platform-an ...

  6. 大数据风控-反欺诈之黑卡与养卡

    这不仅仅是一个黑卡.养卡的知识贴,更是一个讨论帖.希望在反欺诈上能为各位提供变量思路,一起进步哈. 首先先说一下东西 --'猫池'.猫池是:早起公司用来群发短信的一个本来用于商用的机器.它就像一个能插 ...

  7. pkpm板按弹性计算还是塑性_[转载]双向板按弹性还是按塑性方法计算

    双向板按弹性方法还是按塑性方法计算 茅老师您好!想请教您个问题,PKPM计算双向板时一般都是按弹性算吧,可我去年刚进设计院的时候有一个项目是按塑性算的,这样影响大不大啊,支座与跨中弯矩比值系数取得默认 ...

  8. python word2vector计算相似度_使用word2vec计算词向量之间的相似度

    2018-12-01 回答 希望对你有帮助 开始背单词了,要注意什么呢?一下这几点从现在起,请牢记在心,并彻底贯彻. 第一条:狂听!可以精听,也可以泛听.精听是指专门拿出一段时间,每个词都要听见,每个 ...

  9. 风控反欺诈规则测试方案及实践报告

    测试进度及报告模板如下所示: 背景: 测试分控反欺诈规则,传统手工测试周期长,采用jmeter参数参数化方案进行测试: 通过接口api+入参条件触发对应反欺诈规则. 测试方案 进重点:步骤 1.pos ...

最新文章

  1. Linux防火墙详解(二)
  2. UART0串口编程(五):串口编程(UART0)之UC/OS(一)UC/OS下的串口发送任务编程
  3. 用 C# 做组件设计时的事件实现方法讨论
  4. Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现
  5. MySQL /“N叉树”的N值在MySQL中是可以被人工调整吗
  6. 采样算法哪家强?一个针对主流采样算法的比较
  7. 【TCP三次握手与四次挥手最强解析】
  8. Spring基础学习笔记-Bean的基础知识
  9. 群晖nas服务器的虚拟机,黑群晖NAS 6.1.6 虚拟机VMWARE傻瓜教程
  10. GSEA分析详细步骤
  11. 时代变迁,台湾的这个优势产业即将被中国大陆取代
  12. MyQQ框架火山SDK
  13. oracle 00936 pivot,oracle 11g 使用 pivot/unpivot 行列转换
  14. UE4-音效触发技巧
  15. mysql .zip 包简易安装
  16. 西北师大与新华三开展物联网战略合作,共建“物联网联合实验室”
  17. 关于window10授时失败问题
  18. Thymeleaf基本标签使用方法
  19. 使用Hash Table高速破解无线密码
  20. 显示卡影片播放硬件加速,作法原理完全解说

热门文章

  1. SCI写作分析篇(一)
  2. linux iptables 防火墙高级应用案例分享
  3. 配电线路中低压塑壳断路器选型
  4. springboot 上传图片并回显
  5. 2011网络IT界大事件TOP 25
  6. BZOJ - 2456
  7. 企业邮箱的SPF设置【转】
  8. GreenHills基本操作:调试
  9. 脑机接口背后的残酷真相
  10. 使用abline()没法显示回归线