基于深度无监督自动编码器的图异常检测方法

文档序号:30454469发布日期:2022-06-18 02:51阅读:141来源:国知局
基于深度无监督自动编码器的图异常检测方法

1.本发明涉及一种基于深度无监督自动编码器的图异常检测方法,属于无监督异常检测领域。


背景技术:

2.现实世界中图结构数据无处不在,图作为一种复杂的结构化数据,相对于其他数据结构能够更好地存储和表达实体属性之间的联系,在社交网络分析、交通路网分析和知识图谱构建等领域均有广泛的应用。图异常检测是指在一个图或海量的图数据中寻找不正常的结构,包括节点结构异常,属性异常以及结构和属性联合异常三种类别,目前被广泛应用于网络攻击检测、社交网络中的突发事件检测、交通路网异常检测等应用场景。相较于传统的异常检测方法,由于图具有更强大的表达能力,基于图的异常检测方法不仅可以将复杂的数据更加直观的呈现,同时也能将数据中隐含的相关性融入到异常检测过程中。
3.网络中的节点具有社团结构,当节点的结构及其属性符合网络的社团结构时,大多数网络嵌入算法都能很好地工作。但是现实生活中的网络有社区离群节点,这些离群节点在其结构或属性上的相似性方面与它们所属社区的其他节点有很大的差异。如果不仔细处理这些离群节点,甚至会影响网络中其他节点的嵌入。因此,选择一个合适的节点嵌入方法在无监督异常检测任务中处理异常值的结构和属性是非常重要的。为了更合理地提取网络表示中的特征信息,本发明提出了一种基于深度无监督自动编码器的图异常检测方法,在生成网络嵌入时,使用随机梯度下降和封闭形式更新网络,以更快地优化网络参数。同时通过识别网络的结构和属性以及联合结构和属性的嵌入来学习,以最大限度地减少离群值的影响。
4.基于深度无监督自动编码器的图异常检测方法的应用列举及优势如下。
5.案例1:应用于网络攻击检测。通过对网络结构的实时监测,能够第一时间发现网络的异常情况从而及时对网络安全加强防护,避免黑客入侵和网络瘫痪。
6.案例2:应用于社交网络异常检测。通过对社交网络的检测,能够检测到社交网络中的突发事件,避免异常用户通过创建多个马甲进行虚假评论,盗用用户信息进行网络欺凌等情况的发生。
7.案例3:应用于交通路网异常检测。通过对交通路网的实时监控,能够提前预测不正常的交通路段情况,如异常轨迹预测和路网拥堵趋势预测等,从而避免不必要的交通事故发生。


技术实现要素:

8.由于使用半监督图异常检测算法来检测离群值时,获取有标签的网络节点数据既困难又昂贵,而现有的无监督图异常检测算法也普遍存在两个局限性,首先是现实世界的复杂网络表现出的高度非线性的特征很难用矩阵分解捕捉到,其次矩阵分解技术在更大的网络中不能很好的使用。因此为了解决以上问题,本发明提出了一种基于深度无监督自动
编码器的图异常检测方法。
9.(一)技术方案
10.基于深度无监督自动编码器的图异常检测方法的基本思想是:一方面使用两个并行的自动编码器分别对节点的结构和属性进行编码,以一种无监督的方式来最小化异常值对网络嵌入的影响,另一方面使用sgd算法训练模型,同时使用封闭形式更新网络,以更快地优化网络的参数。具体步骤如下:
11.1.模型预处理
12.现实生活中的网络是高度稀疏的,节点之间缺乏连接。邻接矩阵的行只能捕获观察到少量的节点之间的连接。为了解决这个问题,本发明使用重启随机游走方法来获得更丰富的上下文,从而保证节点间的高阶邻近性。
13.步骤1_1加载原始数据集中的图节点文件和图边文件。
14.步骤1_2将原始数据集按不同的比例划分成训练集和测试集。分别取数据集中的10%、20%、30%、40%和50%的数据作为训练集训练,剩余数据作为测试集进行测试使用。
15.步骤1_3计算转移矩阵。通过网络的邻接矩阵a得到转移矩阵d-1
a,其中d是一个对角矩阵,具体公式如下:
[0016][0017]
步骤1_4计算节点之间的高阶近似。首先定义表示概率矩阵,其中表示从节点i开始经过t步到达节点j的概率,t=0,1,

,t。t是截断后随机游动的最大长度,的具体公式如下:
[0018][0019]
其中0≤r≤1,(1-r)是任意一步从起始节点随机游走的重新启动概率。最终取所有矩阵p1,

,p
t
的平均值来获取节点之间的高阶近似。
[0020]
步骤1_5计算模型的最终输入。最终使用矩阵的行作为模型的最终输入,具体公式如下:
[0021][0022]
2.模型训练和优化
[0023]
模型的结构如图2所示,具体而言使用两个并行的自动编码器分别对节点的结构和属性进行编码。第一个自动编码器对节点的网络结构进行编码,使用encs表示,第二个自动编码器对节点的属性进行编码,使用enca表示。第一个自动编码器的输入是xi,即矩阵x的第i行,第二个自动编码器的输入是ci,即属性矩阵c的第i行。每个编码器和解码器都有l层,两个自动编码器均使用leakyrelu非线性激活函数来训练网络。此外节点i关于结构和属性的隐藏层嵌入分别为和重构输出分别为和节点的结构异常分数为属性异常分数为结构属性联合异常分数为
[0024]
步骤2_1计算邻近节点的结构损失由于结构自动编码器的输入捕获了节点的局部邻域,因此通过最小化重构损失可以保持网络中的高阶邻近性。为了进一步减少异常值对网络参数的学习产生不利影响,将结构损失的具体公式表述如下:
[0025][0026]
步骤2_2计算邻近节点的结构同质性损失由于由边连接的节点往往具有相似的行为,它们在低维嵌入空间中的分布也应该是紧密的。相反的是,网络中的离群节点随机地与多个社区的节点连接,因此它们对同质性损失的贡献很小。因此结构同质性损失的具体公式如下:
[0027][0028]
步骤2_3计算邻近节点的属性损失与结构损失的计算原理类似,属性损失具体公式如下:
[0029][0030]
步骤2_4计算邻近节点的属性同质性损失与结构同质性损失的计算原理类似,属性同质性损失具体公式如下:
[0031][0032]
步骤2_5计算结构和属性联合损失具体公式如下:
[0033][0034]
步骤2_6通过最小化总损失来训练整个模型的网络,其中α为权重系数。具体公式如下:
[0035][0036]
步骤2_7使用adam函数来优化学习自动编码器的参数,直至收敛,计算得到节点的最终嵌入。由于同质损失的计算代价昂贵,因此,对于每次迭代更新,从每个节点的邻域随机抽取2个节点并取它们的平均值来近似整个邻域的平均。对于训练,首先对自动编码器进行不带异常值的训练,然后交替更新各自封闭规则的超参数,之后使用adam函数更新自动编码器的参数,直到其收敛。最终将节点i的结构和属性的嵌入拼接起来,得到节点i的最终嵌入
[0037]
步骤2_8根据训练集的准确率和f1分数对模型超参数进行调整,直到得到最优的符合预期的结果。
[0038]
3.模型测试
[0039]
步骤3_1对测试数据进行预处理,与训练数据的预处理方式一致。
[0040]
步骤3_2将经过预处理的测试数据输入训练好的模型中,计算节点的结构异常分数属性异常分数和结构属性联合的异常分数将三部分的异常分数的加权平均值oi作为最终的异常分数,然后通过设定一个异常评分阈值来判定数据是否异常。计算异常分数的具体公式如下:
[0041][0042]
步骤3_3计算测试数据的f1分数和准确率,根据结果调整模型的超参数,最终得到一个最优且符合预期的结果。
[0043]
(二)有益效果
[0044]
1.本发明解决了使用半监督图异常检测算法检测离群值存在的获取有标签的网络节点困难,需要花费昂贵的人力和物力代价的问题。
[0045]
2.本发明解决了现有的无监督图异常检测算法存在的两个局限性。首先是现实世界的复杂网络表现出的高度非线性的特征很难用矩阵分解捕捉到,其次矩阵分解技术在更大的网络中不能很好的使用。针对以上两个局限,为了能够更合理地提取网络表示中的特征信息,本发明一方面以一种无监督的方式来最小化异常值对网络嵌入的影响,另一方面使用sgd算法训练模型和封闭形式更新网络,能够以更快地优化网络的参数,同时通过识别网络的结构和属性以及联合结构和属性的嵌入来学习,以最大限度地减少离群值的影响,在一定程度上解决了以上两个局限性带来的问题。
附图说明:
[0046]
图1为本发明的方法流程图。
[0047]
图2为本发明所述的模型结构图。
具体实施方式:
[0048]
为将本发明的技术方案更清晰完整地阐述,下面结合附图及实例,对本发明进一步阐述。
[0049]
下面选取公开可用的属性网络数据集中的cora数据集为实例进行讲解。该数据集是一个引文网络数据集,由7类机器学习论文组成,总共包含2708篇论文和5429条引用,即网络中包含2708个节点和5429条边,总共由1433个单词组成,即该数据的特征有1433个维度。由于原数据集中不包含离群值,本发明最终使用的cora数据集包含手动植入的总计5%的离群值。如图1所示,本发明提供基于深度无监督自动编码器的图异常检测方法,包括以下步骤:
[0050]
步骤1如图1的方法流程图所示,方法的第一步是输入数据并进行数据预处理,数据预处理具体步骤如下:
[0051]
步骤1_1从公开可用的属性网络数据集中下载cora数据集,得到cora.tgz压缩文件,文件夹包含cora.cites和cora.content两个文件。其中cora.cites文件包含网络中论文的引用关系,即每行数据代表图的一条边,通过论文之间的引用关系来建立邻接矩阵。
cora.content文件包含网络中的论文数量,即图中的节点数,每条记录包含1435个维度,其中1433个维度表示记录的特征维度,即引文网络中的单词数量。分别加载两个文件得到原始的引文网络数据。
[0052]
步骤1_2将原始数据集按不同的比例划分成训练集和测试集。分别取数据集中的10%、20%、30%、40%和50%的数据作为训练集训练,剩余数据作为测试集进行测试使用。
[0053]
步骤1_3计算数据的转移矩阵。通过数据集的邻接矩阵a得到转移矩阵d-1
a。
[0054]
步骤1_4计算数据节点之间的高阶近似。首先使用表示概率矩阵,然后取所有矩阵p1,

,p
t
的平均值来获取节点之间的高阶近似。
[0055]
步骤1_5计算数据经过模型预处理后的最终输入。最终使用矩阵的行作为模型的最终输入。
[0056]
步骤2对模型进行训练和优化,将数据集按比例划分为训练集和测试集,具体步骤如下:
[0057]
步骤2_1输入数据经过模型预处理后的结果作为训练的最终输入。
[0058]
步骤2_2计算邻近节点的结构损失结构损失的具体公式表述如下:
[0059][0060]
步骤2_3计算邻近节点的结构同质性损失结构同质性损失的具体公式如下:
[0061][0062]
步骤2_4计算邻近节点的属性损失与结构损失类似,属性损失具体公式如下:
[0063][0064]
步骤2_5计算邻近节点的属性同质性损失与结构同质性损失类似,属性同质性损失具体公式如下:
[0065][0066]
步骤2_6计算结构和属性联合损失具体公式如下:
[0067][0068]
步骤2_7通过最小化总损失来训练整个模型的网络,其中α为权重系数。具体公式如下:
[0069][0070]
步骤2_8使用adam函数来优化学习自动编码器的参数,计算得到节点的最终嵌入。对于每次迭代更新,我们从每个节点的邻域随机抽取2个节点并取它们的平均值来近似整个邻域的平均。对于训练,我们首先对自动编码器进行不带异常值的训练。然后我们交替更新各自封闭规则的超差值,再用adam函数更新自动编码器的参数,直到其收敛。最终将节点i的结构和属性的嵌入拼接起来,得到节点i的最终嵌入
[0071]
步骤3对模型进行测试,分别计算不同比例下的测试集的f1分数和准确率,具体步骤如下:
[0072]
步骤3_1加载原始数据集中的图节点文件和图边文件。
[0073]
步骤3_2对测试数据进行预处理,与训练数据的预处理方式一致。
[0074]
步骤3_3将经过预处理的测试数据输入训练好的模型中,计算节点的结构异常分数属性异常分数和结构属性联合异常的分数,将三部分的异常分数的加权平均值oi作为最终的异常分数,然后通过设定一个异常评分阈值来判定数据是否异常。计算异常分数的具体公式如下:
[0075][0076]
步骤3_4根据结果调整模型的超参数,最终得到一个稳定且符合预期的结果。
[0077]
步骤3_5分别计算不同比例下的f1分数和准确率,作为最终模型的评价指标。
[0078]
以上所述是结合附图对本发明的实施例进行的详细介绍,本文的具体实施方式只是用于帮助理解本发明的方法。对于本技术领域的普通技术人员,依据本发明的思想,在具体实施方式及应用范围内均可有所变更和修改,故本发明书不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1