python异常检测 - 随机离群选择Stochastic Outlier Selection (SOS)

python异常检测 - Stochastic Outlier Selection (SOS)

前言

随机离群选择SOS算法全称stochastic outlier selection algorithm. 该算法的作者是jeroen janssens. SOS算法是一种无监督的异常检测算法.

随机离群选择SOS算法原理

随机离群选择SOS算法的输入:

  • 特征矩阵(feature martrix)或者相异度矩阵(dissimilarity matrix)

随机离群选择SOS算法的输出:

  • 一个异常概率值向量(每个点对应一个).

随机离群选择SOS算法的基本思想

  • 一个点和其它所有点的关联度(affinity)都很小的时候,它就是一个异常点。

随机离群选择SOS实现

随机利群选择SOS的的实现原理

  

  将特征矩阵(feature martrix)或者相异度矩阵(dissimilarity matrix)输入给SOS算法,会返回一个异常概率值向量(每个点对应一个)。SOS的思想是:当一个点和其它所有点的关联度(affinity)都很小的时候,它就是一个异常点。

SOS的流程

1.随机抽样:首先,从原始数据集中随机抽样生成多个子集。每个子集包含原始数据集的一部分样本。

2.距离度量:对于每个子集,计算其中每一对样本之间的距离。通常使用的是欧氏距离或其他合适的距离度量。这一步旨在捕捉子集内样本的相对分布情况。

3.离群得分计算: 对于每个样本,计算其到其他样本的平均距离。离群得分越高,表示该样本越可能是离群点。这个过程有助于识别在整个数据集中相对较远的样本。

4.阈值设定: 根据计算得到的离群得分设定一个阈值。样本的离群得分超过该阈值的话,就被认为是离群点。

相异度矩阵D是各样本两两之间的度量距离, 比如欧式距离或汉明距离等。关联度矩阵反映的是 度量距离方差, 如关联度矩阵中密度可视化所示, 点 的密度最大, 方差最小; 的密度最小, 方差最大。而关联概率 矩阵 (binding probability matrix)就是把关联矩阵(affinity matrix)按行归一化得到的, 如图关联矩阵归一化所 示。

关联度矩阵中密度可视化

关联矩阵归一化

得到了binding probability matrix,每个点的异常概率值就用如下的公式计算,当一个点和其它所有点的关联度(affinity)都很小的时候,它就是一个异常点。

代码实现

powershell 复制代码
import pandas as pd
from sksos import SOS
iris = pd.read_csv("http://bit.ly/iris-csv")
X = iris.drop("Name", axis=1).values
detector = SOS()
iris["score"] = detector.predict(X)
iris.sort_values("score", ascending=False).head(10)

参考资料
收藏!14 种Python异常检测方法总结
【异常检测】数据挖掘领域常用异常检测算法总结以及原理解析

相关推荐
计算机源码社5 分钟前
【大数据项目实战】基于K-Means的科技公司裁员特征分群与规模信号挖掘系统 基于数据挖掘的科技企业裁员事件异常检测与可视化研究
大数据·python·数据挖掘·毕业设计·kmeans·课程设计·数据可视化
IT毕设实战小研6 分钟前
基于大数据的跨国外派人员适应满意度与留存影响因素可视化分析
android·java·大数据·python·django·课程设计
PHP实战开发录15 分钟前
PHP接口超时后为什么任务还在跑
开发语言·前端·php·开发
m0_7345717615 分钟前
深入理解C++ 构造函数<十一> initializer_list 构造
开发语言·c++
数据狐(Datafox)27 分钟前
京东商品详情API接口解析(附 JSON 样例)
java·开发语言·json
步行cgn29 分钟前
Spring Boot 指定数据来源详解
spring boot·后端·python
Wang's Blog31 分钟前
Java框架快速入门: Spring Security+OAuth2之深度定制UserDetailsService与密码无缝升级
java·开发语言·spring
白远山39 分钟前
智慧场馆解决方案小程序系统开发实战与架构设计指南
java·开发语言·小程序·架构
ECT-OS-JiuHuaShan41 分钟前
哲学是迭代学,数学是拓扑学
开发语言·人工智能·学习·算法·机器学习·php·拓扑学
影视飓风TIM44 分钟前
C++异常与RAII智能指针笔记
开发语言·c++·笔记