|
发布时间: 2020-08-30 |
|
|
|
收稿日期: 2020-03-18
基金项目: 国家自然科学基金(41672114)
中图法分类号: TP312
文献标识码: A
文章编号: 2096-8299(2020)04-0386-05
|
摘要
针对K-means异常检测算法检测性能低的问题,提出了一种结合信息熵与改进K-means算法的异常检测算法。该算法均匀地选出密度大于数据集平均密度的数据对象作为初始聚类中心,避免了初始中心的随机选择。在此基础上,引入了信息熵确定属性权重的方法来计算簇中数据点与该簇聚类中心的加权欧氏距离,通过对比簇中数据点的加权欧氏距离与该簇中所有数据点的平均加权欧氏距离来进行异常检测。实验表明,改进算法具有更高的检测率和更低的误检率,应用于电力负荷数据时检测率达到了90.5%,能够有效地检测出异常的负荷数据。
关键词
信息熵; K均值; 异常检测
Abstract
To solve the problem of low detection performance of the K-means anomaly detection method, an anomaly detection algorithm combining information entropy and improved K-means is proposed.The algorithm uniformly chooses the data object whose density is greater than the average density of the data set as the initial clustering center, avoiding the random selection of the initial center.Besides, the weighted Euclidean distance between the data point and the cluster center in the cluster is calculated according to the attribute weight based on the information entropy.Anomaly detection is performed by comparing the weighted Euclidean distance of the data point with the average weighted Euclidean distance of all data points in the cluster.Experiments show that the improved algorithm has higher detection rate and lower false detection rate.When the algorithm is applied to power load data, the detection rate reaches 90.5%.The abnormal power load data can be effectively detected.
Key words
information entropy; K-means; anomaly detection
随着电力系统的信息化程度不断提高, 电网的数据规模飞速增长[1]。如何对海量的电网数据进行高效分析, 快速准确地检测出异常的电力数据, 是电网安全有效运行的重要保证。
异常检测可以发现数据集中与一般数据有差异的数据对象, 即一些与众不同的数据[2]。在电力领域中, 异常检测可以作为数据研究的基础, 如检测出异常的电力负荷数据能有效提高负荷数据的质量, 对后续进行负荷预测及合理规划电网有着重要的作用[3-4]。异常检测也可以直接用于数据分析, 如异常用电检测和设备故障检测等。
异常检测技术主要可以分为基于监督、半监督和无监督3种类型。基于监督的异常检测方法的训练集由带标签的正常和异常数据构成, 主要有概率统计方法[5]、神经网络方法[6]等; 基于半监督的异常检测方法[7]能够从大量无标签的数据及部分有标签的数据中挖掘出异常数据的信息; 基于无监督的异常检测方法可以直接从无标签的数据集中检测出异常数据, 主要有基于K-means算法的异常检测[8]、基于AP聚类的异常检测[9]和基于局部离群因子的异常检测[10]等。基于监督的异常检测方法需要提前得到训练样本的标签信息, 一般可通过人工标记来获得足够的训练样本, 成本及代价较高; 而电力负荷数据集中大多数为无标签的数据, 采用无监督的异常检测方法具有代价小、简单、高效等优点。
近年来, 研究者们提出了很多针对异常检测的相关方法。文献[11]通过划定时间窗口来提取相关特征, 并运用核密度估计算法建模, 实现了在无标签的海量数据中识别异常数据。文献[12]基于最小生成树提出了一种新的距离度量方法, 能够比欧氏距离更好地进行样本间相似性度量, 并通过捕获数据点或簇之间的相对连通性来进行异常数据的检测。文献[13]提出了一种异常检测模型, 包含了特征提取、主成分分析、网格处理、局部离群因子计算等方法, 可用于检测电力用户异常的用电模式。
K-means算法作为一种无监督聚类算法, 方法简单且易于实现, 可以广泛应用于异常检测且检测效果良好[14]。但是存在以下两个问题:一是算法随机选择初始中心, 易使结果陷入局部最优且初始中心可能包含异常数据点, 导致聚类效果差且影响最终的异常检测率; 二是在计算样本间的相似性时采用各属性无差别的欧氏距离来进行度量, 没有考虑数据的属性权重, 使得计算的样本间相似性不准确[15]。
针对上述问题, 本文结合信息熵与改进的K-means算法, 提出了一种用于电力负荷数据的异常检测算法。首先, 通过信息熵确定属性权重, 在计算欧氏距离时引入属性权重来度量样本间的相似性; 其次, 计算每个样本的密度及数据集的平均密度, 在样本密度大于平均密度的数据对象中根据密度及距离依次选出
1 Kmeans算法及属性权重的计算
1.1 Kmeans算法
K-means算法的主要思想是基于欧氏距离来计算样本间相似性, 并根据样本间的相似程度将其划入所属的簇。传统K-means算法流程如下。
输入:样本集
输出:簇
步骤1 从
步骤2 计算
步骤3 根据簇中包含的样本, 重新形成每个簇的中心点。
步骤4 重复步骤2和步骤3直到聚类中心不变, 算法结束。
1.2 属性权重的计算
K-means算法在计算时并未考虑数据的属性权重对聚类的影响, 将会导致算法的聚类结果不准确。信息熵是一种计算属性权重的经典算法, 可以用来计算属性的离散程度。对于某项指标, 其熵值越小, 则该指标的离散程度越大且具有更大的信息量。因此, 对属性而言, 熵值越小时该属性对聚类的影响越大。将信息熵应用于K-means算法时, 可根据各属性的离散程度计算其权重, 并通过计算加权欧氏距离来提高聚类效果和异常检测率。
信息熵计算属性权重的算法流程如下。
步骤1 假设数据集
$ \boldsymbol{X}=\left[\begin{array}{cccc} x_{11} & x_{12} & \cdots & x_{1 m} \\ x_{21} & x_{22} & \cdots & x_{2 m} \\ \vdots & \vdots & \cdots & \vdots \\ x_{n 1} & x_{n 2} & \cdots & x_{n m} \end{array}\right] $ |
步骤2 为了消除量纲对聚类结果的影响, 对数据进行归一化处理, 公式为
$ x_{i j}=\frac{x_{i j}-\min \left(x_{j}\right)}{\max \left(x_{j}\right)-\min \left(x_{j}\right)} $ | (1) |
式中:
步骤3 计算第
$ {P_{ij}} = \frac{{{x_{ij}}}}{{\sum\limits_{i = 1}^n {{x_{ij}}} }} $ | (2) |
步骤4 计算第
$ E_{j}=-\frac{1}{\ln n} \sum\limits_{i=1}^{n} P_{i j} \ln P_{i j} $ | (3) |
步骤5 计算第
$ q_{j}=1-E_{j} $ | (4) |
步骤6 计算第
$ {w_j} = \frac{{{q_j}}}{{\sum\limits_{j = 1}^m {{q_j}} }} $ | (5) |
其中, 0≤
计算得到各属性的权重后, 给出数据对象
$ \operatorname{dist}\left(x_{a}, x_{b}\right)=\sqrt{\sum\limits_{j=1}^{m} w_{j}\left(x_{a j}-x_{b j}\right)^{2}} $ | (6) |
式中:
2 异常检测算法
2.1 Kmeans算法初始中心的选择
需要进行异常检测的数据集一般包含正常和异常两种数据。由于传统K-means算法的初始聚类中心是随机选出的, 算法有可能将异常点选作初始中心, 从而影响聚类结果。异常数据一般具有以下特征:与正常数据相比, 异常数据所占比例较小, 数据集中的大多数数据都为正常数据; 异常数据的密度较小, 分布在稀疏的区域, 比如在进行异常用电检测或计算机监控时, 数据集中的大多数数据为正常数据, 而异常数据大多处于正常数据所聚集的簇的边缘或者簇与簇之间的区域。根据异常数据的特点, 可以选择密度大于数据集平均密度的数据点作为初始中心, 使得初始中心不含异常点。
K-means算法的聚类结果和聚类效率与初始中心有直接的关联。算法的初始中心越接近实际簇中心则聚类效率越高, 而随机的选择初始中心则导致了聚类结果不够可靠。
初始聚类中心的选择算法如下。
输入:样本集
输出:初始中心
步骤1 计算
$ D\left( {{x_j}} \right) = \frac{1}{{\sum\limits_{{x_i} \in {G_t}\left( {{x_j}} \right)} {{\mathop{\rm dist}\nolimits} } \left( {{x_i}, {x_j}} \right)}} $ | (7) |
式中:
步骤2 计算所有数据对象的平均密度
$ D=\frac{1}{n} \sum\limits_{j=1}^{n} D\left(x_{j}\right) $ | (8) |
步骤3 在
$ \begin{array}{c} \max \left\{\min \left(\operatorname{dist}\left(x_{j}, c_{1}\right), \operatorname{dist}\left(x_{j}, c_{2}\right), \cdots, \right.\right. \\ \left.\left.\operatorname{dist}\left(x_{j}, c_{i-1}\right)\right)\right\} \end{array} $ | (9) |
由上述算法过程可知, 实际的簇中心一般处于密度较大的区域且相互间具有一定的距离, 改进算法在密度大于平均密度的数据点中均匀地选择初始聚类中心, 满足了密度较大和保持距离的要求。另外, 改进算法有效避免了将异常点作为初始中心的情况, 使算法不会从开始就陷入误差, 提高了聚类效率。
2.2 基于信息熵与改进Kmeans算法的异常检测算法
本文根据异常数据的特征和分布模式提出了一种异常检测算法。该算法在聚类迭代时通过对比数据点到所属簇中心的加权欧氏距离与该簇中所有数据点到簇中心的平均加权欧氏距离来检测异常。在异常检测过程中采用加权欧氏距离, 考虑了属性权重对异常检测计算的影响, 使异常检测结果更加准确。
基于信息熵与改进K-means算法的异常检测算法如下。
输入:样本集
输出:簇
步骤1 设数据集中每个数据对象的初始异常度为
步骤2 根据初始聚类中心的选择算法选择
步骤3 计算数据对象
步骤4 在
$ \operatorname{dist}\left(x_{j}, c_{i}\right)>\frac{1}{\left|P_{i}\right|} \sum\limits_{x \in P_{i}} \operatorname{dist}\left(x, c_{i}\right) $ | (10) |
式中:|
步骤5 重新生成每个簇的中心点
$ c_{i}^{\prime}=\frac{1}{\left|P_{i}\right|} \sum\limits_{x \in P_{i}} x $ | (11) |
步骤6 若
步骤7 若数据对象
步骤8 聚类算法结束, 输出
由于数据对象的异常度是通过计算每次迭代时该数据对象与所属簇中心的加权欧氏距离来确定的, 因此算法选择的初始中心越接近实际的簇类中心, 异常检测的性能越好。当初始中心含异常点时会严重影响异常检测的准确率, 而改进算法选择的初始中心不含异常点, 有效避免了上述问题。最后, 在异常计算中引入属性权重, 考虑了各个属性对异常检测的作用。
3 实验分析
实验数据采用UCI机器学习数据库的Parkinson Disease Spiral Drawings Using Digitized Graphics Tablet数据集[17-18](以下简称为“帕金森数据集”), 以及某电厂一个月的电力负荷数据。将检测率和误检率作为异常检测性能的评价指标。
检测率(Detection Rate, DR)和误检率(False Alarm, FA)的定义如下[19]
$ {{\rm{DR}} = \frac{{{\rm{TP}}}}{{{\rm{FN}} + {\rm{TP}}}}} $ | (12) |
$ {{\rm{FA}} = \frac{{{\rm{FP}}}}{{{\rm{TN}} + {\rm{FP}}}}} $ | (13) |
其中:
帕金森数据集包含静态螺旋、动态螺旋和定点稳定性3种测试。算法在每种测试中随机选择1 000条健康样本与100条患者样本作为数据集, 分别对3种测试类型进行计算, 并将患者样本当做异常数据来验证异常检测的效果。实验对比了改进算法与传统K-means算法、MinMax K-means算法的异常检测性能[20-21], 结果如表 1所示。其中, 对比算法的数据结果为两种算法分别计算100次后的平均值[22]。
表 1
3种算法在帕金森数据集中的实验结果对比
测试类型 | K-means算法 | MinMax K-means算法 | 改进算法 | |||||
检测率 | 误检率 | 检测率 | 误检率 | 检测率 | 误检率 | |||
静态螺旋 | 68.6 | 16.7 | 69.4 | 16.5 | 72.0 | 13.4 | ||
动态螺旋 | 62.5 | 19.2 | 64.8 | 18.0 | 78.0 | 17.4 | ||
定点稳定性 | 72.6 | 20.0 | 75.3 | 19.1 | 82.0 | 5.6 |
对于电力负荷数据集, 通过在其中随机添加一定比例的异常数据来对比3种算法的异常检测性能, 结果如表 2所示。
表 2
3种算法在电力负荷数据集中的实验结果对比
算法 | 检测率 | 误检率 |
K-means算法 | 77.5 | 18.1 |
MinMax K-means算法 | 80.2 | 17.3 |
改进算法 | 90.5 | 15.6 |
实验结果表明, 与K-means算法和MinMax K-means算法相比, 改进算法的检测率更高且误检率更低。究其原因如下:首先, 改进算法选择了更优的初始中心, 不同的初始中心会导致在每次迭代时生成不同的簇类中心, 而在迭代过程中数据对象的异常度计算与其所属的簇中心相关; 其次, 初始中心含有异常点, 会使算法从一开始就陷入偏差, 影响数据对象异常度的计算, 进而影响最终的检测率和误检率, 而改进算法有效避免了这种情况; 最后, 改进算法引入了属性权重的概念, 根据各属性影响程度的不同, 其在计算时的占比也不同, 使得异常计算的结果更加准确, 从而提高了异常检测的性能。
4 结语
本文根据异常数据的特征和分布情况, 结合信息熵与改进的K-means算法, 提出了一种适用于电力负荷数据的异常检测算法。算法在选择初始聚类中心时有效避免了异常点并使得初始聚类中心均匀分布, 聚类的效果更优。在此基础上, 算法引入了属性权重和加权欧氏距离来计算数据点的异常度。实验证明, 相较于其他对比算法, 本文提出的改进算法有着更优的异常检测性能, 能够有效检测出异常的电力负荷数据, 为实现高精度的负荷预测提供了重要保障。
参考文献
-
[1]韩博闻. 基于Apriori关联算法的配电网运行大数据关联分析模型[J]. 上海电力学院学报, 2018, 34(2): 163-168.
-
[2]HE Y F, PENG Y, WANG S J, et al. A structured sparse subspace learning algorithm for anomaly detection in UAV flight data[J]. IEEE Transactions on Instrumentation and Measurement, 2017, 67(1): 90-100.
-
[3]李鹏辉, 崔承刚, 杨宁, 等. 基于ARIMA-LSTM组合模型的楼宇短期负荷预测方法研究[J]. 上海电力学院学报, 2019, 35(6): 573-579.
-
[4]李婧, 田龙威, 王艳青. 基于GA-RBF神经网络的电力系统短期负荷预测[J]. 上海电力学院学报, 2019, 35(3): 205-210.
-
[5]卫薇, 龙玉江, 钟掖. 基于概率统计模型的电力IT监控对象特征异常检测[J]. 山东农业大学学报(自然科学版), 2019, 50(4): 612-618.
-
[6]段茵, 陈恺煊, 刘昕, 等. 基于BP神经网络的纸张缺陷检测与识别研究[J]. 西安理工大学学报, 2018, 34(2): 235-239.
-
[7]刘亚丽, 孟令愚, 丁云峰. 电网工控系统流量异常检测的应用与算法改进[J]. 计算机系统应用, 2018, 27(3): 173-178.
-
[8]蒋华, 季丰, 王慧娇, 等. 改进Kmeans算法的海洋数据异常检测[J]. 计算机工程与设计, 2018, 39(10): 140-144.
-
[9]付迎丁, 兰巨龙. 基于核自适应的近邻传播聚类算法[J]. 计算机应用研究, 2012, 29(5): 1644-1650.
-
[10]张若雪. 自动识别异常波动:机器学习在金融市场的一个应用[J]. 上海金融, 2018(11): 26-30.
-
[11]李海斌, 李琦, 汤汝鸣, 等. 一种无监督的数据库用户行为异常检测方法[J]. 小型微型计算机系统, 2018, 39(11): 114-122.
-
[12]IMTIAZ A, ALDO D, YU D. Unsupervised anomaly detection based on minimum spanning tree approximated distance measures and its application to hydropower turbines[J]. IEEE Transactions on Automation Science and Engineering, 2019, 16(2): 654-667. DOI:10.1109/TASE.2018.2848198
-
[13]庄池杰, 张斌, 胡军, 等. 基于无监督学习的电力用户异常用电模式检测[J]. 中国电机工程学报, 2016, 36(2): 379-387.
-
[14]贾凡, 严妍, 张家琪. 基于K-means聚类特征消减的网络异常检测[J]. 清华大学学报(自然科学版), 2018, 58(2): 137-142.
-
[15]樊蓉, 李娜. 基于特征选择的K-means聚类异常检测方法[J]. 网络安全技术与应用, 2018(4): 25-26.
-
[16]张丹丹, 游子毅, 郑建, 等. 基于改进的局部异常因子检测的优化聚类算法[J]. 微电子学与计算机, 2019, 36(11): 43-48.
-
[17]ISENKUL M E, SAKAR B E, KURSUN O, et al.Improved spiral test using digitized graphics tablet for monitoring Parkinson's disease[C]//The 2nd International Conference on e-Health and Telemedicine.Istanbul, Turkey, 2014: 171-175.
-
[18]SAKAR B E, ISENKUL M E, SAKAR C O, et al. Collection and analysis of a parkinson speech dataset with multiple types of sound recordings[J]. IEEE Journal of Biomedical and Health Informatics, 2013, 17(4): 828-834. DOI:10.1109/JBHI.2013.2245674
-
[19]邱雪松, 张珣, 宋彦斌, 等. 基于熵和线性关系的两级流量异常检测方法[J]. 北京邮电大学学报, 2018, 41(4): 56-62.
-
[20]左进, 陈泽茂. 基于改进K均值聚类的异常检测算法[J]. 计算机科学, 2016(8): 258-261.
-
[21]蒋华, 武尧, 王鑫, 等. 改进K均值聚类的海洋数据异常检测算法研究[J]. 计算机科学, 2019(7): 211-216.
-
[22]付卫红, 李丹. 基于滤波器阶数估计的卷积盲分离算法[J]. 华中科技大学学报(自然科学版), 2018, 46(6): 116-121.