王青松,李 菲
(辽宁大学 信息学院,辽宁 沈阳 110036)
数据分析伴随着大数据时代的发展,Web用户的异常行为检测技术[1-3]是当前研究热点.近几年,面对大规模用户每天都会访问Web网页所产生的数据处理的需求,数据分析技术得以蓬勃发展.从大量数据中找到其背后隐藏的规律和模式,对异常数据的实时检测具有重要的实际应用意义[4].统计数据预测采用分布式处理、并行处理和网格计算等方法,结合相关的数据特征挖掘和聚类,实现数据预测[5].
早期人们通常采用端口扫描、报文特征字段匹配等方法对异常行为进行深入分析以获取特征,从而实现Web用户异常行为的检测[6].而人工智能技术的发展,机器学习技术更多地被用于从网络数据中自动计算异常行为模式、提取其特征,从而自动产生检测规则,大大降低了开发代价,而机器学习主要分为无监督学习和有监督学习.
传统的无监督机器学习算法处理的是无标记或者数据趋势模糊的情况下,这类算法不仅开销大而且训练出来的模型可读性差,准确度较低,复杂度高且不适合时间序列数据,对Web用户异常行为的检测准确率较低,例如期望最大化算法(Exceptation Maximization)等.
基于有监督的机器学习算法通过利用带标签的训练数据构建模型,来对未知数据进行预测,该类方法在模型可读性、鲁棒性等方面优于无监督学习的检测方法,但易出现过拟合或欠拟合,泛化能力较差的问题.而且对训练样本中标记数据都要检索一遍,关键特征提取率不高,增加了很多不必要的开销.例如Teodoro[7]等人研究出基于异常的网络入侵技术,提出基于知识、统计和机器学习的方法,但是他们的研究并没有提出一套最先进的机器学习方法.Wu和Banzhaf[8]等人研究计算智能方法及其在入侵检测中的应用,详细地介绍了人工神经网络、模糊系统、进化计算、人工免疫系统和群体智能等方法,只描述智能计算方法,不包括主流的机器学习和数据挖掘技术[9],例如决策树算法(Decision Tree algorithm)、朴素贝叶斯算法(Naive Bayesian algorithm,NB)等.Bing[10]等人研究基于图分析和支持向量机的企业网异常用户检测模型中所提取的特征杂乱,没有对特征的重要性进行区分.
综合现有的数据处理与数据挖掘的算法,将C4.5决策树模型与过滤特征选择Relief-F算法相结合,利用混淆矩阵的理念计算阈值并进行验证,提出一种新的Web用户异常行为检测算法F_C4.5算法.通过消除冗余特征、减少特征集的大小降低模型建立的复杂度,对于用户行为的分类效果更优,提高Web用户异常行为检测的效率和准确度.
在对训练样例数t维度为d的样本点进行回归时,可能存在d大于或者远远大于t的情况,在d中可能存在f个无用特征,若去除这些无用特征可能需要枚举所有可能产生的情况,使用交叉验证的方法对每一种情况计算其对应的错误率,根据得到的结果衡量应该消除的无用特征,这种方法对样本数据的训练和测试次数过多,浪费时间和空间资源.可以采用过滤特征选择(Filter feature selection)的方法处理样本数据,降低复杂度并且提高了算法的效率.
过滤特征选择方法通过对数据的常用属性(例如一致性、相关性、距离等)进行不同的度量来选择特征[11].其中最著名的方法是Kira和Rendell在1992年提出的Relief(Relevant Features),以及由Kononenko于1994年提出的上述算法的改进版Relief-F[12],这两种方法通过设计出一个“相关统计量”来度量某个特征对于学习任务的重要性.Relief-F算法[13-14]能处理多分类问题,解决了Relief算法在不完全、有噪声、多类别标记的数据集上遇到的问题.
Relief-F算法的“相关统计量”是一个向量,其每个分量分别对应一个初始特征.而子集中的每个特征对应的的相关统计分量的和决定其重要性.算法过程中需要选取一个合适的阈值ε,选择相关统计量分量比ε大的对应特征作为训练数据进行后期的模型构建.
算法步骤如下:
1)假定数据集D中的样本来自|y|个类别.对于示例xi若它属于第k类(k∈{1,2,…,|y|}),则算法先在第k类的样本中寻找xi的最近示例xi,nm并将其作为猜中近邻,然后在其他类中找到一个xi的最近示例将其作为猜错近邻,记为xi,l,nm(l=1,2,…,|y|;l≠k).
(1)
决策树算法相当于一个投影,是一种预测模型,通过分类给多个样本赋予不同标签,分类的过程用一棵树来表示,分叉后的过程就是划分特征的过程,将属性值映射到树的分叉路径上.
C4.5算法是最著名和最广泛使用的决策树算法之一,精度水平高,独立于要处理的数据量[15].在近几年的一项比较决策树和其他学习算法的研究表明,C4.5算法是一种追求更低误报率和更高速率的结合型算法.该算法的生成规则易于理解,使用信息增益来进行决策树的划分属性选择,充分考虑了关键特征对分类的影响,对于离散型和连续型属性变量都有较好的处理能力,产生的决策树泛化能力强,预测未见数据示例的结果较准确.
算法步骤:
计算整个数据集的信息熵Info(D)和各个属性的信息熵Infoa(D),其中Pi:当前样本集合D中第i类样本所占比例(i=1,2,…,m),Dv:第v个分支结点包含D中所有在属性a上取值为av的样本(假设离散属性a有v个可能的取值{a1,a2,…,av}).
(2)
(3)
计算分裂信息H(V),通过信息增益Gain(D,a)来计算,一般信息增益越大,代表使用属性a来进行划分所获得的“纯度提升”越大.其中a:样本集中的某一个特征,V:当前被计算熵特征取值为v的样本集.
Gain(D,a)=Info(D)-Infoa(D)
(4)
(5)
计算信息增益率Gain_ratio(D,a),选择信息增益率最高的特征来选择最优划分属性,构建分支.其中:Ⅳ(a)为考虑分裂信息的度量,属性a的取值数目越多(即V越大),则Ⅳ(a)的值越大.
(6)
(7)
(4)计算去除已经被使用的特征,按照步骤(1)和(2)、(3)重复计算未被选择的特征,直到数据集不能或不用被再次划分.
Web用户异常行为检测过程包括对数据模型进行训练和对用户行为进行检测.在训练阶段,系统首先定义并收集大量的正常行为数据,例如,应用程序一段时间对外的访问量、主机CPU利用率、程序占用系统内存大小等[16].再利用过滤特征选择Relief-F算法对这些数据进行预处理,然后根据Web用户正常行为数据和Web用户异常行为数据建立C4.5决策树模型.在检测阶段,若未知行为数据实例在检测模型中的测试距离与Web用户正常行为数据具有更近的距离,则该数据为Web用户正常行为数据,否则该数据为Web用户异常行为数据.
描述一个样本可以通过很多特征,对于Web日志记录的数据中,有些特征是对于检测Web用户异常行为的有价值的“相关特征”,有些则是几乎无价值“无关特征”.对训练样本进行必要的预处理可以减轻计算过程的复杂度,有助于提高计算额准确性.C4.5决策树算法虽然能做到处理连续属性变量的训练样本数据集,但是需对训练集反复进行排序及按一定规则顺序扫描,导致算法效率低下[17],而对数据集进行过滤特征选择处理后改善了由于特征变量过多决策数构造过程所造成复杂度过高的情况.在Web用户异常行为检测过程中,F_C4.5算法的实现过程分为如下两个阶段:
1)第一个阶段评估原始特征集与类的相关性,从给定的特征集合中选择出相关特征子集,处理划分训练样本子集,删除相关度较低的特征.在给定数据集的所有属性中,通过过滤特征选择Relief-F算法对数据集进行第一步预处理:定义两个类别标签,Web用户正常行为类别标签和Web用户异常类别标签.更新每个特征的权重W(A),公式如下:
(8)
基于从最近的数据构建好每个被检测数据的估计值,使用混淆矩阵的思想选取阈值ε,混淆矩阵的各个参数设置如表1所示,使用Precision/Recall计算F1Score,找到阈值ε使得F1Score的值最高.
(9)
(10)
(11)
其中TP为正确预测正常样本(true positives),TN为正确预测异常样本(true negatives),TP和TN得到的都是正确结果.FP为错误预测正常样本(false positives),模型预测为正常值实际样本为异常值;FN为错误预测异常样本(false negatives),实际样本为正常值但模型预测为异常值.
2)第二个阶段将两个类别标签中保留的相关特征传递给C4.5算法,通过Web用户行为的训练数据集进行递归分析构建决策树模型,使用Web用户行为测试数据集对构建好的决策树模型进行检测.
当有新的Web用户异常行为发生时,使用F_C4.5算法进行检测.Web用户异常行为检测算法总体实现过程描述如下:
算法:F_C4.5算法
输入:训练数据集D
样本抽样次数m
特征权重阈值δ
最近邻样本个数k
输出:以root为结点的决策树
1.置0所有特征权重,T为空集
2.fori=1 tomdo
(1)从D中随机选择一个样本R;
(2)从R的同属性样本集中找到样本R的最近邻Hj(j=1,2,…,k),找到与R不同属性集的最近邻Mj(C),同为k个;
3.forA=1 toNAll feature updateW(A)
4.筛选出比阈值ε大的特征集
5.产生训练集D*={(x1,y1),(x2,y2),…,(xm,ym)},
属性集A={a1,a2,…,ad} then
6.计算函数TreeGenerate(D*,A)
7.得到root结点;
8.ifD*中所有样本都属于C类属性then
9.C类叶节点更新为root;return
10.end if
11.ifD*中样本在A上取值相同orA为空集then
12.root更新为叶节点,将对应类属性更新为D*中有着最多样本数的类;return
13.end if
14.从A中选择Gain_ratio(D*,a)最大的ai作为最优划分属性
18.分支结点更新为叶结点,将对应类属性更新为D*中样本最多的类;return
19.else
21. end if
22.end for
实验在Windows10系统下,使用Python语言3.5版本,PyCharm工具运行代码实现本文的Web用户异常行为检测.在UNSW-NB 15数据集[18]和KDD CUP1999数据集[19]上实现算法的性能评估任务.UNSW-NB 15数据集的原始网络数据包是由澳大利亚网络安全中心(ACCS)网络范围实验室的IXIA Perfect Storm工具创建的,用于生成真实的现代正常活动和合成的现代攻击行为的混合.TCPDump工具用于捕获100 GB的原始流量(例如,Pcap文件).该数据集有九种类型的攻击,即模糊攻击、分析攻击、后门攻击、DoS攻击、利用攻击、通用攻击、侦察攻击、外壳代码攻击和蠕虫攻击.使用Argus、bros-ids工具,开发了12种算法来生成总共49个带有类标签的特性.KDD CUP1999数据集用于1999年举行的KDD CUP竞赛采用的数据集,虽然年代久远,但KDD99数据集是网络异常检测领域的基准.
将UNSW-NB 15数据集中的一个分区配置为训练集和测试集,两个子集都包含Web用户正常行为数据集和Web用户异常行为数据集.训练集为UNSW_NB15_training-set.csv,记录数为175 341条;测试集为UNSW_NB15_test-set.csv,记录数为82 332条.通过将网络流的标识符与相应的条件标签相结合可以跟踪Web用户异常行为示例,条件标签描述前面提到的将记录分为“异常”或“正常”的分类技术的结果.
为了评估Web用户异常行为检测算法的优劣,本文采用混淆矩阵思想进行评价.混淆矩阵是模式识别领域中一种常用的表达形式,它描绘样本数据的真实属性与识别结果类型之间的关系,是评价分类器性能的一种常用方法[20].采用2.2中表1混淆矩阵的定义,创建两个指标:准确率OSR和误报率FAR,使用这两个指标来评估分类器.
(12)
(13)
将F_C4.5算法、C4.5算法、朴素贝叶斯算法(NB)和关联规则挖掘分类算法(Association rule mining method,ARM)分别用于Web用户异常行为检测中,基于四种不同的模型在UNSW-NB 15数据集训练得到的数据结果如表2所示,用户行为特征分类结果如表3和图1所示.
表2 混淆矩阵数据
表3 算法分类器性能对比
图1 UNSW-NB 15数据集中评价指标的对比
表4 测试数据集
表5 算法预测性能对比
实验结果对比可以看出,将决策树算法用于Web用户异常行为检测中准确率提高并且误报率得到了有效降低.与朴素贝叶斯算法(NB)和关联规则挖掘分类算法(ARM)相比,决策树C4.5算法的准确率达到93.227%,误报率则是6.773%,较适用于Web用户异常行为检测.而本文的F_C4.5算法在C4.5决策树算法基础上先将数据集进行特征过滤,消除一部分无用数据后再进行决策树模型构建,一方面充分利用了决策树的优势,用户行为分类效果更优;另一方面数据集的精确度提高,构建决策树的复杂度更低.如表3数据所示,准确率达到94.038%,误报率降低到5.962%,从两个评价指标来看,将F_C4.5算法用于Web用户异常行为检测达到了更好的效果.
为了进一步验证本文算法的可靠性,使用KDD CUP1999入侵数据集中的测试数据集corrected.gz进行第二轮测试,实验将测试集中的Web用户异常特征分为U2R、DoS、PROBING、R2L,这四类在检测中都归为Web用户异常行为检测数据集.测试数据集如表4所示.
用测试集1和测试集2分别对构建好的C4.5模型和F_C4.5模型进行检测.实验结果显示,F_C4.5算法的Web用户异常行为检测和Web用户异常行为检测的准确率都高于C4.5算法,误报率低于C4.5算法,由表5的实验数据进一步证明,F_C4.5算法的在Web用户异常行为的检测性能优于C4.5算法.
本文在Web用户异常行为检测过程中,综合考虑了复杂度过高对特征提取的影响,将过滤特征选择的思想和混淆矩阵的理念与C4.5决策树算法结合提出一个新的算法F_C4.5算法.过滤特征选择利用Relief-F算法,在选择阈值上通过混淆矩阵的理念进行计算,得出优化特征子集的搜索范围,从而降低决策树构架过程中的复杂度.实验表明在运行性能方面,F_C4.5算法有效降低原始特征集的维数,有效摒除了一部分无用数据,从而减少了训练和测试时间的消耗,复杂度降低,对于Web用户异常行为检测来说该算法取得了很好的效果,具有更高的分类性能.