matlab的支持向量机SVM怎么用

发布时间:2022-01-14 10:32:50 作者:iii
来源:亿速云 阅读:375

这篇文章主要介绍“matlab的支持向量机SVM怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“matlab的支持向量机SVM怎么用”文章能帮助大家解决问题。

支持向量机(Support Vector Machine)名字听起来很炫,功能也很炫,但公式理解起来却有眩晕感。所以不用公式来说明SVM的原理,理解SVM有四个关键名词:分离超平面、最大边缘超平面、软边缘、核函数。

分离超平面(separating hyperplane):处理分类问题的时候需要一个决策边界,好象楚河汉界一样,在界这边我们判别A,在界那边我们判别B。这种决策边界将两类事物相分离,而线性的决策边界就是分离超平面。


最大边缘超平面(Maximal Margin Hyperplane):分离超平面可以有很多个,怎么找最好的那个呢,SVM的作法是找一个“最中间”的。换句话说,就是这个平面要尽量和两边保持距离,以留足余量,减小泛化误差,保证稳健性。或者用中国人的话讲叫做“执中”。以江河为国界的时候,就是以航道中心线为界,这个就是最大边缘超平面的体现。在数学上找到这个最大边缘超平面的方法是一个二次规划问题。


软边缘(Soft Margin):但世界上没这么美的事,很多情况下都是“你中有我,我中有你”的混杂状态。不大可能用一个平面完美的分离两个类别。在线性不可分情况下就要考虑软边缘了。软边缘可以破例允许个别样本跑到其它类别的地盘上去。但要使用参数来权衡两端,一个是要保持最大边缘的分离,另一个要使这种破例不能太离谱。这种参数就是对错误分类的惩罚程度C。


核函数(Kernel Function),为了解决完美分离的问题,SVM还提出一种思路,就是将原始数据映射到高维空间中去,直觉上可以感觉高维空间中的数据变的稀疏,有利于“分清敌我”。那么映射的方法就是使用“核函数”。如果这种“核技术”选择得当,高维空间中的数据就变得容易线性分离了。而且可以证明,总是存在一种核函数能将数据集映射成可分离的高维数据。看到这里各位不要过于兴奋,映射到高维空间中并非是有百利而无一害的。维数过高的害处就是会出现过度拟合。


所以选择合适的核函数以及软边缘参数C就是训练SVM的重要因素。一般来讲,核函数越复杂,模型越偏向于拟合过度。在参数C方面,它可以看作是LASSO算法中的lambda的倒数,C越大模型越偏向于拟合过度,反之则拟合不足。实际问题中怎么选呢?用人类最古老的办法,试错。


常用的核函数有如下种类:

Linear:使用它的话就成为线性向量机,效果基本等价于Logistic回归。但它可以处理变量极多的情况,例如文本挖掘。

polynomial:多项式核函数,适用于图像处理问题。

Radial basis,高斯核函数,最流行易用的选择。参数包括了sigma,其值若设置过小,会有过度拟合出现。

sigmoid:反曲核函数,多用于神经网络的激活函数。


最后分别解释“支持向量”和“机”

(1) “机” —— Classification Machine,分类器。

(2) “支持向量” —— 在maximum margin上的这些点就叫支持向量,最后的classification machine的表达式里只含这些“支持向量”的信息


%% 去除花萼的长度、宽度和其中一种鸢尾花

load fisheriris

inds = ~strcmp(species,'setosa');

X = meas(inds,3:4);

y = species(inds);


%% 使用处理后的数据集训练SVM分类器

SVMModel = fitcsvm(X,y);

% 显示类别

disp(SVMModel.ClassNames)


%% 绘制数据的散点图并圈出支持向量

sv = SVMModel.SupportVectors;

figure

gscatter(X(:,1),X(:,2),y)

hold on

plot(sv(:,1),sv(:,2),'ko','MarkerSize',10)

legend('versicolor','virginica','Support Vector')

hold off

matlab的支持向量机SVM怎么用  


使用的数据为MATLAB自带鸢尾花样本

关于“matlab的支持向量机SVM怎么用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

推荐阅读:
  1. 机器学习算法:SVM(支持向量机)
  2. ​matlab中subplot()怎么用?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

matlab svm

上一篇:matlab离散Hopfield神经网络的概念是什么

下一篇:springboot整合quartz定时任务框架的方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》