Python异常检测- 单类支持向量机(One-Class SVM)
系列文章目录
Python异常检测- Isolation Forest(孤立森林)
python异常检测 - 随机离群选择Stochastic Outlier Selection (SOS)
python异常检测-局部异常因子(LOF)算法
Python异常检测- DBSCAN
文章目录
- 系列文章目录
- 前言
- 一、One-Class SVM原理
- 二、One-Class SVM实现步骤
- 三、优缺点
- 四、应用场景
- 五、python实现
前言
单类支持向量机(One-Class SVM与传统支持向量机(SVM)不同,是一种非监督的学习算法。您可以使用One-Class SVM异常检测通过学习边界对异常点进行预测。
一、One-Class SVM原理
One-Class SVM(Support Vector Machine)是一种无监督学习算法,用于异常检测和离群点检测。它的原理基于支持向量机的思想,旨在通过构建一个边界来区分正常样本和异常样本。具体是通过构建一个只包含正常样本的决策边界来识别异常样本,One-Class SVM的目标是在特征空间中找到一个最优的超平面,使得正常样本尽可能靠近超平面,而异常样本远离超平面。
One-Class SVM的原理表明One-Class SVM 的核心在于选择合适的超平面,以确保正常数据被尽可能包围,而异常数据则尽量远离。为达到这一目标,需要通过优化目标函数来实现的,从而实现最小化超平面到最近正常数据点的距离同时最大化超平面与正常数据之间的距离。
对于一组二维数据,One-Class SVM的目标即就是寻找一个超平面将样本中的正例圈出来-当然,实际是使用的情况下,维数不可能这么低。

二、One-Class SVM实现步骤
One-Class SVM通过构造原点与单类训练数据之间的超平面,进而可以判断测试数据与单类训练数据之间相似与否,并通过测试集数据与单类训练数据相似性来将其标记为1(相似)或-1(不相似)。其具体实现步骤如下
- 数据映射-- 核函数:
将正常数据映射到高维特征空间中,使得正常数据点能够被一个超平面所包围。这个超平面被称为决策边界,通过使用核函数来实现One-Class SVM在原始特征空间中找到非线性分割超平面,一般常用的核函数包括线性核、多项式核和高斯核。 - 寻找最优超平面:
通过最大化超平面与正常数据之间的间隔,寻找一个最优的分割超平面,使得异常点尽可能远离该超平面。正常数据点尽量被包围,并且能离该超平面边界越远越好。 支持向量是离分割超平面最近的正常样本点,它们决定了分割超平面的位置和方向。One-Class SVM通过选择最优的支持向量,以使分割超平面最大化远离正常样本。 - 异常检测:
对于新的数据点,通过计算其与超平面的距离,来判断该数据点是否为异常。距离较大的数据点更有可能是异常点。
下图展示了一个使用OneClassSVM进行异常检测随机生成的数据生成训练样本X_train后,创建并训练OneClassSVM模型clf来对生成测试样本X_test预测异常情况的可视化展示,包含绘制训练样本、测试样本和异常边界,展示了异常检测的结果。

三、优缺点
One-Class SVM的优点包括:
- 不需要异常数据进行训练,只需要正常数据即能够有效地识别异常点或者精准地描绘数据的分布边界;
- 对于高维数据和复杂的数据分布具有较好的适应性;
- 可以通过调整模型参数来控制异常点的检测灵敏度;
- 算法简单,易于实现。
然而,One-Class SVM也有一些限制:
- 不适合处理具有多个类别的数据集。
- 在处理高维数据和大规模数据时,计算复杂度较高。
- 对于类内的数据噪声敏感,噪声太大时可能会过度泛化。
- 对于数据分布不均匀或存在噪声的情况,效果可能不理想。
- 不提供关于支持向量的解释信息,难以理解模型决策过程。
四、应用场景
One_Class SVM在异常检测领域有广泛的应用:
-
网络安全
检测网络中的异常行为,如入侵检测。它可以识别与正常网络流量不同的异常流量模式,从而提高网络安全性。 -
金融欺诈检测
检测信用卡欺诈、异常交易和洗钱行为。它可以识别与正常交易模式不符的异常交易。 -
工业制造
监测工业制造中的设备异常和故障。它可以帮助预测设备可能出现的问题,从而减少停机时间和维修成本。 -
医疗诊断
检测医疗图像中的异常,如肿瘤、病变和异常组织。它有助于提高医学诊断的准确性
五、python实现
首先许哟啊确保安装了scikit-learn库,没有安装的话,可以通过如下指令安装:
pip install scikit-learn
然后通过如下Python代码来实现One-Class SVM的算法测试:
from sklearn import svm
from sklearn.datasets import make_blobs
import numpy as np# 创建一个数据集
X, _ = make_blobs(n_samples=100, centers=[[0, 0]], cluster_std=0.5)# 初始化 One-Class SVM 模型
# nu 参数决定了支持向量的数量和训练误差的上限比例
# gamma 是 RBF 内核的系数 (1 / (2 * sigma^2))
clf = svm.OneClassSVM(nu=0.1, kernel="rbf", gamma=0.1)# 训练模型
clf.fit(X)# 对新的数据点进行预测
new_data = np.array([[0.5, 0.5], [4.0, 4.0]])
predictions = clf.predict(new_data)# 输出预测结果
print("Predictions:", predictions)
print("Predicted labels: '1' for normal, '-1' for outliers")# 查看支持向量
support_vectors = clf.support_vectors_
print("Support vectors:\n", support_vectors)
参考资料
什么是One-Class SVM
One-Class SVM详解
One-Class SVM异常检测
相关文章:
Python异常检测- 单类支持向量机(One-Class SVM)
系列文章目录 Python异常检测- Isolation Forest(孤立森林) python异常检测 - 随机离群选择Stochastic Outlier Selection (SOS) python异常检测-局部异常因子(LOF)算法 Python异常检测- DBSCAN 文章目录 系列文章目录前言一、On…...
基于SpringBoot+Vue+uniapp微信小程序的婚庆摄影小程序的详细设计和实现(源码+lw+部署文档+讲解等)
项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…...
NGAC访问控制系列三:低代码产品NGAC运用与算法运用
目录 一、基于NGAC的低代码模型权限管理方案 二、多策略访问控制系统限制内部访问的线性时间算法 1、概述 2、权限控制图遍历算法 一、基于NGAC的低代码模型权限管理方案 NGAC在低代码平台的权限决策模型:功能权限数据权限 案例:对于七巧低代码开发平台&…...
Unity3D 面试题收录
Unity3D 客户端面试题收录(持续更新~) 面试题收录 本文收录一些对于 Unity3D 客户端可能遇到的面试题(持续更新~),答案仅出于个人理解,如有偏差,希望指正。 Unity3D MonoBehaviour 生命周期…...
Jrebel热部署不生效解决
打开setting找到build底下的complier勾选 build project automatically 设置自动构建项目 打开setting找到Advanced Setting勾选Complier中的第一项 Jrebel panel中勾选需要热部署的项目模块 项目配置信息:Edit Configuration中进行编辑,配置如下图…...
软件测试学习笔记丨Selenium键盘鼠标事件ActionChains
本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/22515 本文为霍格沃兹测试开发学社的学习经历分享,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~ 说明:本篇博客基于sel…...
CI/CD(持续集成与持续交付)流水线
集成 Jenkins、GitLab Webhook、Nexus 和 RabbitMQ 可以形成一个全面的 CI/CD(持续集成与持续交付)流水线,结合消息队列可以创建事件驱动的工作流。以下是配置这四个工具以实现一个基本的 CI/CD 流程的详细步骤。 前置条件 Jenkins、GitLab、…...
分布式光伏发电有什么优劣势
分布式光伏发电是指在离电力消费地点较近的地方,通过安装光伏发电系统来发电。这种系统通常用于屋顶、地面或其他建筑物上,相比于集中式光伏发电系统,它有一些独特的优势和劣势: 优势: 地理适应性: 分布式…...
Spring Boot框架中的IO
1. 文件资源的访问与管理 在 Spring Boot 中,资源文件的访问与管理是常见的操作需求,比如加载配置文件、读取静态文件或从外部文件系统读取文件。Spring 提供了多种方式来处理资源文件访问,包括通过 ResourceLoader、Value 注解以及 Applica…...
DBeaver连接Hive教程
hive shell:通过hive shell来操作hive,但是至多只能存在一个hive shell,启动第二个会被阻塞,也就是说hive shell不支持并发操作。 基于JDBC等协议:启动hiveserver2,通过jdbc协议可以访问hive,hi…...
Vue-Router源码实现详解
1.Hash模式 hash就是url中#后面的部分hash改变时,页面不会从新加载,会触发hashchange事件,去监听hash改变,而且也会被记录到浏览器历史记录中vue-router的hash模式,主要是通过hashchange事件,根据hash值找…...
程序员节日的日期是10月24日程序员日
程序员节日的日期是10月24日。 这一天被称为中国程序员日或1024程序员节,由博客园、CSDN等自发组织设立,旨在纪念程序员对科技世界的贡献。 程序员节日的由来和意义 1024程序员节的由来可以追溯到2010年,最初由网友提出设立一个…...
联邦学习中的数据异构性
在联邦学习(Federated Learning, FL)领域中, 异构数据(Heterogeneous Data) 是指不同客户端所持有的本地数据在特征分布、类别分布、数量等方面存在差异的数据。这种数据的异质性是联邦学习面临的一大挑战,…...
Python小程序 - 替换文件内容
1. 写入文件c:\a.txt 1)共写入10行 2)每行内容 0123456789 # 1 ls 0123456789 ln 10 with open("c:/a.txt", w,encodingUTF-8) as f:for i in range(ln):f.write(ls\n)######################################### 2 ln 10…...
k8s备份恢复(velero)
velero简介 velero官网: https://velero.io/ velero-github: https://github.com/vmware-tanzu/velero velero的特性 备份可以按集群资源的子集,按命名空间、资源类型标签选择器进行过滤,从而为备份和恢复的内容提供高度的灵活…...
LED户外屏:面对复杂环境的七大挑战
户外LED显示屏作为现代城市广告和信息传播的重要媒介,其应用范围越来越广泛。然而,与室内环境相比,户外环境的复杂多变对LED显示屏提出了更高的要求。本文将探讨户外LED显示屏在设计和应用过程中必须考虑的七个关键问题。 1. 高分辨率 户外LE…...
LabVIEW自动化流动返混实验系统
随着工业自动化的不断发展,连续流动反应器在化工、医药等领域中的应用日益广泛。传统的流动返混实验操作复杂,数据记录和处理不便,基于LabVIEW的全自动流动返混实验系统能自动测定多釜反应器、单釜反应器和管式反应器的停留时间分布ÿ…...
【性能优化】安卓性能优化之CPU优化
【性能优化】安卓性能优化之CPU优化 CPU优化及常用工具原理与文章参考常用ADB常用原理、监控手段原理监控手段多线程并发解决耗时UI相关 常见场景排查CPU占用过高常用系统/开源分析工具AndroidStudio ProfilerSystraceBtracePerfettoTraceView和 Profile ANR相关ANR原理及常见场…...
springboot二手图书交易系统-计算机设计毕业源码88413
目 录 摘要 1 绪论 1.1研究背景 1.2研究意义 1.3论文结构与章节安排 2 二手图书交易系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 二手…...
解决ElasticSearch启动成功却无法在浏览器访问问题
目录 前言: 问题复现 : 解决问题: 1、修改sysctl.conf文件 2、在sysctl.conf文件增加这段东西 3、 然后保存退出,输入以下命令使其生效 结语: 前言: 这篇文章是小白我今天突然启动es,发现e…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
