当前位置: 首页 > news >正文

SVM单类异常值检测

SVM是一种广泛使用的分类器,通常用于二分类或多分类问题。然而,在异常点检测的场景中,我们通常会将数据视为一个类别(即正常数据点),并尝试找到那些与正常数据点显著不同的点(即异常点)。这可以通过One-Class SVM(单类支持向量机)来实现。

SVM单类异常值检测代码获取戳此处代码获取戳此处

One-Class SVM的原理是寻找一个超平面,使得正常数据点尽可能地分布在这个超平面的一侧,同时使得超平面与原点(或指定的其他点)之间的距离最大化。这样,那些位于超平面另一侧或远离超平面的点就可以被视为异常点。

具体来说,One-Class SVM会学习一个决策函数,该函数将正常数据点的特征空间映射到一个高维空间中,并在这个高维空间中寻找一个最优超平面。这个超平面会尽可能地将正常数据点与原点分开,同时使得超平面与原点之间的距离最大化。在训练过程中,One-Class SVM会利用核函数(如RBF核、线性核等)将数据映射到高维空间,并在这个空间中寻找最优超平面。

实现步骤

  1. 数据准备:首先,收集并整理好一定量的数据样本,包括各个特征的变量数据。这些数据应该主要是正常数据点,因为我们的目标是找出与这些正常数据点显著不同的异常点。
  2. 数据预处理:对数据进行必要的预处理,如标准化、归一化、降维等。这些步骤可以帮助提高SVM模型的性能,并减少过拟合的风险。
  3. 选择核函数:根据数据的特点和问题的需求,选择一个合适的核函数。常用的核函数包括RBF核、线性核、多项式核等。不同的核函数适用于不同类型的数据和问题。
  4. 训练One-Class SVM模型:使用训练数据来训练One-Class SVM模型。在训练过程中,模型会学习一个决策函数,该函数将正常数据点的特征空间映射到一个高维空间中,并在这个高维空间中寻找一个最优超平面。
  5. 异常检测:将测试数据输入到训练好的One-Class SVM模型中,得到每个测试数据点的决策函数值。根据这些值的大小,可以判断哪些数据点是异常点。通常,那些决策函数值较小的数据点被认为是异常点。

部分代码

%% 导入数据
load('matlab.mat');
X = res(:,1:6); % 特征数据
n = size(X, 1);%% 划分训练集和测试集
rng(1); % 设置随机数种子,以确保结果可重现
train_ratio = 1; % 训练集占比
idx = randperm(n);
X_train = X(idx(1:round(train_ratio*n)), :);%% 数据归一化
[~,ps] = mapminmax(X_train', 0, 1); % 对训练数据进行归一化
X_train_normalized = mapminmax('apply', X_train', ps)'; % 归一化训练数据%% 创建模型
nu = 0.05; % 设置 OCSVM 参数 nu

效果图

http://www.lryc.cn/news/341706.html

相关文章:

  • 前端动画总结
  • 【源码阅读】 Golang中的database/sql库源码探究
  • 什么是容器微隔离 - 容器微隔离技术有哪些
  • (成品论文22页)24深圳杯数学建模A题1-4问完整代码+参考论文重磅更新!!!!
  • ThreeJs模拟工厂生产过程八
  • [Unity实战]热更新如何预防过度裁剪
  • 任务修复实例(8)
  • torch.flatten(x, 1)”和“x.view(x.size(0), -1)”有什么区别?
  • 达梦主从数据库实例恢复
  • JAVA:jsp+springboot 配置maven兼容版本
  • 【Docker】docker部署lnmp和搭建wordpress网站
  • C#装箱拆箱是怎么回事
  • JavaEE 初阶篇-深入了解 Junit 单元测试框架和 Java 中的反射机制(使用反射做一个简易版框架)
  • 人力资源管理新视野:挖掘员工潜力,共筑卓越未来
  • rust语言tokio库spawn, blocking_spawn等的使用
  • Day_1
  • 2024.05.06作业
  • 什么是抖音橱窗?它和抖音小店有什么区别?普通人更适合做哪个?
  • spring高级篇(九)
  • 用wordpress建跨境电商独立站的5大优势
  • Windows中安装的PostgreSQL 数据库如何重启
  • Remix框架实现 SSR
  • 如何快速开发项目,提高开发效率
  • 面试笔记——多线程使用场景
  • 02.0 基于Verilog控制LED灯每秒钟闪烁一次
  • C语言创建文件夹和多级目录
  • 2024.5.6
  • mybatis配置获取自增主键
  • 完整、免费的把pdf转word文档
  • 使用 Lua 协程模拟 Golang 的 go defer 编程模式