聚类分析(七)离群点分析

本文深入探讨了离群点分析的概念、原因、重要性和挑战,并介绍了几种常见的离群点检测方法,如基于统计分布、距离、密度和偏差的检测。着重阐述了基于密度的局部离群点检测,包括相关概念如k-distance、局部可达密度和局部离群因子(LOF),并提供了算法实现示例。

一、             什么是离群点分析

1 、什么是离群点?

在样本空间中,与其他样本点的一般行为或特征不一致的点,我们称为离群点。

2 、离群点产生的原因?

第一,   计算的误差或者操作的错误所致,比如:某人的年龄 -999 岁,这就是明显由误操作所导致的离群点;

第二,   数据本身的可变性或弹性所致,比如:一个公司中 CEO 的工资肯定是明显高于其他普通员工的工资,于是 CEO 变成为了由于数据本身可变性所导致的离群点。

3 、为什么要对离群点进行检测?

“一个人的噪声也许是其他的信号”。换句话说,这些离群点也许正是用户感兴趣的,比如在欺诈检测领域,那些与正常数据行为不一致的离群点,往往预示着欺诈行为,因此成为执法者所关注的。

4 、离群点检测遇到的困难?

第一,   在时间序列样本中发现离群点一般比较困难,因为这些离群点可能会隐藏在趋势、季节性或者其他变化中;

第二,   对于维度为非数值型的样本,在检测过程中需要多加考虑,比如对维度进行预处理等;

第三,   针对多维数据,离群点的异常特征可能是多维度的组合,而不是单一维度就能体现的。

二、             几类离群点检测方法

1 、基于统计分布的离群点检测

这类检测方法假设样本空间中所有数据符合某个分布或者数据模型,然后根据模型采用不和谐校验( discordancy test )识别离群点。不和谐校验过程中需要样本空间数据集的参数知识( eg: 假设的数据分布),分布的参数知识( eg: 期望和方差)以及期望的离群点数目。

不和谐校验分两个过程:工作假设和备选假设

工作假设指的是如果某样本点的某个统计量相对于数据分布的是显著性概率充分小,那么我们则认为该样本点是不和谐的,工作假设被拒绝,此时备用假设被采用,它声明该样本点来自于另一个分布模型。

如果某个样本点不符合工作假设,那么我们认为它是离群点。如果它符合备选假设,我们认为它是符合某一备选假设分布的离群点。

基于统计分布的离群点检测的缺点:

第一,   在于绝大多数不和谐校验是针对单个维度的,不适合多维度空间;

第二,   需要预先知道样本空间中数据集的分布特征,而这部分知识很可能是在检测前无法获得的。

2 、基于距离的离群点检测

基于距离的离群点检测指的是,如果样本空间 D 中至少有 N 个样本点与对象 O 的距离大于 dmin, 那么称对象 O 是以 { 至少 N 个样本点 }dmin 为参数的基于距离的离群点。

其实可以证明,在大多数情况下,如果对象 O 是根据基于统计的离群点检测方法发现出的离群点,那么肯定存在对应的 Ndmin ,是它也成为基于距离的离群点。

Eg: 假设标准正态分布,如果离均值偏差 3 或更大的对象认为是离群点,根据正态曲线概率密度函数, P|x-3|<=dmin<1-N/ 总点数,即 P3-dim=<x<=3+dmin<1-N/ 总点数,假设 dmin=0.13, 则该 dmin 领域表示 [2.87,3.13] 的范围,假设总点数 =10000, N=12.

基于距离的离群点检测的缺点 :

要求数据分布均匀,当数据分布非均匀时,基于距离的离群点检测将遇到困难。

3 、基于密度的局部离群点检测

什么是局部离群点?

一个对象如果是局部离群点,那么相对于它的局部领域,它是远离的。

不同于前面的方法,基于密度的局部离群点检测不将离群点看做一种二元性质,即不简单用 Yes or No 来断定一个点是否是离群点,而是用一个权值来评估它的离群度。

它是局部的,意思是该程度依赖于对象相对于其领域的孤立情况。这种方法可以同时检测出全局离群点和局部离群点。

通过基于密度的局部离群点检测就能在样本空间数据分布不均匀的情况下也可以准确发现离群点。

4 、基于偏差的离群点检测

基于偏差的离群点检测,它通过检查一组对象的主要特征来识别离群点,“偏差”这种特征的点我们认为是离群点。

通常有两种技术:

第一,   顺序异常技术

第二,   采用 OLAP 数据立方体技术

三、             基于密度的局部离群点检测

前面介绍了什么叫做基于密度的局部离群点检测,以及它的优势。现在详细介绍下它的一些概念。

1、   对象 p 的第 k 距离

对于正整数 k, 对象 p 的第 k 距离可记作 k-distance(p)

在样本空间中,存在对象 o ,它与对象 p 之间的距离记作 d(p,o) 。如果满足以下两个条件,我们则认为 k-distance(p)= d(p,o)

1)  在样本空间中,至少存在 k 个对象 q, 使得 d(p,q)<= d(p,o);

2)  在样本空间中,至多存在 k-1 个对象 q, 使得 d(p,q)<d(p,o)

换句话说,满足这两个标准的 k-distance(p) 其实就是计算样本空间中其他对象与对象 p 之间的距离,然后找到第

### Python 中基于聚类的离群点检测与去除 在 Python 的数据科学领域中,可以通过多种方式实现基于聚类的离群点检测并将其移除。以下是几种常见的方法及其具体实现: #### 使用 K-Means 聚类识别离群点 K-Means 是一种常用的无监督学习算法,在聚类过程中可能会受到离群点的影响。因此,可以在完成初步聚类后计算每个样本到其所属簇中心的距离,并设定阈值来判断哪些点属于离群点。 ```python from sklearn.cluster import KMeans import numpy as np def detect_outliers_kmeans(data, n_clusters=2, threshold=3): kmeans = KMeans(n_clusters=n_clusters).fit(data) distances_to_center = np.min(kmeans.transform(data), axis=1) outliers = data[distances_to_center > threshold * np.std(distances_to_center)] return outliers ``` 上述代码定义了一个函数 `detect_outliers_kmeans` 来检测离群点[^1]。它利用了距离度量标准差作为判定依据之一。 #### DBSCAN 密度基聚类自动排除离群点 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种密度基聚类算法,能够自然地将噪声点标记为离群点。这些被标记为 `-1` 类别的点即代表未归属于任何有效簇的数据点。 ```python from sklearn.cluster import DBSCAN def find_and_remove_outliers_dbscan(data, eps=0.5, min_samples=5): dbscan = DBSCAN(eps=eps, min_samples=min_samples).fit(data) core_samples_mask = np.zeros_like(dbscan.labels_, dtype=bool) core_samples_mask[dbscan.core_sample_indices_] = True labels = dbscan.labels_ # 获取非噪音点索引 non_noise_points = data[labels != -1] return non_noise_points ``` 此部分展示了如何应用 DBSCAN 进行异常值过滤[^2]。通过调整参数 `eps` 和 `min_samples` 可控制敏感程度以及最终效果。 #### Isolation Forest 隔离森林法 虽然严格意义上不属于传统意义上的“聚类”,但隔离森林(Isolation Forest)专门用于高效发现高维空间中的孤立点或者稀疏区域内的个体成员。这种方法特别适合于大规模数据分析场景下快速定位潜在问题所在之处。 ```python from sklearn.ensemble import IsolationForest def isolate_forest_detect_anomalies(data, contamination='auto'): model = IsolationForest(contamination=contamination) preds = model.fit_predict(data) anomalies = data[preds == -1] return anomalies ``` 这里提供了另一种思路——采用随机划分技术构建决策树结构从而达到分离正常实例同极端情况的目的。 综上所述,针对不同需求可以选择合适的策略组合起来解决实际遇到的各种复杂状况下的挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值