一、引言
亚里士多德说过“离群而居者不为野兽即是神明”,离群反映了自然界中事物分布的一种状态。随着数据挖掘技术的快速发展,人们在关注数据整体趋势的同时,开始越来越关注那些明显偏离数据整体趋势的离群数据点,因为这些数据点往往蕴含着更加重要的信息。离群点挖掘的目的是有效的识别出数据集中的异常数据,并且挖掘出数据集中有意义的潜在信息。
二、离群点检测的应用场景
在统计学和机器学习研究中,离群值研究的应用分为两大场景,一是在数据预处理环节进行异常值检测并进行数据清洗,二是直接将离群点检测的结果作为关注的目标对象,并应用于相应场景。
(1)离群点检测在数据清洗中的应用
数据质量是决定数据分析结果好坏的重要因素。在数据收集过程中因为采样误差、记录误差、计算错误等人为因素造成异常值发生的情况下,分析人员往往不希望数据集中出现这类离群点,它们会影响模型的拟合精度,甚至使模型结果得到一些虚假的信息。因此在进行统计分析和统计建模时,首先要进行数据清洗,对异常值进行检测,并进行替换或删除等操作,从而保证得到一个无噪音的数据集。
(2)离群点检测在对象识别中的应用
当离群值是真实存在的时候,数据分析人员会做相应的离群点分析和异常挖掘,这些离群点识别自身就可以应用于很多场景。
√ 欺诈检测:通过离群点检测识别违法违约行为,如信用卡欺诈、社保欺诈、电话欺诈、违约用电、偷窃电识别等。
√ 工业检测:如工业生产过程中的不良品检测,计算机网络的非法访问等。
√ 活动监控:通过实时检测手机活跃度或者是股权市场的可疑交易,从而实现检测移动手机诈骗行为等。
√ 网络性能:计算机网络性能检测(稳健性分析),检测网络堵塞情况等。
√ 自然生态应用领域:生态系统失调、异常自然气候的发现等。
√ 公共服务领域:公共卫生中的异常疾病的爆发、公共安全中的突发事件的发生等。
三、离群检测方法及算法
根据数据的维度和实际场景的不同,目前常见的离群点检测算法有基于统计方法、基于邻近度算法、基于密度算法、基于聚类算法,以及基于One-class SVM算法等方法。
(1)基于统计的离群点检测
基于统计分布理论,在已知目标概率分布模型的情况下,通过假设检验原理进行离群点检测。常用的检测方法有正态分布、高斯分布、卡方统计量等,正态分布的原理如下:假设有n个点(X₁,X₂,…,Xn),那么可以计算出这n个点的均值u和方差σ,在数据正态分布的假设下,区域 u±3σ 包含了99.7%的数据,超出该范围的值则可被视为离群点。这种检测的缺陷是对于高维数据的检验效果不佳。
(2)基于邻近度的离群点检测
量化数据集之间的邻近度,把邻近度低的视为离群点。常用的模型为KNN(k近邻),如果一个样本在特征空间中的k个最相似的样本中的大多数属于某一个类别,则该样本也属于这个类别,其中K通常是不大于20的整数。通常用来度量最相似程度的距离有欧式距离和曼哈顿距离。这种检测的缺陷是不适合大数据集,不能处理具有不同区域密度的数据集。
(3)基于密度的离群点检测
定义一个密度值,离群点的密度值与周边正常点的密度相差很大。常用的模型有LOF,该算法的中心思想是:给数据集中的每个点计算一个局部离群因子LOF,通过判断LOF是否接近于1来判定是否是离群因子,若LOF越大于1,则认为该样本是离群点;越接近于1,则非离群点。这种检测的缺陷是参数选择比较困难。
(4)基于聚类的离群点检测
基于聚类技术来发现离群点可能是高度有效的。常用的模型有K-means等,基于聚类的离群点检测思路如下:首先用聚类算法做聚类;然后计算类中每个点到该聚类中心的距离(此处可以用欧式距离或者曼哈顿距离或者马氏距离等),再得出类中所有点到中心的平均距离L;第三步用户设定一个spec参数;最后计算类中的每个点到类中心的距离s,如果,则该点被视为离群点。这种检测的缺陷是聚类算法产生的簇的质量对该算法产生的离群点的质量影响非常大。
(5)基于One-class SVM的离群点检测
当训练数据只有一类时,可以选择One-class SVM算法。该算法进行异常点检测原理是将样本数据训练出一个最小的超球面(大于3维特征),其中在二维中是一个曲线,将数据全部包起来,即将异常点排除。其核心在于选择从低维的空间向高维特征空间映射的核函数及相应的误差惩罚因子。
领取专属 10元无门槛券
私享最新 技术干货