冯利民,刘 波
(1. 武汉纺织大学计算机与人工智能学院,湖北 武汉 430020;2. 华中科技大学网络与计算中心,湖北 武汉 430020)
近年来随着网络用户的不断增加,网络信息量也随之越来越大,逐渐达到饱和状态。网络覆盖范围也在不断扩大,各类问题也接踵而来,如:各类网站的不良广告、弹窗,导致隐私信息被泄露;网络黑客的袭击,导致私密数据被篡改、盗取等等。急需要一种故障挖掘技术检测串口通信网络中的故障数据,解决网络威胁问题[1]。
有学者将深度学习算法应用在通信网络数据挖掘中,从通信传输线路的冗余监测出发,提取在不同监测节点处故障特征向量,利用逻辑连接将所有节点的特征向量进行关联,输入到深度学习故障挖掘模型中,取得最终挖掘结果。该方法所需数据量较大,整体耗用较高,实用性不强;文献[2]采用基于支持度、置信度以及提升度的结合的故障挖掘算法。计算待挖掘数据的三者参数数值,将数值与故障频繁项进行对比,符合频繁项条件的就为故障数据。由于未对原始数据进行预处理,参数计算误差较大,导致后续故障挖掘精准度较低。
综合上述问题,本文结合SOM聚类技术实现串口通信传输故障数据挖掘。本文方法的主要创新点如下:
1)利用SOM聚类建立特征分布图,对原始特征实现一一映射,明确数据特征数目;
2)运用非线性离散化方法将待挖掘数据分量离散化,增强数据边缘的敏感值;
3)二分图故障挖掘模型利用故障源与其它数据点之间的关联关系,通过逻辑分析实现所有关联点的故障挖掘。
一般情况下,串口通信传输中易出现的故障多为高维模式,相比于低维模式,其在人眼观察下很难被识别。基于此,本文利用SOM(Self Origanizing Maps自组织映射网络)聚类算法,将高维数据的拓扑分布映射在低维空间中,凭借人眼对低维模式的快速辨别能力来提高后续的故障挖掘效率[3]。在进行聚类之前,需要确定待挖掘数据项目的类别,但进行该步骤会影响聚类算法的整体效果。因此在面临大量高维数据时,本文建立一种聚簇分布特征图,预先确定待挖掘数据的类别和范围,降低故障数据挖掘的误判率[4]。
将训练完成的SOM输出结果构成一个完整的网络结构,根据数据节点的优先顺序进行排列[5,6]。假定SOM网络结构中共有m*n个数据节点,那么节点间Distance-Matrix(距离矩阵)ξ_mat的定义如下
(1)
式中,节点i和j二者之间的距离可用ξij进行描述,将二者的距离值ξij与一个随机的颜色范围实施一一对应映射。
映射结果通过非线性量化算法进行变量离散化,使介于正常与异常之间以及周围的变量敏感值都提高,进而增强故障特征的分辨率,具体操作步骤如下[7]。
1)首先,把待挖掘所有数据点大致分为三类:第一类为高端越限类,该类数据的数值越小越好;第二类为低端越限类,该类数据的数值越大越好;第三类则为双边越限类,该类数据的取值范围应选择较为适中的位置。根据上述分类情况,从所有数据点中挑选一个聚焦因子,取值范围为F∈[0,1][8]。
2)对于高端越限数据点,将正常和不正常变量值之间相互交叉的位置M看作中心点,并以数据点的最低位置0为起点,在[0,A]的条件范围内,将数据点离散化为2l+1份,其中,l表示数量值,最终离散化后的数据点为2l+1份{0,1,2,2l}。
3)对于低端越限数据点,依旧将异常和正常变量值的交叉位置M为集中点,以数据点的最高位置,作为边界参考值B的起点,在[0,B]的条件范围内,将数据点离散化为2l+1份[9]。
4)对于双边越限数据点,跟上述运用的两种方法大致相同,先把正常和不正常数据变量值的交叉看作中心点,随后再把不正常的数值放在交叉中心,形成两个焦点M1和M2。
经过离散化后所有数据点的等级都是一致的,都为单边向取值,并且均以0为最佳表示点。采用这种非线性离散化的方式,能提高数据边缘的敏感值,使待检测数据在整个挖掘空间中更好分辨,更易于观察,对后续挖掘具有一定的帮助,有利于提高整体的挖掘精度[10]。
通过式(1)映射规律得到提高敏感度值的串口数据,在灰度模式的前提条件下,按照距离从小至大,颜色由深至浅进行对应排列。至此,可取得一个和距离矩阵相同规模的(Color-Matrix)颜色矩阵ζ_mat[11,12],具体表达公式为
(2)
采用SOM网络绘制特征图,依照颜色矩阵的方式将所有节点进行上色,由此取得了聚簇分布特征图(如图1所示)。
图1 原始数据聚簇分布特征图
从图1可以看出,左半部分呈现的是经过颜色映射后的SOM神经网络,当距离范围越来越大时,颜色会变得越来越浅。其中,颜色偏浅的一组相邻节点会形成聚簇现象,由此颜色偏深的节点就自然组成了类边界。
在面对繁多的数据集时,利用该聚簇分布特征图,可以精准地确定待挖掘数据的类别数,多加尝试,不断地迭代分析,最后利用二分图故障模型描述串口通信传输故障挖掘问题,如下图2所示[13]。
图2 串口通信传输故障挖掘二分图模型
该模型以通信线路中的故障源点作为切入点,根据网络之间的关联关系,挖掘与故障原点相关的数据点,通过迭代计算得出待挖掘点的故障发生概率,实现精准、高效地挖掘。
在该二分图模型的基础之上,将包含故障数据的集合表示为Xn,其中,n表示故障数据量;用Hn代表实际观测到的关联故障数据集[14,15],假设串口通信中故障发生的概率性最大
(3)
式中,P表示概率,采用贝叶斯算法求解,可得
(4)
式中,P(Hn)表示常数值,可将式(4)化简为
(5)
设定向维度为K;向量为x,此时,故障源Ti与向量x之间的定向关系如下
(6)
其中
(7)
(8)
(9)
该问题的目标函数为
(10)
为了方便目标函数[16]的计算,将对数值表示为以下形式
(11)
式中,ln(1-PTi)的大小与未知数不存在关联,可通过同等项进行消除,假设
(12)
基于此,故障数据挖掘的目标函数最终可转换为
(13)
将变量离散后形成两个焦点M1和M2带入到转化结果中,设故障数据点为C,那么C点就为最佳取值点,取值范围为[0,D]。根据以上说明可得,大的数据点和小的数据点都存在异常,所以最佳的判定方法为在中心处进行折合,对合成后的数据点实施离散化处理[17],最终形成单边取值。
若数据点在[0,C]区域,采用第二类方法,将数据离散化,可得到2l+1份{0,1,2,2l}。若数据点落在[C,D]区域内,采用第一类方法进行变量离散化,同样得到2l+1份{0,1,2,2l}。
(14)
可以将串口通信传输中的关联故障挖掘问题转化为下列形式,便于挖掘管理
φi∈{0,1}i=1,…,K
(15)
式中,φi表示故障划分范围系数。通过该公式就可将所有故障数据挖掘的复杂问题全部转换为简单的范围规划问题,将计算得出的数据参数输入到划分范围内进行对比,如果在{0,1}范围内就为故障数据,由此实现串口通信传输故障数据挖掘。
为了验证文中提出的串口通信传输故障数据挖掘算法的有效性,将文本方法与基于深度学习故障数据挖掘算法、结合支持度和置信度故障数据挖掘方法进行对比分析,本实验在MATLAB仿真软件的支持下进行。
本次实验主要以SQL(Structured Query Language)大型网络数据库中的串口通信数据集作为测试对象。该数据库是Microsoft微软公司推出的关系连带型网络数据库系统,拥有信息定义、信息操纵以及信息管理等多类型功能,可扩展性及信息覆盖性较高。在数据库中挑选150个原始串口通信数据样本,其中存在3组不同故障的数据簇,三组数据簇内共包含45个样本,样本均值为15个。
将故障数据簇分为三个类型,对于三组不同结构分布的故障数据簇,如果存在与其特征相关联的子空间中,此时,特征就会服从正比高斯分布;如果存在与其特征没有关联的子空间中,特征就会服从均匀分布。根据该特点,划分对比挖掘范围,对比挖掘所需的时间,及在同等原始数据量下捕捉到的故障数据量。
为了准确判定本文故障挖掘方法的准确性,对比同等数据量条件下,三种方法划分的异常范围内包含的故障数据量,实验结果如下图3所示。
图3 三种方法故障特征量划分对比
图3中,黑色圆圈为故障数据特征,白色圆圈为正常数据特征。可以看出,相对于深度学习挖掘法以及结合支持度和置信度挖掘法,本文方法挖掘出的故障数据范围包含的故障数据更多。从挖掘比列分析,本文方法基本挖掘出所有的故障数据,另外两种方法挖掘效果过于保守,挖掘精准度有待提高,能够挖掘到的故障数据有限,整体表现较差,对于故障特征存在一定的判定误差。出现这种现象的主要原因就是,在进行初步挖掘时,没有对原始数据进行预处理,导致大量噪声及其它干扰数据涌入,影响算法精度。由此说明,本文方法具有一定的有效性,算法性能表现较强,实用性高。
三种方法在同等条件下进行故障挖掘所需的时间如表1所示。
表1 故障挖掘耗费时间对比/s
从表1中的数据可以看出,本文方法故障挖掘耗时是最低的,最低值为0.5s,最高值为2.0s。虽然随着数据挖掘样本数量的不断上升,挖掘耗时有所提升,但是并未出现大幅度的上涨。另外两种方法的故障挖掘耗时较大,时间成本过高,应用在实际挖掘中,不仅会增加硬件成本,还会降低挖掘效率,实用性及可行性不强。
本文在分析串联通信中故障数据特点的基础上,提出一种基于SOM聚类的串口通信传输故障数据挖掘算法,算法所需训练时间较短,挖掘模型逻辑清晰易实现。针对原始数据敏感性不高的问题,本文建立了一种聚类分布特征图,对原始数据进行了初步的划分后,并进行边界特征离散化,提高了数据的敏感性,增强后续故障挖掘准确率。仿真结果证明,本文方法的挖掘效率较高,并且能够对特征量进行准确划分,实用性和可靠性较强。