一、 Address
来自于IJCAI-19, 北大和阿里的paper
AddGraph: Anomaly Detection in Dynamic Graph Using Attention-based Temporal GCN
地址:https://www.ijcai.org/Proceedings/2019/0614.pdf
二、Introduction
2.1 动态图异常
举了个Recommendation上的例子,还是很通俗易懂的。
以我的理解大白话就是有的人(异常的人)想卖自己的东西,疯狂想被推荐,那怎么办,那就找几个人疯狂点自己的东西的同时点那些本身就已经是popular的item,这样就会让自己的东西和popular的有相似的特征等等,就会增加这些物品的被推荐的rank. 这同时会产生很多新的edge,这些都是异常的edge.
2.2 存在的一些Challenges
2.2.1
异常主要存在于短时间内,大多数时间都是normal的情况,并且比较flexible and dynamic,dynamic也是本文章主要要解决的问题。
2.2.2
这个问题很多anomaly detection的问题都存在,比较常见的一个问题,有的甚至没有label,需要自己去找case,去定义的。
2.3 related works
三、Method
3.1 问题定义
目的是为了检测出异常的edge, 其他的描述都是graph的常规操作,自行阅读。
简单来说就是有一个node的集合,有一个edge的集合,edge上表示的就是nodei和nodej之间有一个edge的weights为w,计算过程中还有个不可缺少的邻接矩阵A
3.2 AddGraph Framework
3.1 框架图
文中所说主要的特征为
3.2 GCN
GCN来预测content和structural特征
得到current当前的一些信息
主要的计算公式如下
3.3 GRU
GRU+attention主要是提取short term和long term的状态信息
3.4 判断anomaly的edge
这里判断的依据是通过一个score func计算得到一个值,通过这个值来确实可能是anomaly的概率
公式如下
3.5 训练过程的sampling技巧和loss func
为了去解决anomaly data不足的情况,我们建立一个模型去描述normal的分布情况
我们假设训练样本中全部的edge都是normal的,对应每个normal的edge我们产生一个负样本当作anomaly的edge
这里用一个伯努利分布,重新计算了normal边对应两边node的degree,如果这个degree越大则表示越可能是异常的,越小则是正常的
这个loss表示了,产生的负样本也有可能是normal的,为了对应这种情况,以上这个loss,可以让原本样本的score degree更小,而产生的负样本的score degree更大,则原始样本更往定义的normal靠拢,而产生的负样本最大限度的为异常样本。
最后的样本还添加了L2范数来防止overfitting
四、Experiments
4.1 数据集
UCI Message 在线社交的网络,node为一个user,edge为两个用户之间的信息传递
Digg 社交新闻网站,node和edge与上面类似
4.2 baseline
4.3 Results on Graphs without Timestamps
没有windows的信息,即没有attention,直接用过去一个。
数据前50作为train,后50当作test
并且数据集中的anomaly的百分比不同,依次增多
4.4 最终的AddGraph结果
并对两个系数一个GCN层数以及hidden state的大小做敏感性分析
更多精彩内容(请点击图片进行阅读)
公众号:AI蜗牛车
保持谦逊、保持自律、保持进步
个人微信
备注:昵称+学校/公司+方向
如果没有备注不拉群!
拉你进AI蜗牛车交流群