什么是One-Class SVM

1. 简介

        单类支持向量机,简称One-Class SVM(One-Class Support Vector Machine),用于异常检测和离群点检测(无监督学习,其他svm属于有监督的),可以在没有大量异常样本的情况下有效地检测异常。其目标是通过仅使用正常数据来建模,识别出与正常模式不同的异常数据点。其在处理高维数据和非常稀疏的异常检测问题时非常有用。

      严格来说,OCSVM不是一种outlier detection,而是一种奇异点检测(novelty detection)方法:它的训练集不应该掺杂异常点,因为模型可能会去匹配这些异常点。但在数据维度很高,或者对相关数据分布没有任何假设的情况下,OCSVM也可以用于outlier detection。

1. novelty detection: 当训练数据中没有离群点,我们的目标是用训练好的模型去检测另外发现的新样本;
2. outlier detection: 当训练数据中包含离群点,模型训练时要匹配训练数据的中心样本,忽视训练样本中的其他异常点。

        在one-class classification中,仅仅只有一类的信息是可以用于训练,其他类别的(总称outlier)信息是缺失的,也就是区分两个类别的边界线是通过仅有的一类数据的信息学习得到的。对比与有正负样例的二分类SVM,OCSVM可以训练出一个高维超球面,把数据尽可能紧的包围起来。二分类不但能识别是否为目标类别,还能输出样本具体类别;而单分类只需判断是否为目标类别即可。

2. 基本原理

 算法思路:

        就是寻找一个超平面将样本中的正例圈出来(该超平面将正常样本和异常样本分隔开),预测就是用这个超平面做决策,在圈内的样本就认为是正样本。这个超平面被称为“分割超平面”,并且由支持向量支持,即最靠近分割超平面的正常样本点。
具体算法描述:
  没有类别标签,如何寻找划分的超平面以及寻找支持向量机呢?一种特别的思想SVDD,我们期望所有不是异常的样本都是正类别,同时它采用一个超球体而不是一个超平面来做划分,该算法在特征空间中获得数据周围的球形边界,期望最小化这个超球体的体积,从而最小化异常点数据的影响。

        它通过构造原点与单类训练数据之间的超平面,进而可以判断测试数据与单类训练数据之间相似与否,如果测试集数据与单类训练数据相似,则可以将其归为相似样本,记为1,如果测试集数据与单类训练集数据不相似,则记为-1。由于其可以通过超平面的构建,发现待预测数据与训练集数据“相似与否”,进而该模型可以用作异常点检测。

1. 数据映射 -- 核函数

        OCSVM使用核函数来将数据映射到高维空间。常用的核函数包括线性核、多项式核和高斯核。这些核函数允许OCSVM在原始特征空间中找到非线性分割超平面。但由于核函数计算比较耗时,数据量较大时不太适用。

2. 寻找最优超平面

        其目标是找到一个分割超平面(通过最大化超平面与正常数据之间的间隔),使得正常数据点能够被该超平面所包围(正常样本远离该超平面,而异常样本尽可能接近),这个超平面被称为决策边界。这个分割超平面的法向量和距离到原点的距离是训练过程中优化的参数。

        支持向量是离分割超平面最近的正常样本点,它们决定了分割超平面的位置和方向。在训练过程中,OCSVM会选择最优的支持向量,以使分割超平面最大化远离正常样本。

3. 异常检测

        对于新的数据点,通过计算其与超平面的距离,来判断该数据点是否为异常。距离较大的数据点更有可能是异常点。

4. 总结

        OCSVM的关键在于如何选择合适的超平面,以使得正常数据被尽可能包围,而异常数据则被远离。这是通过优化一个目标函数来实现的,其中包括最小化超平面到最近正常数据点的距离和最大化超平面与正常数据之间的间隔。

3. 应用场景

        在异常检测领域有广泛的应用:

1. 网络安全

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

2. 金融欺诈检测

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

3. 工业制造

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

4. 医疗诊断

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

4. 异常检测实践

        sklearn提供了一些ML方法,其中OCSVM可以用于Novelty Dection(奇异点检测);IF(Isolation Forest),LOF(Local Outlier Factor)可用于Outlier Detection(异常点检测)。

4.1 API简介

1. 构造函数

oneClassSvm(cacheSize = 100, kernel = rbfKernel(), epsilon = 0.001,nu = 0.1, shrink = TRUE, ...)

(1)kernel用于计算样本之间相似度的核函数

1. 径向基础函数内核rbfKernel();

2. 线性内核linearKernel();

3. 多项式内核polynomialKernel();

4. Sigmoid 内核sigmoidKernel()

(2)nu限制了在模型中允许存在的异常点的比例,默认值为 0.1。其值必须介于 0 和 1 之间,通常介于 0.1 和 0.5 之间。

(3)epsilon:优化器收敛的阈值,默认值为 0.001。 如果迭代间的改进小于阈值,则算法将停止并返回当前模型。

(4)cacheSize:存储训练数据的缓存的最大大小, 默认值为 100 MB。

(5)shrink:默认值是 TRUE,表示使用缩减启发式。 在这种情况下,某些样本将在训练过程中“缩减”,这可能会加快训练速度 。

2. 其他

(1)fit(X):训练,根据训练样本和上面两个参数探测边界;(注意是无监督)

(2)predict(X):返回预测值(+1:正常样本,-1:异常样本);

(3)fit_predict(X[, y]):在X上执行拟合并返回X的标签;

(4)decision_function(X):返回各样本点到超平面的函数距离(signed distance),正的为正常样本,负的为异常样本。

(5)set_params(**params):设置评估器的参数;

(6)get_params([deep]):获取评估器的参数。

4.2 demo

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svmrng = np.random.RandomState(42)
X = 0.3 * rng.randn(200, 2)  # 正常样本
X_train = np.r_[X + 2, X - 2]
X_test = np.r_[rng.uniform(low=-6, high=6, size=(50, 2))]  # 异常样本model = svm.OneClassSVM(nu=0.1, kernel="rbf", gamma=0.1)
model.fit(X_train)
y_pred_train = model.predict(X_train)
y_pred_test = model.predict(X_test)
# n_error_train = y_pred_train[y_pred_train == -1].size  # 训练集异常样本个数# 绘制训练样本和测试样本的散点图
plt.scatter(X_train[:, 0], X_train[:, 1], color='black', label='train_sample')
plt.scatter(X_test[:, 0], X_test[:, 1], color='red', label='test_sample')# 绘制异常样本的边界
xmin, xmax = X_test[:, 0].min() - 1, X_test[:, 0].max() + 1
ymin, ymax = X_test[:, 1].min() - 1, X_test[:, 1].max() + 1
xx, yy = np.meshgrid(np.linspace(xmin, xmax, 500), np.linspace(ymin, ymax, 500))
Z = model.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contour(xx, yy, Z, levels=[0], linewidths=2, colors='blue')# 设置图形标题和图例
plt.title("OneClassSVM")
plt.legend()
plt.show()

模型将正常样本点标记为1,异常样本点标记为-1,并将它们可视化出来。

5. 优缺点

5.1 优点

    1. 不需要异常数据进行训练,只需要正常数据即可;
    2. 对于高维数据和复杂的数据分布具有较好的适应性;
    3. 可以通过调整模型参数来控制异常点的检测灵敏度。

5.2 缺点

    1. 在处理高维数据和大规模数据时,计算复杂度较高;
    2. 对于数据分布不均匀或存在噪声的情况,效果可能不理想;
    3. 需要谨慎选择模型参数,以避免过拟合或欠拟合的情况。

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

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

相关文章

【力扣 Hot100 | 第四天】4.15(括号生成)

文章目录 4.括号生成4.1题目4.2解法:回溯4.2.1回溯思路(1)函数返回值以及参数(2)终止条件(3)遍历过程 4.2.2代码 4.括号生成 4.1题目 数字 n 代表生成括号的对数,请你设计一个函数…

三斜求积术 To 海伦公式 ← 三角形面积

【知识点:三斜求积术】 所谓秦九韶的三斜求积术,即如果已知三角形的边长a,b,c,可求得该三角形的面积为: 而由三斜求积术可推得海伦公式。过程如下: 其中, 上面推导公式的 Latex 代码…

​​​​网络编程探索系列之——广播原理剖析

hello !大家好呀! 欢迎大家来到我的网络编程系列之广播原理剖析,在这篇文章中, 你将会学习到如何在网络编程中利用广播来与局域网内加入某个特定广播组的主机! 希望这篇文章能对你有所帮助,大家要是觉得我写…

从零开始写 Docker(十一)---实现 mydocker exec 进入容器内部

本文为从零开始写 Docker 系列第十一篇,实现类似 docker exec 的功能,使得我们能够进入到指定容器内部。 完整代码见:https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识: 核心原理&…

「51媒体」如何有效进行媒体邀约,提升宣传传播效果?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 进行有效的媒体邀约,提升宣传传播效果的关键在于策略性和专业性。以下是具体的做法: 明确目标:要确立清晰的品牌推广目标和策略,包括确定目…

软考-系统集成项目管理中级--范围管理(输入输出很重要!!!)

本章历年考题分值统计 本章重点常考知识点汇总清单(掌握部分可直接理解记忆) 12、标杆对照将实际或计划的做法(如流程和操作过程)与其他可比组织的做法进行比较,以便识别最佳实践,形成改进意见,并为绩效考核提供依据。标杆对照所采用的可比组…

【YOLOv8改进[损失函数]】使用结合InnerIoU和Focaler的各种损失函数助力YOLOv8更优秀

目录 一 回归损失函数(Bounding Box Regression Loss) 1 Inner-IoU 2 Focaler-IoU:更聚焦的IoU损失 二 改进YOLOv8的损失函数 1 总体修改 ① ultralytics/utils/metrics.py文件 ② ultralytics/utils/loss.py文件 ③ ultralytics/uti…

亚马逊云科技直冲云霄训练营活动开始啦(送考试半价券)

小李哥分享的是亚马逊科技官方免费直冲云霄训练营学习活动,通过该活动可以薅到以下的羊毛 1️⃣免费系统性技能培训,成为AWS技术大牛 2️⃣考试半价券,最高可省1086元人民币 3️⃣分享活动获得精美礼品 4️⃣亚马逊云科技年度全球技术大会门票…

什么是T型槽铸铁平板中内应力——河北北重厂家

T型槽铸铁平板中的内应力指的是平板内部受到的内部力,包括拉应力和剪应力。在T型槽铸铁平板使用过程中,由于自身重量、外力加载等原因,会产生内部应力。这些内应力是平板内部各部分之间的相互作用力,使得平板各部分受到不同的拉伸…

FreeSWITCH 1.10.10 简单图形化界面1 - docker/脚本/ISO镜像安装[YouCanSee]

FreeSWITCH 1.10.10 简单图形化界面1 - docker/脚本/ISO镜像安装 0. 界面预览00. 使用手册在这里1. Docker安装1.1 下载docker镜像1.2 启动docker镜像1.3 登录 2. 脚本安装2.1 下载2.2 安装2.3 登录2.4 卸载程序 3. 镜像安装3.1 下载镜像3.2 安装镜像3.3 登录 0. 界面预览 网站…

基于SpringBoot+Vue的在线教育系统(源码+文档+包运行)

一.系统概述 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了在线教育系统的开发全过程。通过分析在线教育系统管理的不足,创建了一个计算机管理在线教育系统的方案。文章介绍了在线教育系统的系统分析部…

ETL工具-nifi干货系列 第十三讲 nifi处理器QueryDatabaseTable查询表数据实战教程

1、处理器QueryDatabaseTable,该组件生成一个 SQL 查询,或者使用用户提供的语句,并执行它以获取所有在指定的最大值列中值大于先前所见最大值的行。查询结果将被转换为 Avro 格式,如下图所示: 本示例通过QueryDatabase…

【模板】差分

本题链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例: 输入 3 2 1 2 3 1 2 4 3 3 -2 输出 5 6 1 思路: 一直以来,我总是不太理解差分和树状数组操作区别。 现在摸了一下开始有所理解了。 差分和树状数组的区别…

硬件开源--Model 3C(简称M3)芯片驱动RGB接口86中控屏PCBA原理图

针对市场IOT应用需求,基于启明智显的Model3C芯片(简称M3)设计开发的一款超高性价比的86型中控屏PCBA原理图开源。 Model3C芯片(简称M3)是一款基于 RISC-V 的高性能、国产自主、工业级高清显示与智能控制 MCU,配备强大的 2D 图形加速处理器、PNG/JPEG 解码…

LeetCode 202. 快乐数

LeetCode 202. 快乐数 1、题目 力扣题目链接:202. 快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,…

关于 Windows10 计算机丢失 MSVCP120.dll 的解决方法

今天学长跟平时一样打开电脑开始发布文章需要用到Adobe Photoshop CC 2018的时候居然给我来个Photoshop.exe-系统错误、无法启动此程序,因为计算机中丢失MSVCP120.dll 尝试重新安装该程序以解决此问题,安装上面的说明重新安装了我的Photoshop CC 打开还是…

财务数字化转型如何找到打通业财融合的关键点

随着企业信息联网核查系统上线及即将到来的金税四期,企业将面临全业务、全方位、全流程的监控,企业“合不合规、经不经得起核查”,成为企业经营的一个重大考题。在此大环境下,财税安全成为企业经营中重要一环,尤为突出…

算法打卡day46|动态规划篇14| Leetcode 1143.最长公共子序列、1035.不相交的线、53. 最大子序和

算法题 Leetcode 1143.最长公共子序列 题目链接:1143.最长公共子序列 大佬视频讲解:1143.最长公共子序列视频讲解 个人思路 本题和718. 最长重复子数组很相像,思路差不多还是用动态规划。区别在于这题不要求是连续的了,但要有相对顺序 解…

PHP婚恋小程序开发源码支持微信+公众号+APP

随着社会的发展和人们生活节奏的加快,传统的相亲方式已经不能满足现代人的需求。在此背景下,有人想到通过线上小程序的方式来满足更多的人进行相亲,所以在此情况下,婚恋相亲小程序由此出现。婚恋相亲小程序的功能有会员功能&#…

MobX进阶:从基础到高级特性全面探索

MobX 提供了丰富的高级特性,包括计算属性、反应式视图、中间件、异步流程控制、依赖注入和动态 observable 、在服务端渲染和 TypeScript 支持方面提供了良好的集成。这些特性进一步增强了 MobX 在状态管理方面的灵活性和可扩展性,使其成为一个功能强大、易于使用的状态管理解决…