基于改进聚类分析的网络流量异常检测方法
论文摘要
针对传统基于聚类分析的网络流量异常检测方法准确性较低的问题,提出了一种基于改进 k-means
聚类的流量异常检测方法。
-
通过对各类流量特征数据的预处理,使 k-means 算法能适用于离散型数据检测
-
进而给出一种基于数值分布分析法的高维数据特征筛选方法,有效解决了维数过高导致的距离失效问题。
-
并运用二分法优化 K 个聚簇的划分,减少了初始聚类中心选择对 k-means 算法结果的影响,进一步提高了算法的检测率。
最后通过仿真实验验证了所提出算法的有效性。
论文解决的问题
解决了维数过高导致的距离失效问题。
直接使用k-means会遇到的问题和本文的解决方法:
- 只能处理连续型数据:数据预处理
- 对初始聚类中心的选择过于敏感:使用二分k-means
- 当特征数量过多时,空间中的点会变得稀疏,从而使距离失效:特征降维
1.网络流量特征数据的预处理
解决第一个问题。
-
网络流量数据
(1)无序离散型特征:特征协议、连接状态、目标主机的网络服务类型等
(2)有序离散型特征:访问系统敏感文件的次数,过去两秒内与当前连接有相同目标主机的连接数等
(3){0,1}型特征:是否登陆成功、是否为guest用户等
(4)有序连续性特征:如在固定时间内,与当前连接在某特征处取值相同的连接数占总连接数的百分比等。对于不同类型的特征类型,应采用不同的数据预处理和距离度量方法。
-
处理方法
(1)有序离散型和有序连续型特征:
其实也可以用各种归一化方法处理。
(2)无序离散型:
文章中提到用整数数字代表特征的不同数值;我觉得这样可能不太好,因为用整数数字可能会让机器产生优先度不同的概念,比如对协议而言,用1表示TCP,用2表示UDP,那么这样让机器认为UDP比TCP更重要。
由于文章是改进k-means,后面有对无序离散型距离的计算方法,所以直接用整数数字代表特征的不同数值也没问题。
有更好的方法:独热编码等
(3){0,1}型变量:不处理
2.网络流量特征优化选择
解决第三个问题。
计算不同数据在某特征处取值的均方差,并对其进行归一化处理,得到该特征的权重。计算公式如下:
直观上很好理解:其实就是选择了一个特征,该特征的均方差比较高,因此该特征在分布上不集中,所以对区分数据属于哪种类型的流量(正常或异常)更有帮助。(因为数据很集中的话证明大部分数据都等于同一个值,这样就没有区分能力了)。
然后选择权重较大的特征进行下一步计算,并在数据记录距离度量中带入特征权重进行计算。进一步提高聚类检测结果的准确性。
3.网络流量数据记录的距离度量
-
对于{0,1}特征,有序离散型特征和有序连续型特征
的距离计算:
-
对于无序离散型特征:
-
所以:
4.基于二分法的 k-means 聚类检测
解决第二个问题。
可参考这个文章:二分k-means
总结
- 对不同的特征数据要进行不同的预处理分析。
- 用计算特征权重的方式降维。