基于LSTM-XGBoost的智能电网入侵检测方法与流程

文档序号:24179786发布日期:2021-03-09 11:34阅读:162来源:国知局
基于LSTM-XGBoost的智能电网入侵检测方法与流程
基于lstm

xgboost的智能电网入侵检测方法
技术领域
1.本发明涉及网络安全领域,涉及一种基于深度学习和改进的xgboost相结合的智能电网入侵检测方法。


背景技术:

2.智能电网是以物理电网为基础,以高速双向通信网络为基础的一种新型智能电网。它将先进的信息技术、通信、计算机、测控技术与发电、配电、传输、用电等基础设施相结合。智能电网作为一个全自动的输电网,可以对每个用户和电网节点进行监控,保证从电厂到最终用户的整个输送过程中,信息和电能在所有节点之间的双向流动。智能电网实现了传统电网的更新,但也带来了新的安全问题。
3.随着智能电网的发展,其网络的复杂性和异构型给智能电网带来了技术挑战。入侵检测系统是一种广泛应用于网络安全的系统。通过对采集到的数据进行分析和模型检测,判断网络或主机是否被入侵,从而做出预警,保证网络系统的安全性、可靠性和完整性。
4.近年来,先进的机器学习和深度学习技术极大地提高了入侵检测性能,但是这些方法往往存在拟合不足或者过拟合问题。xgboost是一种新颖的分类方法,它不仅欠拟合和过拟合风险低,而且对缺失值有很大的容忍度,能够自动学习缺失值的处理方法。但是xgboost对参数很敏感,不合适的参数将会大大降低其性能,使得其在智能电网中难以采用。而传统的网格搜索调参方法效率低,需要大量的时间成本,随机搜索调参容易陷入局部最优的问题,难以找到全局最优。


技术实现要素:

5.为解决现有技术准确性低,时间成本高等问题,本发明提供了一种深度学习和改进的xgboost相结合的智能电网入侵检测方法。
6.为了达到上述目的,本发明通过以下技术方案实现:基于lstm

xgboost 的智能电网入侵检测方法,包括以下步骤:
7.1)对网络监测数据集进行预处理,把非数值的特征映射为数值型特征;
8.2)利用贝叶斯优化

xgboost算法对数据集进行预测,得到预测样本为攻击的概率;
9.3)通过lstm对数据集进行预测,得到预测样本为攻击的概率;
10.4)将步骤2)和步骤3)分别得到的预测结果进行加权融合,得到样本被预测为攻击的概率值;将概率值与阈值进行比较,得到电网入侵检测结果。
11.所述步骤1)具体为:
12.对数据集中的非数值型特征进行映射,转化为数值形式;把样本的结果转化为正常或攻击两种状态,并分别映射为0和1。
13.所述步骤2)具体为:
14.把经过预处理的数据集导入xgboost模型,通过贝叶斯优化方法对 xgboost模型
参数优化调整,输出最佳的参数组合,包括cart树数量、模型学习率和最大深度;
15.在参数最优的情况下,xgboost模型对待测试的样本进行预测,输出每个样本被预测为攻击的概率值;概率值大于或等于阈值,则输出攻击,否则输出正常。
16.所述xgboost模型的构建包括以下步骤:
17.根据目标函数构建cart树,进而构成xgboost模型;模型的输入为经预处理数据集中的样本,输出状态预测值和预测值p1;所述状态预测值为0或1,所述预测值p1为每个样本被预测为攻击的概率值;
18.其中,目标函数如下:
[0019][0020]
obj*为目标函数,gj、hj分别表示一阶梯度的和、二阶梯度的和,j为叶子节点序号;t为cart树的叶子节点的总数量,λ表示叶子权重惩罚正则项;
[0021][0022][0023][0024]
l表示损失函数,y
i
为经预处理的数据集中第i个样本的真实值,为第i 个样本经xgboost模型进行t次迭代后的状态预测值,n为样本数量。
[0025]
所述步骤3)中采用双向lstm对数据集进行预测,得到预测结果。
[0026]
所述双向lstm包括在输入层与输出层之间依次设有的向前层和后向层;输入层x
t
分别乘以权重w1、w4输入至后向层相应的lstm、前向层的相应的lstm,后向层相应的lstm、前向层的相应的lstm分别乘以权重w6、w5输入至相应的输出层其中,输入层x
t
用输入步骤1)中预处理后的数据;输出层为预测样本为攻击的概率值;
[0027]
在后向层中,当前lstm接收后一个lstm输出与权重w2的乘积作为输入;
[0028]
在前向层中,当前lstm接收前一个lstm输出与权重w3的乘积作为输入。
[0029]
所述步骤4)中通过加权的方法把步骤2)和步骤3)中得到的预测的概率值进行融合,得到组合模型的预测概率值;最后将预测的概率值同阈值进行比较,输出组合模型的预测结果:当最后的预测概率值大于或等于阈值时,预测结果为攻击;否则预测结果为正常。
[0030]
本发明具有以下有益效果及优点:
[0031]
1、本发明提出用贝叶斯方法优化xgboost参数,既避免了传统的网格搜索非常耗时的问题,又避免了随机搜索容易错过全局最优,陷入局部最优问题。
[0032]
2、把优化后的xgboost同lstm相结合,提高了模型预测的准确率。
[0033]
3、本发明提出的模型可用于智能电网的入侵检测,为维护网络系统的安全性和可靠性打下了基础。
附图说明
[0034]
图1是本发明方法的流程图;
[0035]
图2是本发明改进的xgboost环节的流程图;
[0036]
图3是本发明lstm算法的细胞结构图1;
[0037]
图4是本发明lstm算法的细胞结构图2;
[0038]
图5是本发明lstm算法的细胞结构图3;
[0039]
图6是本发明lstm算法的细胞结构图4;
[0040]
图7是本发明采用的双向lstm结构图。
具体实施方式
[0041]
下面结合附图对本发明做进一步详细的说明,以便本领域的技术人员更好地理解本发明。
[0042]
如图1所示,一种深度学习和改进的xgboost相结合的智能电网入侵检测方法,包括以下步骤:
[0043]
1)对nsl

kdd数据集进行预处理,把非数值的特征一一映射为数值型特征,使数据集更符合机器学习模型训练的格式;
[0044]
2)通过改进后的xgboost对nsl

kdd数据集进行训练、预测,得到预测样本为“攻击”的概率;
[0045]
3)通过lstm对nsl

kdd数据集进行训练、预测,得到预测样本为“攻击”的概率;
[0046]
4)将这两种方法得到的预测结果进行加权融合,得到样本被预测为“攻击”的概率值;
[0047]
5)以0.5为阈值,概率值大于等于0.5,则预测结果为“攻击”,小于0.5,则预测结果为“正常”。将得到的预测结果跟实际结果进行对比,得到一系列评价指标。
[0048]
所述步骤1)中,nsl

kdd数据集是kdd

cup99的改进版,消除了其中的冗余数据。该数据集的训练集有125973行,测试集有22544个行,每一行代表一个网络连接的样本实例。每个样本有43列,前面41列代表了网络连接的特征,其中,网络连接的特征大致可分为四类。第一类是tcp连接基本特征,共包括连接持续时间、协议类型目标主机的网络服务类型等9种特征;第二类是tcp连接的内容特征,共包括访问系统敏感文件和目录的次数、登录尝试失败的次数等 13种特征。第三种是基于时间的网络流量统计特征,共包括过去两秒内,与当前连接具有相同的目标主机的连接数、与当前连接具有相同服务的连接数等9种特征。第四种是基于主机的网络流量统计特征,共包括前100个连接中,与当前连接具有相同目标主机的连接数、与当前连接具有相同目标主机相同服务的连接数等10种特征。第42列为网络是否被攻击的结果。第43列是0

21之间的某个数值,表示的是早期的研究人员在研究的过程中采用了21种机器学习的算法,这 21个算法中正确分类该样本的次数,因此在做训练时需要将该列剔除。此外,特征2、3、4及结果均为非数值类型,为了使数据集适应机器学习模型,需要对其进行一一映射,转化为数值形式。其中,结果只分为:正常和攻击。“正常”映射为“0”;“攻击”映射为“1”。
[0049]
所述步骤2)中,贝叶斯优化

xgboost算法对网络入侵进行检测具体为:
[0050]
把处理后的数据用来训练xgboost模型,然后对xgboost模型用贝叶斯优化方法调
出最优参数组合,并输出最优参数情况下模型对网络入侵的检测结果及相关评价指标。详情参考图2。
[0051]
为了使xgboost模型效果达到最优,引入了xgboost算法的目标函数。 xgboost目标函数共包括三项,第一项是样本损失和,表示模型拟合训练数据的程度,其中,n表示样本的数量,y
i
为数据集中第i个样本的真实值,为xgboost的第i个样本进行t次迭代后的预测值。t表示有t棵cart树,每棵树相当于一个基分类器,从1棵树开始到t棵树共经过t次迭代。ω(f
t
)是正则项,表示模型的复杂程度,constant为常数项。模型对应的目标函数公式如下:
[0052][0053]
正则项包含两部分,其中,γ具有剪枝的作用,抑制节点的分裂,为叶子树惩罚正则项,或称l1正则的惩罚项,t表示叶子节点的数量。λ表示叶子权重惩罚正则项,或称l2正则的惩罚项,在计算分割点的过程中计算增益时可以起到平滑的作用,ω为叶子节点权重值。对应公式如下:
[0054][0055]
为了使目标函数便于理解和优化,可通过叠加的方式进行展开,相应公式如下:
[0056][0057]
泰勒公式二阶导可近似表示为:
[0058][0059]
对上述目标函数进行泰勒二级展开,得到:
[0060][0061]
其中为前t

1棵树的预测误差,为常数。去除常数项,并设:
[0062][0063][0064]
则上述目标函数可以转化为:
[0065][0066]
经过泰勒展开后的目标函数只与每个数据点在损失函数上的一阶导数和二阶导数有关。所以,可以在不选定损失函数具体形式的情况下,进行叶子分裂优化计算,极大程度上增加了xgboost的适用性。
[0067]
以第t棵树为例,要确定一颗cart树需要确定两部分,第一部分就是树的结构,这个结构将输入样本映射到一个确定的叶子节点上,记作:f
t
(x)。第二部分就是各个叶子节点的值,q(x)表示输出的叶子节点序号,w
q(x)
表示对应叶子节点序号的值。于是有:
[0068]
f
t
(x)=w
q(x)
[0069]
将上述公式代入目标函数可得到:
[0070][0071]
将ω(f
t
)带入上式得到:
[0072][0073]
因为对于xgboost来说,每一个数据点x
i
最终都会落在叶子节点上,而对落在同一叶子节点上的数据来说其输出值都是一样的,因此可以记作w
j
。(w
j
是需要求解的最优权重。)叶子节点的总数量为t。则目标函数可以进一步改写为:
[0074][0075]
假设每个叶子节点里面一阶梯度的和为g
j
,二阶梯度的和为h
j
,即:
[0076][0077][0078]
则上述目标函数可以转化为:
[0079][0080]
w
j
为一元二次函数,用目标函数对w
j
求导,可得到最优的w
j
为:
[0081][0082]
随后将节点权重带入目标函数,可得到最优目标函数的结果。如下:
[0083][0084]
目标函数是衡量cart树好坏的标准,值越小,代表这样的结构越好。通过目标函数
找出最佳切分点,从而构建cart树。
[0085]
然而,一个xgboost模型由多棵cart树构成,因此,为了能使整个xgboost 模型达到最优,需要设置合适数量的cart树,以及树的最大深度、整个过程的学习率等。因此本设计提出了通过贝叶斯调参的方法来对xgboost进行优化,选出最优的参数集合,从而使模型效果达到最好。
[0086]
贝叶斯调参的本质就是:建立目标函数模型f(x),并用它选择最优的参数集合x
*
。(注:f(x)是以模型绘制的roc曲线与两个坐标轴围成的面积,即auc 的值作为目标函数。)x是待调节参数,x
*
是使目标函数值最大、模型效果最好的参数集合,包括cart树的数量、学习率、最大深度等。
[0087]
x
*
=arg max f(x)
[0088]
通过使f(x)最大化找到最优的参数集合x
*
,再结合上述步骤中构建的 cart树,便可以构造出效果较好的xgboost模型。把步骤1)中预处理后的数据做训练并预测,可以得到一组预测值p1,即每个样本被预测为“攻击”的概率值。根据得到的p1与0.5进行比较,可得到模型的预测结果,即相应的p1小于0.5,取0,否则为1。
[0089]
所述步骤3)中,lstm是rnn的一种特殊类型,相比于普通的rnn,lstm 可解决梯度爆炸和消失问题。lstm在rnn的基础上增加了3个门的逻辑控制单元。
[0090]
如图3所示,图的上方,一条水平线直接从c
t
‑1指向c
t
,类似一条传送带,只有少量的线性交互,信息在上面流传会变得很容易,这条线即为细胞状态。当前时刻的状态c
t
是由上一次的单元状态c
t
‑1按元素乘以遗忘门f
t
,再用当前输入的单元状态按元素乘以输入门i
t
,再将两个积相加产生。
[0091][0092]
如图4所示,最左边的通路即为遗忘门,lstm用遗忘门决定信息的保留程度f
t
,w
f
是遗忘门的权重矩阵;[h
t
‑1,x
t
]表示将两个向量连接成一个更长的向量; b
f
是遗忘门的偏置项;σ是sigmoid函数。遗忘门会读取x
t
和h
t
‑1,生成一个0

1之间的数值给每个在细胞状态c
t
‑1。“1”表示“全部保留”,“0”表示“完全舍弃”。公式如下,其中h
t
‑1表示的是上一个细胞的输出,和x
t
(数据集中的样本) 一起作为当前细胞的输入。
[0093]
f
t
=σ(w
f
·
[h
t
‑1,x
t
]+b
f
)
[0094]
如图5所示,中间的通路是输入门,其中sigmoid层决定了要更新的信息,一个tanh层生成一个向量,即备选的用来更新内容,二者结合,把c
t
‑1更新为c
t
。i
t
为输入门的输出,是当前输入的单元状态,w
i
和w
c
为权重矩阵;b
i
和b
c
偏置项。公式如下:
[0095]
i
t
=σ(w
i
·
[h
t
‑1,x
t
]+b
i
)
[0096][0097]
如图6所示,最右边的通路即为输出门,基于整个的细胞状态,运行一个 sigmoid层来决定输出的内容。然后把细胞状态通过tanh进行处理(得到一个在
ꢀ‑
1到1之间的值)并将它和sigmoid门的输出相乘,最终输出我们确定输出的那部分。w
o
为输出门权重矩阵;b
o
为输出门偏置项;o
t
是输出门输出;h
t
是最终lstm 的输出。
[0098]
o
t
=σ(w
o
·
[h
t
‑1,x
t
]+b
o
)
[0099]
h
t
=o
t
*tanh(c
t
)
[0100]
本发明采用的是双向lstm,相当于复制了单层的lstm,关键点在于,双向lstm是两层并排,将样本序列按顺序输入第一层,即前向层。同时,将样本序列的反向序列输入第二层,即后向层。单层lstm的输出在前文已做详细阐述。设前向层的输出为h
t
,后向层的输出为h

t
,则有公式:
[0101]
h
t
=f(x
t
w4+h
t
‑1w1)
[0102]
h

t
=f(x
t
w3+h

t
‑1w2)
[0103]
最后把前向层和后向层相应时刻输出的结果进行结合,得到双向lstm最终的输出。(lstm最终的输出同xgboost一样,以预测样本为“攻击”的概率值 p2作为输出。)详情参考图7。
[0104][0105]
所述步骤4),即把步骤2)和步骤3)两个模块得到的样本预测为“攻击”的概率值p1和p2进行加权融合,得到最终的预测值p。公式如下:(是加权融合)
[0106][0107]
设置一个大小为0.5的阈值,若预测值大于等于0.5,则最终的预测结果输出“攻击”,否则,输出“正常”。通过把预测为“攻击”或“正常”的结果跟实际的结果做对比,得到得到tp、tn、fp、fn。其中tp(true positive)为真阳性,即实际和预测结果都为“正常”的样本数量;tn(true negative)为真阴性,即即网络实际为正常,却被模型预测为攻击的样本数量;fp(false positive) 为假阳性,即实际结果为“攻击”,却被模型预测为“正常”的样本数量;fn(false negative)为假阴性,即实际为结果为“正常”,却被模型预测为“攻击”的样本数量。由tp、tn、fp、fn得到包含准确率(accuracy)、精准率(precision)、召回率(recall)、f1score的评价指标。相关公式如下:
[0108][0109][0110][0111][0112]
综上,本实施例提供的一种深度学习和改进的xgboost相结合的智能电网入侵检测方法,其中数据预处理,解决了数据异常问题,有效的降低了训练过程中,数据异常带来的一系列问题;随后的贝叶斯优化xgboost,解决了传统的参数优化方法耗时和容易错过全局最优问题;最后把改进后的xgboost同深度学习模型lstm相结合,提高了模型预测的准确率。
[0113]
尽管本发明的内容在上述优选实例做了详细的介绍,但本发明的保护范围不限于此。对本领域的普通技术人员来讲,只要各种变化在所附的权利要求限定范围内,都是显而易见的。本发明的保护范围以权利要求书为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1