【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!

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

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

相关文章

Mysql学习(七)——约束

文章目录 四、约束4.1 概述4.2 约束演示4.3 外键约束 总结 四、约束 4.1 概述 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。目的:保证数据库中数据的正确、有效性和完整性。分类: 4.2 约束演示 根据需求&…

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

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

【日常记录】【JS】中文转拼音的库 pinyin-pro

文章目录 1、介绍2、pinyin-pro 基本使用3、参考链接 1、介绍 pinyin-pro 是一个专业的 JavaScript 中文转拼音的库,具备多音字识别准确、体积轻量、性能优异、功能丰富等特点。 常用的案例 搜索功能增强:在输入框输入汉字时,可以转化为拼音输…

[CR]厚云填补_综述整理

SAR-to-Optical Image Translation and Cloud Removal Based on Conditional Generative Adversarial Networks: Literature Survey, Taxonomy, Evaluation Indicators, Limits and Future Directions Abstract 由于光学图像的局限性,其波段无法穿透云层&#xff0…

工业互联网数字中台建设方案(ppt原件)

工业互联网数字中台解决方案旨在为企业提供全面、高效的数据驱动能力。该方案主要包括以下几个核心部分: 数据中台:作为核心,数据中台负责汇聚、整合、提纯和加工各类工业数据,实现数据资产的标准化、模型化和模块化。通过提供API…

电阻十大品牌供应商

选型时选择热门的电阻品牌,主要是产品丰富,需求基本都能满足。 所所有的电路中,基本没有不用电阻的,电阻的选型需要参考阻值、精度、封装、温度范围,贴片/插件等参数,优秀的供应商如下: 十大电…

深度学习复盘与论文复现C

文章目录 4、Distributed training4.1 GPU architecture 5、Recurrent neural network5.1 The basic structure of RNN5.2 Neural networks without hidden states5.3 Recurrent neural networks with hidden states5.4 summary 6、Language Model Dataset (lyrics from Jay Ch…

Java 泛型类,泛型方法,泛型接口和通配符(用来限定类和方法的使用范围)

测试类 package Genericity;import java.util.ArrayList;public class test {public static void main(String[] args) {// 使用泛型方法添加元素ArrayList<String> list new ArrayList<>();MyToolClass.ListAdd(list,"fdsf","dsfa");System…

未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。.net 读取excel的时候报错(实测有效)

1. 下载AccessDatabaseEngine.exe 下载链接 添加链接描述 2. office excel是64为的需要安装【AccessDatabaseEngine.exe】、32位的【AccessDatabaseEngine_X64.exe】 3. 我的是64为&#xff0c;跳过32位安装检测 1. 找到下载的安装包 2.输入安装包文件全称并在后面加上/pas…

golang的函数为什么能有多个返回值?

在golang1.17之前&#xff0c;函数的参数和返回值都是放在函数栈里面的&#xff0c;比如函数A调用函数B&#xff0c;那么B的实参和返回值都是存放在函数A的栈里面&#xff0c;所以可以轻松的返回多个值。 其他的编程语言大都使用某个寄存器来存储函数的返回值。 但是从golang…

使用亚马逊 Bedrock:Serverless LLM apps with Amazon Bedrock

Serverless LLM apps with Amazon Bedrock 本文是学习 https://www.deeplearning.ai/short-courses/serverless-llm-apps-amazon-bedrock/ 这门课的学习笔记。 What you’ll learn in this course In this course, you’ll learn how to deploy a large language model-based…

MySQL之多表查询—列子查询

一、引言 标量子查询上篇博客已学习。接下来这篇博客学习子查询的第二种形式——列子查询 列子查询 子查询返回的结果是一列&#xff08;当然也可以是多行)&#xff0c;这种子查询称为列子查询。 列子查询可以使用的操作符 IN、NOT IN 、ANY&#xff08;any&#xff09;、SOME…

在Ubuntu中进行PX4配置的过程中出现以下报错,且不能正常打开gazebo

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

华为坤灵路由器配置SSH

配置SSH服务器的管理网口IP地址。 <HUAWEI> system-view [HUAWEI] sysname SSH Server [SSH Server] interface meth 0/0/0 [SSH Server-MEth0/0/0] ip address 10.248.103.194 255.255.255.0 [SSH Server-MEth0/0/0] quit 在SSH服务器端生成本地密钥对。 [SSH Server…

山水有相逢 来日皆可期

毕业接踵而至&#xff0c;大家都在拍照记录留恋毕业的美好时光碎片。但由于最近实在“玩得太嗨”&#xff0c;无心拍毕业照。 默海笑&#xff0c;当然是需要用自己的方式来为这浑浑噩噩的大学生活画上句号。 我相信&#xff0c;毕业时的你我都会无比的感慨&#xff0c;为什么时…

手把手教你从入门到精通C# 操作MySql数据库

前言 我们在开发上位机软件的时候&#xff0c;经常需要将一些数据存储起来&#xff0c;然后这些数据需要提供历史数据查询功能&#xff0c;并且这些数据的数据量很大&#xff0c;这时候我们就需要使用数据库&#xff0c;在上位机开发领域有很多种数据库&#xff0c;sqlserver、…

完全免费、无广告且开源的格式转换工具

一、简介 1、一款完全免费、无广告且开源的格式转换工具&#xff0c;支持超过200种文件格式的转换。它能够处理视频、音频、图像、文档、电子书等多种类型的文件&#xff0c;功能非常强大。该软件由GitHub上的一位开发者发布&#xff0c;目的是为了让用户能够轻松地完成文件转换…

Triton学习笔记

b站链接&#xff1a;合集Triton 从入门到精通 文章目录 算法名词解释&#xff1a;scheduler 任务调度器model instance、inference和requestbatching 一、Triton Inference Server原理1. Overview of Trition2. Design Basics of Trition3. Auxiliary Features of Trition4. A…

电脑响度均衡是什么?它如何开启?

什么是响度均衡 响度均衡&#xff08;Loudness Equalization&#xff09;是一种音频处理技术&#xff0c;旨在平衡音频信号的响度水平&#xff0c;使得不同音源在播放时具有相似的响度感受。简单来说&#xff0c;它可以让用户在播放不同音轨或音频内容时&#xff0c;不需要频繁…

从反向传播过程看激活函数与权重初始化的选择对深度神经网络稳定性的影响

之前使用深度学习时一直对各种激活函数和权重初始化策略信手拈用&#xff0c;然而不能只知其表不知其里。若想深入理解为何选择某种激活函数和权重初始化方法卓有成效还是得回归本源&#xff0c;本文就从反向传播的计算过程来按图索骥。 为了更好地演示深度学习中的前向传播和…