机器学习之SVM支持向量机

news2024/12/24 21:05:59

目录

经典SVM

软间隔SVM

核SVM

SVM分类器应用于人脸识别

SVM优点

SVM缺点 


经典SVM

支持向量机(Support Vector Machine,SVM)是一种二分类模型,其基本思想是在特征空间中找到一个最优的超平面,使得正负样本点到该超平面的距离最大化,从而实现对样本的分类。

软间隔SVM

核SVM

SVM分类器应用于人脸识别

经典SVM为二分类模型,对于多分类模型,可以通过以下两种方法实现:

①One-vs-One(OVO):将每个类别之间的所有可能组合都训练一个二元分类器,然后通过投票或者加权投票来决定最终的分类结果。

②One-vs-All(OVA):将一个类别作为正例,其余所有类别作为负例,训练一个二元分类器,然后重复这个过程,直到每个类别都有一个分类器。最后通过投票或者加权投票来决定最终的分类结果。

对于人脸识别,SVM是用来分类的,我们可以使用像PCA、LDA、LPP、NPE等降维算法先进行数据降维再分类。

 SVM二分类代码,即文章开头的图片示例matlab代码:

% 生成随机数据
X = [randn(20,2)-2; randn(20,2)+2]; % 生成20个标签为-1的点和20个标签为1的点,分别在(-4,-4)和(4,4)的区域内
Y = [-1*ones(20,1); ones(20,1)]; % 将标签存入列向量y中

% 拟合SVM模型
svmModel = fitcsvm(X,Y); % 拟合线性SVM模型

% 绘制决策边界
w = svmModel.Beta; % 获取模型的权重向量w
b = svmModel.Bias; % 获取模型的偏置项b
a = -w(1)/w(2); % 计算决策边界的斜率
xx = linspace(-5,5); % 生成x坐标
yy = a*xx - b/w(2); % 计算决策边界的y坐标
margin = 1/sqrt(sum(w.^2)); % 计算间隔边界的宽度
yy_down = yy - sqrt(1+a^2)*margin; % 计算下界的y坐标
yy_up = yy + sqrt(1+a^2)*margin; % 计算上界的y坐标

% 绘制数据点和支持向量
figure; % 创建新的图形窗口
gscatter(X(:,1),X(:,2),Y,'br','x+'); % 绘制数据点,标签为-1的点用蓝色表示,标签为1的点用红色表示
hold on; % 将图形保持在当前状态,以便绘制其他图形
plot(xx,yy,'k-'); % 绘制决策边界
plot(xx,yy_down,'k--'); % 绘制间隔边界下界
plot(xx,yy_up,'k--'); % 绘制间隔边界上界
plot(svmModel.SupportVectors(:,1),svmModel.SupportVectors(:,2),'go','MarkerSize',10); % 绘制支持向量,用黑色圆点表示
axis([-5 5 -5 5]); % 设置坐标轴范围
legend('Class A','Class B','Decision boundary','Margin','Margin','Support vectors'); % 设置图例
hold off; % 关闭当前图形的保持状态,以便绘制其他图形

人脸识别多分类,使用OVO模式训练SVM模型,构建标签矩阵后进行模型训练,然后将数据写入excel表格,我这里的代码例子是先用PCA进行降维的,所以写入PCA.xlsx文件中。

halfDataNumber=pictureNumber/2;
Y=zeros(halfDataNumber,1);
for i=1:halfDataNumber
    Y(i)=floor((i-1)/testNumber)+1;
end

for dimension=5:5:160
    egienvector=egienvectors(:,1:dimension);
    trainDataTemp=egienvector'*trainData;
    testDataTemp=egienvector'*testData;
    right=0;
    model=fitcecoc(trainDataTemp',Y);
    YPredicted=predict(model,testDataTemp');
    for i=1:halfDataNumber
        if Y(i)==YPredicted(i)
            right=right+1;
        end
    end
    rate=right/halfDataNumber;
    SVMresult=[SVMresult,rate];
end

X=5:5:160;
plot(X,SVMresult);
writematrix(SVMresult,'PCA.xlsx');

SVM优点

优点:

  1. 高效性:SVM在处理高维度数据和样本数量较少的情况下表现出色,因为它只关注支持向量,而不受非支持向量的影响。
  2. 可解释性:SVM提供了对分类结果的良好解释能力。支持向量可以帮助我们了解决策边界及分类结果的原因。
  3. 鲁棒性:SVM对于处理输入空间中的噪音和异常值具有较好的鲁棒性。由于它的决策函数只依赖于支持向量,所以局部的扰动并不会对整体模型产生很大影响。
  4. 泛化能力:SVM通过最大化间隔来选择最优决策边界,从而提高了模型的泛化能力。这种特性使得SVM在处理未见过的数据时表现较好。

SVM缺点 

缺点:

  1. 参数调优困难:SVM中的核函数和正则化参数需要事先进行合理设置,而且对于不同的问题,最优的参数往往是不同的,因此调优可能需要耗费大量的时间和计算资源。
  2. 计算复杂度高:当样本量很大时,SVM的计算复杂度会显著增加,尤其是在使用非线性核函数时。这可能导致训练时间较长,并且在大规模数据集上的应用受到限制。
  3. 对缺失数据敏感:SVM对于缺失数据较为敏感,因为它主要依赖于支持向量,如果包含缺失值的样本成为支持向量,则可能会影响模型的性能。
  4. 难以处理多分类问题:原始的SVM算法是二分类算法,要将其扩展到多类别问题,通常需要借助一些技巧,如一对多(One-vs-Rest)或一对一(One-vs-One)策略。

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

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

相关文章

数据结构 队列(C语言实现)

绪论 任其事必图其效;欲责其效,必尽其方。——欧阳修;本篇文章主要写的是什么是队列、以及队列是由什么组成的和这些组成接口的代码实现过程。(大多细节的实现过程以注释的方式展示请注意查看) 话不多说安全带系好&…

Python3,关于请求重试,这次requests库给安排的明明白白。

requests库重试请求 1、引言2、requests库2.1 安装2.2 代码实例2.2.1 重试次数设置2.2.2 重试条件设置2.2.3 超时时间设置 3、总结 1、引言 小屌丝:鱼哥, 你看这是啥? 小鱼:我瞅瞅… 小屌丝:鱼哥,你这眼神…

【计算机视觉】Fast Segment Anything 安装步骤和示例代码解读(含源代码)

文章目录 一、导读二、安装步骤2.1 将存储库克隆到本地2.2 创建 conda 环境2.3 安装软件包2.4 安装 CLIP2.5 下载权重文件2.6 开始使用2.6.1 Everything mode2.6.2 Text prompt2.6.3 Box prompt (xywh)2.6.4 Points prompt 三、示例代码 一、导读 论文地址: https:…

服务器配置与操作

服务器配置与操作 一、连接远程服务器 推荐用xshell 或者 finalshell 或者 winSCP 或者 FileZilla xshell下载地址:https://xshell.en.softonic.com/ 二、服务器配置 2.1 安装JDK 2.1 方法一:在线安装 yum list java* yum -y install java-1.8.0-ope…

【Django | 爬虫 】收集某吧评论集成舆情监控(附源码)

🤵‍♂️ 个人主页: 计算机魔术师 👨‍💻 作者简介:CSDN内容合伙人,全栈领域优质创作者。 文章目录 一、爬取帖子、二级评论二、构建数据表三、并入项目1. spider代码2. view视图代码3. 优化后台界面3. urls路由 四、定…

第二十三章Java二维数组详解

一、创建二维数组 在 Java 中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java 并不直接支持二维数组,但是允许定义数组元素是一维数组的一维数组,以达到同样的效果。声明二维数组的语…

编程规范-控制流程、错误和异常处理

前言: \textcolor{Green}{前言:} 前言: 💞这个专栏就专门来记录一下寒假参加的第五期字节跳动训练营 💞从这个专栏里面可以迅速获得Go的知识 今天的笔记是对编程规范的补充,对控制流程、错误和异常处理进行…

Ansys Zemax | 内窥镜物镜系统初始结构的优化提升(下)

系统性能提升 根据上篇的内窥镜系统分析,我们可以从四个方面对内窥镜物镜系统进行优化:元件间距、圆锥系数、MTF 值以及畸变值。点击优化-评价函数编辑器以设置具体的评价函数。(联系我们获取文章附件) 首先,用三个 CO…

NXP i.MX 8M Plus工业开发板硬件说明书--下册( 四核ARM Cortex-A53 + 单核ARM Cortex-M7,主频1.6GHz)

前 言 本文档主要介绍创龙科技TLIMX8MP-EVM评估板硬件接口资源以及设计注意事项等内容。 创龙科技TLIMX8MP-EVM是一款基于NXP i.MX 8M Plus的四核ARM Cortex-A53 单核ARM Cortex-M7异构多核处理器设计的高性能工业评估板,由核心板和评估底板组成。ARM Cortex-A5…

【AndroidUI设计】Bottom Navigation Activity中Fragment(碎片)的添加和下层导航图标的修改

文章目录 一、引言二、设计1、添加Fragment&#xff08;1&#xff09;确认需求&#xff08;2&#xff09;创建 <1> 方法一&#xff1a;借助工具快速生成 <2> 方法二&#xff1a;视图&#xff08;图层&#xff09;工具 <3> 方法三&#xff1a;手动…

知网G4《语数外学习》简介及投稿邮箱

知网G4教育专刊《语数外学习》简介及投稿邮箱 《语数外学习》全新改版&#xff0c;分别针对初中三个不同年级&#xff0c;每本仍然兼顾语数外三个学科。改版后的《语数外学习》将密切关注课改和中考改革的进程&#xff0c;与教材同步&#xff0c;在帮中学生朋友释疑疑惑、提高…

DOTA-PEG3-azide,1428146-79-5,DOTA三聚乙二醇叠氮,试剂相关研究说明

DOTA-PEG3-azide&#xff0c;DOTA PEG3 N3&#xff0c;DOTA三聚乙二醇叠氮产品结构式&#xff1a; 产品规格&#xff1a; 1.CAS号&#xff1a;1428146-79-5 2.分子式&#xff1a;C24H44N8O10 3.分子量&#xff1a;604.66 4.包装规格&#xff1a;白色固体 &#xff0c;1g、5g、1…

数据库性能测试

目录 前言&#xff1a; 1.引入数据库驱动包 2.添加数据库配置元件 3、JDBCRequest参数化 4、Variablesnames参数使用方法&#xff1a; 前言&#xff1a; 数据库性能测试是测试数据库系统在各种条件下的性能和稳定性的过程。它可以帮助测试人员识别数据库系统的性能瓶颈&a…

30余名「实在RPA·数字员工」在纳爱斯诞生,在618中服务千万消费者!

积水成渊&#xff0c;聚沙成塔&#xff01;谁在世界数字化大势中不断变革自己&#xff1f; 长期蝉联“中国品牌价值评价”日化行业首位&#xff0c;问鼎中国工业“奥斯卡”大奖的“大国品牌”纳爱斯——当仁不让&#xff01; 纳爱斯是日化行业领军企业&#xff0c;业务覆盖家…

SpringBoot整合MybatisPlus 自动生成controller、mapper、entity、service

首先创建SpringBoot项目 选择依赖 把application的后缀改为.yml&#xff0c;方便些。 pom.xml&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w…

一次完整的性能测试,测试人员需要做什么

目录 前言&#xff1a; 一、 规范性能测试实施流程的意义 二、 性能测试实施流程 1. 需求调研阶段 2. 测试准备阶段 3. 测试执行阶段 4. 测试报告阶段 5. 测试总结阶段 前言&#xff1a; 进行一次完整的性能测试需要经过多个阶段&#xff0c;包括需求分析、测试计划编…

OpenStack(3)--vxlan网络实战

目录 一、ML2配置文件 二、上传cirros镜像 三、创建vxlan10网络 四、创建实例/同vxlan通信测试 五、不同vxlan通信测试 5.1 新建vxlan11 5.2 新建路由/添加路由接口 5.3 不同vxlan通信测试 5.4 qemu-vnc报错 六、深度剖析vxlan 七、认识 Bridge br-ex、Bridge br-in…

「一本通 3.2 练习 6」汽车加油行驶

目录 第一步&#xff0c;二维转一维&#xff08;此步仅为方便&#xff0c;可以省略&#xff09; 第二步&#xff0c;建边&#xff08;啥都行&#xff0c;只要死不了&#xff09; 第三部&#xff0c;bfs&#xff08;你要dfs也行&#xff09; 第一步 第二步 第三步 可CA呢…

蓝桥杯专题-试题版-【01字符串】【2n皇后问题】【A+B问题】【Fibonacci数列】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

ECS 简略版说明一:Entities and components

目录 Entities and components Worlds and EntityManagers Archetypes Chunks Queries Entity IDs IComponentData Managed IComponentData components DynamicBuffer components Aspects Allocator overview Allocator.Temp Allocator.TempJob Allocator.Persis…