【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,一经查实,立即删除!

相关文章

SQL Server(四)

SQL Server的优势: 强大的数据管理能力: SQL Server可以处理大量的数据,具有高性能和可靠性,支持多种数据类型和函数,满足复杂数据处理需求。丰富的企业级特性: 提供了高可用性、集成服务、分析服务等丰富…

支持向量机(SVM): 从理论到实践的指南(1)

支持向量机(SVM)被誉为数据科学领域的重量级算法,是机器学习中不可或缺的工具之一。SVM以其优秀的泛化能力和对高维数据的管理而备受推崇。本文旨在梳理SVM的核心概念以及其在实际场景中的应用。 SVM的核心理念 SVM专注于为二分类问题找到最…

Mysql学习(七)——约束

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

SOA的设计模式_1.服务注册表模式

1.注册表 访问注册表(Service Registry)主要在SOA设计时段使用,虽然它们常常也具有运行时段的功能。注册表支持驱动SOA治理的服务合同、策略和元数据的开发、发布和管理。因此,它们提供一个主控制点,或者称为策略执行…

著名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…

算法竞赛一句话解题经典问题分析 ©ntsc 2024

原名:算法竞赛一句话解题&经典问题分析 ©ntsc 2024 处理进度 绿:P1381【~P(今日进度)】蓝:P1099 致CSDN网友: 本文章不定期更新!文章链接: 经典问题分析 基础知识与编程…

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

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

React@16.x(23)useEffect

目录 1,介绍作用介绍 2,注意点2.1,参数1,副作用函数2.1.1,运行时间点2.1.2,返回值2.1.3,闭包的影响2.1.4,严禁出现在代码块中(判断,循环)2.1.5&am…

电阻十大品牌供应商

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

[240609] qwen2 发布,在 Ollama 已可用 | 采用语言模型构建通用 AGI(2020年8月)

目录 qwen2 发布,在 Ollama 已可用Qwen2 模型概览 (基于 Ollama 网站信息)一、模型介绍二、模型参数三、支持语言 (除英语和中文外)四、模型性能五、许可证六、数据支撑: 采用语言模型构建通用 AGI qwen2 发布,在 Ollama 已可用 Qwen2 模型概览 (基于 O…

Android基础-AIDL的实现

一、引言 在Android开发中,跨进程通信(IPC,Inter-Process Communication)是一个常见的需求。为了支持这种需求,Android提供了多种IPC机制,其中AIDL(Android Interface Definition Language&…

深度学习复盘与论文复现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…

Leetcode 3179. Find the N-th Value After K Seconds

Leetcode 3179. Find the N-th Value After K Seconds 1. 解题思路2. 代码实现 题目链接&#xff1a;3179. Find the N-th Value After K Seconds 1. 解题思路 这一题的话还是一个动态规划的问题&#xff0c;核心递推关系式为&#xff1a; dp(n, k) dp(n-1, k) dp(n, k)我…

未在本地计算机上注册“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…