【Python】探索 One-Class SVM:异常检测的利器


我已经从你的 全世界路过
像一颗流星 划过命运 的天空
很多话忍住了 不能说出口
珍藏在 我的心中
只留下一些回忆
                     🎵 牛奶咖啡《从你的全世界路过》


在数据科学和机器学习领域,异常检测(Anomaly Detection)是一个重要的任务,广泛应用于金融欺诈检测、网络入侵检测、设备故障检测等领域。One-Class SVM(One-Class Support Vector Machine)是一种基于支持向量机(SVM)的强大算法,专门用于解决异常检测问题。本文将详细介绍 One-Class SVM 的概念、原理及其应用。

什么是 One-Class SVM?

One-Class SVM 是一种无监督学习算法,用于识别数据集中与大多数样本显著不同的异常样本。与传统的 SVM 不同,One-Class SVM 仅使用正样本进行训练,其目标是找到一个决策边界,使得大多数正样本位于边界内,而异常样本位于边界外。

原理概述

One-Class SVM 的基本原理是寻找一个能够包含大部分数据点的超平面,并最大化该超平面的边界。具体来说,One-Class SVM 尝试通过一个非线性映射,将数据从输入空间映射到高维特征空间,在这个高维空间中构造一个超平面,使得大部分数据点能够被该超平面包围。

数学上,One-Class SVM 的优化目标可以表示为:
在这里插入图片描述

应用实例

下面是一个使用 One-Class SVM 进行异常检测的示例代码,使用 Python 和 scikit-learn 库。

安装依赖

首先,确保安装了 scikit-learn 库:

pip install scikit-learn

示例代码

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
from sklearn.datasets import make_blobs

# 生成训练数据
X_train, _ = make_blobs(n_samples=100, centers=1, cluster_std=0.4, random_state=42)
X_test, _ = make_blobs(n_samples=20, centers=1, cluster_std=0.4, random_state=42)
X_outliers = np.random.uniform(low=-4, high=4, size=(20, 2))

# 训练 One-Class SVM 模型
clf = svm.OneClassSVM(nu=0.1, kernel="rbf", gamma=0.1)
clf.fit(X_train)

# 预测
y_pred_train = clf.predict(X_train)
y_pred_test = clf.predict(X_test)
y_pred_outliers = clf.predict(X_outliers)

# 可视化结果
plt.title("One-Class SVM")
plt.scatter(X_train[:, 0], X_train[:, 1], c='white', s=20, edgecolor='k', label="Training data")
plt.scatter(X_test[:, 0], X_test[:, 1], c='blue', s=20, edgecolor='k', label="Test data")
plt.scatter(X_outliers[:, 0], X_outliers[:, 1], c='red', s=20, edgecolor='k', label="Outliers")
plt.legend()
plt.show()

代码解释

数据生成:使用 make_blobs 生成训练数据和测试数据,这些数据点聚集在一个中心点附近。生成一些随机的离群点用于测试模型的异常检测能力。
模型训练:使用 svm.OneClassSVM 训练模型。参数 nu 控制异常点的比例,kernel 和 gamma 用于指定核函数及其参数。
预测:使用训练好的模型对训练数据、测试数据和离群点进行预测。返回值为 1 表示正常样本,-1 表示异常样本。
结果可视化:使用 Matplotlib 进行可视化,展示训练数据、测试数据和离群点的分布情况。
One-Class SVM 的优势和局限性

优势

无监督学习:无需标签即可进行异常检测。
灵活性强:可以使用不同的核函数处理线性或非线性数据。
良好的理论基础:基于支持向量机的强大理论。

局限性

参数调优复杂:选择合适的 nu 和 gamma 参数可能需要大量的实验和经验。
计算复杂度高:对于大规模数据集,训练和预测的时间复杂度较高。

结语

One-Class SVM 是一种有效的异常检测算法,特别适用于无监督环境下的异常检测任务。通过理解其基本原理和应用场景,结合实际项目中的数据特征,开发者可以更好地利用 One-Class SVM 提高异常检测的准确性和效率。如果你正在寻找一种强大的工具来解决异常检测问题,不妨尝试一下 One-Class SVM。

Happy Coding!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

工业通讯现场中关于EtherCAT转TCPIP网关的现场应用

在当今工业自动化的浪潮中,EtherCAT技术以其高效、实时的特性成为了众多制造业的首选。然而,随着工业互联网的发展,对于数据的远程访问和云平台集成的需求日益增长,这就需要将EtherCAT协议转化为更为通用的TCP/IP协议。于是开疆智…

【MMU】——MMU 权限控制

文章目录 权限控制内存访问权限内存类型XN execute neverDomain 权限控制 内存访问权限 内存类型 TEX C B bit 控制信息 XN execute never 不可执行区域,例如设备地址空间通常标记为不可执行区域,如果有指令预取访问了该空间,就会触发指令…

CVE-2022-4230

CVE-2022-4230 漏洞介绍 WP Statistics WordPress 插件13.2.9之前的版本不会转义参数,这可能允许经过身份验证的用户执行 SQL 注入攻击。默认情况下,具有管理选项功能 (admin) 的用户可以使用受影响的功能,但是该插件有一个设置允许低权限用…

快速入门Linux及使用VSCode远程连接Linux服务器

在当前的技术环境中,Linux操作系统因其强大的功能和灵活性而广受欢迎。无论你是开发人员、系统管理员还是技术爱好者,学习Linux都是提升技术技能的重要一步。本文将介绍如何快速入门Linux,并使用Visual Studio Code(VSCode&#x…

【RAG入门教程03】Langchian框架-文档加载

Langchain 使用文档加载器从各种来源获取信息并准备处理。这些加载器充当数据连接器,获取信息并将其转换为 Langchain 可以理解的格式。 LangChain 中有几十个文档加载器,可以在这查看https://python.langchain.com/v0.2/docs/integrations/document_lo…

王学岗鸿蒙开发(北向)——————(七、八)ArkUi的各种装饰器

arts包含如下:1,装饰器 ;2,组件的描述(build函数);3,自定义组件(Component修饰的),是可复用的单元;4,系统的组件(鸿蒙官方提供);等 装饰器的作用:装饰类、变量、方法、结…

著名AI人工智能社会学家唐兴通谈数字社会学网络社会学主要矛盾与数字空间社会网络社会的基本议题与全球海外最新热点与关注社会结构社会分工数字财富数字游民数字经济

如果人工智能解决了一切,人类会做什么? 这个问题的背后是人工智能时代的社会主要矛盾会是什么?那么整个社会的大的分工体系就会围绕主要矛盾开展。 《人工智能社会主要矛盾》 在农业社会,主要矛盾是人口增长和土地资源之间的关…

这家叉车AGV巨头2024年一季度销售4075万~

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 一、BALYO公司概览 BALYO,这家来自法国的仓储机器人公司,自2006年成立以来,一直致力于为全球客户提供…

LabVIEW 与组态软件在自动化系统中的应用比较与选择

LabVIEW 确实在非标单机设备、测试和测量系统中有着广泛的应用,特别是在科研、教育、实验室和小型自动化设备中表现突出。然而,LabVIEW 也具备一定的扩展能力,可以用于更复杂和大型的自动化系统。以下是对 LabVIEW 与组态软件在不同应用场景中…

嵌入式单片机产品微波炉拆解分享

在厨房电器中,微波炉可以说是最具技术含量的电器,它的工作原理不像其他电器那样一眼就能看个明白,于是拆解了一个微波炉,分析内部电路。 微波炉的结构 微波炉由箱体、磁控管、变压器、高压电容器、高压二极管、散热风扇、转盘装置及一系列控制保护开关组成,大多数微波炉还…

【详细的Kylin使用心得,什么是Kylin?】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

【JAVASE】面向对象编程综合案例--------模仿电影信息系统

需求: (1)展示系统中的全部电影(每部电影展示:名称、价格) (2)允许用户根据电影编号(ID)查询出某个电影的详细信息。 目标:使用所学的面向对象…

报表或者BI的价值在哪?这是十几年的问题啦!

对,问题已经十几年了,答案也应该普世都懂了吧,但非常遗憾,答案没有问题普及的广。看似简单,但也难说清楚,不同的人,总会有不同的看法。 为什么要解释这个并不新鲜的问题? 因为有人问…

计网总结☞网络层

.................................................. 思维导图 ........................................................... 【Wan口和Lan口】 WAN口(Wide Area Network port): 1)用于连接外部网络,如互联…

Java面向对象-[封装、继承、多态、权限修饰符]

Java面向对象-封装、继承、权限修饰符 一、封装1、案例12、案例2 二、继承1、案例12、总结 三、多态1、案例 四、权限修饰符1、private2、default3、protected4、public 一、封装 1、案例1 package com.msp_oop;public class Girl {private int age;public int getAge() {ret…

【AI 高效问答系统】机器阅读理解实战内容

⭐️我叫忆_恒心,一名喜欢书写博客的研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支…

Git【版本控制命令】

02 【本地库操作】 1.git的结构 2.Git 远程库——代码托管中心 2.1 git工作流程 代码托管中心用于维护 Git 的远程库。包括在局域网环境下搭建的 GitLab 服务器,以及在外网环境下的 GitHub 和 Gitee (码云)。 一般工作流程如下: 1.从远程…

大模型创新企业集结!百度智能云千帆AI加速器Demo Day启动

新一轮技术革命风暴席卷而来,为创业带来源源不断的创新动力。过去一年,在金融、制造、交通、政务等领域,大模型正从理论到落地应用,逐步改变着行业的运作模式,成为推动行业创新和转型的关键力量。 针对生态伙伴、创业…

基于STM32开发的智能机器人导航系统

目录 引言环境准备智能机器人导航系统基础代码实现:实现智能机器人导航系统 4.1 距离传感器数据读取4.2 电机控制4.3 实时路径规划与避障4.4 用户界面与状态显示应用场景:智能机器人导航与控制问题解决方案与优化收尾与总结 1. 引言 智能机器人导航系…

五款软件推荐:U盘数据不小心删除了?帮你快速找回!

U盘数据不小心删除了怎么恢复?U盘是一种便携式存储设备,因其小巧轻便而广受欢迎。但是,U盘也常常会遇到数据丢失的问题。当U盘数据丢失时,需要找到一款可靠的数据恢复软件来恢复数据。 接下来为大家推荐5款好用的免费U盘数据恢复软…