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在异常检测领域有广泛的应用:

  1. 网络安全
    检测网络中的异常行为,如入侵检测。它可以识别与正常网络流量不同的异常流量模式,从而提高网络安全性。

  2. 金融欺诈检测
    检测信用卡欺诈、异常交易和洗钱行为。它可以识别与正常交易模式不符的异常交易。

  3. 工业制造
    监测工业制造中的设备异常和故障。它可以帮助预测设备可能出现的问题,从而减少停机时间和维修成本。

  4. 医疗诊断
    检测医疗图像中的异常,如肿瘤、病变和异常组织。它有助于提高医学诊断的准确性

五、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异常检测

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/57607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像高清化(论文复现)

图像高清化(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 图像高清化(论文复现)概述算法原理核心逻辑效果演示使用方式概述 本文复现论文 “Zero-Shot” Super-Resolution using Deep Internal Learning[1] 提出的图像超分辨率方法。 图像超分辨率是指从低…

如何从模块内部运行 Pytest

在 Python 中,pytest 是一个强大的测试框架,用于编写和运行测试用例。通常我们会在命令行中运行 pytest,但是有时你可能希望从模块或脚本的内部运行 pytest,比如为了自动化测试或集成到某个工作流程中。 1、问题背景 当你从模块…

Netty无锁化设计之对象池实现

池化技术是比较常见的一种技术,在平时我们已经就接触很多了,比如线程池,数据库连接池等等。当我们要使用一个资源的时候从池中去获取,用完就放回池中以便其他线程可以使用,这样的目的就是为了减少资源开销,…

JMeter 动态参数赋值实践

目录 前言 单线程 用户参数 场景说明 实战结果 配置明细 单线程 CSV Data Set Config 场景说明 实践结果 配置明细 多线程循环单次执行 场景说明 实践结果 配置明细 单线程 控制器 用户自定义变量 用户参数 场景说明 实战结果 配置明细 多并发 多接口 …

AudioSegment 提高音频音量 - python 实现

一些采集的音频声音音量过小可以通过 AudioSegment 实现音量增强。 按照 python 库: pip install AudioSegment 代码具体实现: #-*-coding:utf-8-*- # date:2024-10 # Author: DataBall - XIAN # Function: 音频增加音量import os from pydub import …

Matlab学习01-矩阵

目录 一,矩阵的创建 1,直接输入法创建矩阵 2,利用M文件创建矩阵 3,利用其它文本编辑器创建矩阵 二,矩阵的拼接 1,基本拼接 1) 水平方向的拼接 2)垂直方向的拼接 3&#xf…

记录:网鼎杯2024赛前热身WEB01

目录扫描,发现上传点,判断可能存在文件上传漏洞,并根据文件后缀判断网站开发语言为php 编写蚁剑一句话木马直接上传 蚁剑连接 这里生成 的flag是随机的,因为烽火台反作弊会随机生成环境,在一顿查找后,在hom…

stm32F103 实现呼吸灯效果

目录 硬件连接 软件实现步骤 初始化系统时钟。 配置 GPIO 引脚。 配置定时器以生成 PWM 信号。 在主循环中调整 PWM 占空比以实现呼吸效果。 示例代码 1. 初始化系统时钟 2. 配置 GPIO 引脚 3. 配置定时器以生成 PWM 信号 4. 在主循环中调整 PWM 占空比以实现呼吸效…

5G RedCap工业路由器赋能电力物联网应用

随着5G轻量化技术应用的推进,5G RedCap旨在提供低功耗、低成本、广覆盖等功能特点赋能电力智能化升级。特别适用于工业物联网、低空经济、车联网、消费电子和轻量级5G的需求。 5G RedCap工业路由器的特点 低功耗:5G RedCap工业路由器通过节能技术&#…

npm run serve 提示异常Cannot read property ‘upgrade‘ of undefined

npm run serve 提示Cannot read property ‘upgrade’ of undefined 一般是proxy的target代理域名问题导致的,如下: 解决方案: proxy: { “/remoteDealerReportApi”: { target: ‘http://demo-.com.cn’, //此域名有问题,会导致…

PTA数据库编程练习合集

10-1 查询重量在[40,65]之间的产品信息 本题目要求编写SQL语句&#xff0c; 检索出product表中所有符合40 < Weight < 65的记录。 提示&#xff1a;请使用SELECT语句作答。 表结构: CREATE TABLE product (Pid varchar(20), --商品编号PName varchar(50), --商品名…

JavaWeb开发7

前后端混合开发 沟通成本高 分工不明确 不便管理 不便维护扩展 前后端分离开发 前端--接口--后端 需求分析--接口定义--前后端并行开发--测试--前后端连调测试 前端开发 模块化 JS、CSS 组件化 UI结构、样式、行为 规范化 目录结构、编码、接口 自动化 构建、部署、…

Git_IDEA集成GitHub

Git_IDEA集成GitHub 设置 GitHub 账号 分享工程到 GitHub push 推送本地库到远程库 pull 拉取远程库到本地库 clone 克隆远程库到本地 设置 GitHub 账号 去 GitHub 账户上设置 token 因为网络原因用账号密码可能登不上&#xff0c;所以选择用口令。 分享工程到 GitHub…

网络安全领域推荐证书介绍及备考指南

在网络安全领域&#xff0c;拥有专业认证不仅可以证明个人的专业能力&#xff0c;还能帮助在实际工作中应用先进的技术和知识。以下是几种热门的网络安全证书介绍及备考指南。 1. OSCP (Offensive Security Certified Professional) 证书简介 OSCP是针对渗透测试领域的入门级…

Matlab 疲劳驾驶检测

课题介绍 该课题为基于眼部和嘴部的疲劳驾驶检测。带有一个人机交互界面GUI&#xff0c;通过输入视频&#xff0c;分帧&#xff0c;定位眼睛和嘴巴&#xff0c;通过眼睛和嘴巴的张合度&#xff0c;来判别是否疲劳。 二、操作步骤 第一步&#xff1a;最好电脑安装的是MATLAB …

Jmeter 实战 JDBC配置

​ JDBC JDBC&#xff08;Java Database Connectivity&#xff09;是一种用于执行SQL语句的Java API。通过这个API&#xff0c;可以直接连接并执行SQL脚本&#xff0c;与数据库进行交互。 使用JMeter压力测试时&#xff0c;操作数据库的场景 在使用JMeter进行接口压力测试时…

全栈面试题】模块3-9】JavaSE高级 -- Object类、 GC、反射、Socket

目录 面试题3.62 JAVA中Object类中有哪些常用方法&#xff1f; 面试题3.63 什么是深拷贝和浅拷贝 面试题3.64 GC是什么? 为什么要有GC? 面试题3.65 JVM垃圾回收机制和常见算法 面试题3.66 简单的介绍⼀下强引用&#xff0c;软引用&#xff0c;弱引用&#xff0c;虚引用 …

基于SSM消防物资存储系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;仓库管理&#xff0c;物资入库管理&#xff0c;仓位管理&#xff0c;物资详情管理&#xff0c;报警通知管理&#xff0c;安全检查提醒管理 用户账号功能包括&#xff1a;系统首页…

【数据分享】全国能源-电力平衡表(2000-2020年)

数据介绍 一级标题指标名称单位能源电力可供量亿千瓦小时能源电力生产量亿千瓦小时能源水电生产电力量亿千瓦小时能源火电生产电力量亿千瓦小时能源核电生产电力量亿千瓦小时能源风电生产电力量亿千瓦小时能源电力进口量亿千瓦小时能源电力出口量亿千瓦小时能源电力能源消费总量…

从零到一:如何使用直播美颜SDK开发视频美颜平台

今天&#xff0c;小编将为大家详细讲解如何从零开始&#xff0c;利用直播美颜SDK进行开发视频美颜平台。 一、了解直播美颜SDK 选择合适的SDK是开发视频美颜平台的第一步&#xff0c;市场上有多种SDK可供选择。选择时应考虑SDK的功能、性能、稳定性以及开发者社区的支持。 二…