网站首页 > 技术文章 正文
支持向量机(Support Vector Machine,SVM)属于有监督学习模型,主要用于解决数据分类问题。通常SVM用于二元分类问题,对于多元分类可将其分解为多个二元分类问题,再进行分类,主要应用场景有图像分类、文本分类、面部识别和垃圾邮件检测等领域。本次分别介绍支持向量机模型和原理以及支持向量机的应用过程。
一、支持向量机模型
1、支持向量机
支持向量机在高维或无限维空间中构造超平面或超平面集合,将原有限维空间映射到维数高得多的空间中,在该空间中进行分离可能会更容易。它可以同时最小化经验误差和最大化集合边缘区,因此它也被称为最大间隔分类器。直观来说,分类边界距离最近的训练数据点越远越好,因为这样可以缩小分类器的泛化误差。
2、模型基本思想
- 以一个二元分类问题为例讲解模型原理。首先假设有两类数据,如图需要找出一条边界来将两类数据分隔开来。
- 下图中列出一些可行的分隔方式。在当前的数据集的条件下,三种分隔方式都是可行的,我们该如何做选择?
- 一般说来,需要选择的是具有较强分类能力的直线,有较稳定的分类结果和较强的抗噪能力,比如在数据集扩展之后如下图所示。在这三种分隔方式中,b的分隔效果更好。
- 找到最优分类数据的分界线,使得对样本数据的分类效果更好的方法就是要尽可能地远离两类数据点,即数据集的边缘点到分界线的距离d最大,这里虚线穿过的边缘点称作支持向量,分类间隔为2d。如下图所示。
二、支持向量机原理
1、SVM是从线性可分情况下的最优分类面发展而来的
可以将上述求最优平面的问题转化为对偶问题:
2、核函数
- 支持向量机通过线性变换A(x)将输入空间X映射到高维特征空间Y,如果低维空间存在函数K,x,y∈X,使得K(x,y)=A(x)·A(y),则称K(x,y)为核函数。核函数方法可以与不同的算法相结合,形成多种不同的基于核函数的方法,常用的核函数有:
–线性核函数
–多项式核函数
–径向基核函
–Sigmoid核
- 线性核函数:
线性核函数(Linear Kernel)是最简单的核函数,主要用于线性可分的情况,表达式如下:
K(x,y) = x·y+c
其中c是可选的常数。线性核函数是原始输入空间的内积,即特征空间和输入空间的维度是一样的,参数较少运算速度较快。适用的情景是在特征数量相对于样本数量非常多时。
- 多项式核函数:
多项式核函数(Polynomial Kernel)是一种非稳态核函数,适合于正交归一化后的数据,表达式如下:
其中a是调节参数,d是最高次项次数,c是可选的常数。
- 径向基核函数
径向基核函数(Radial Basis Function Kernel)具有很强的灵活性,应用广泛。与多项式核函数相比参数较少。因此大多数情况下都有较好的性能。径向基核函数类似于高斯函数,所以也被称为高斯核函数。在不确定用哪种核函数时,可优先验证高斯核函数。表达式如下:
其中a2越大。高斯核函数就会变得越平滑,此时函数随输入x变化较缓慢,模型的偏差和方差大,泛化能力差,容易过拟合。a2越小,高斯核函
数变化越剧烈,模型的偏差和方差越小,模型对噪声样本比较敏感。
- Sigmoid核函数
Sigmoid核(Sigmoid Kernel)来源于MLP中的激活函数,SVM使用Sigmoid相当于一个两层的感知机网络,表达式如下:
K(x,y) = tanh(a·x·y+c)
其中a表示调节参数,c为可选常数,一般情况c取1/n,n是数据维度。
三、支持向量机应用
- 支持向量机(SVM)算法比较适合图像和文本等样本特征较多的应用场合。基于结构风险最小化原理,对样本集进行压缩,解决了以往需要大样本数量进行训练的问题。它将文本通过计算抽象成向量化的训练数据,提高了分类的精确率。
- 新闻的分类是根据新闻中与主题相关的词汇来完成的。应用SVM对新闻分类可以划分为五个步骤:
–获取数据集
–将文本转化为可处理的向量
–分割数据集
–支持向量机分类
–分类结果显示
- 主成分分析(Principal Component Analysis , PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的方差最大,以此使用较少的维度,同时保留较多原数据的维度
- 基于支持向量机和主成分分析的人脸识别,主成分分析可以从多种特征中解析出主要的影响因素,使用较少的特征数量表示整体。PCA的目标就是找到方差大的维度作为特征。本案例可以被划分为六个步骤:
–获取数据集
–将图片转化为可处理的n维向量
–分割数据集
–PCA主成分分析,降维处理
–支持向量机分类
–查看训练后的分类结果
- 线性不可分的情况
猜你喜欢
- 2024-11-19 零基础学习!数据分析分类模型「支持向量机」
- 2024-11-19 机器学习 | 算法笔记(三)- 支持向量机算法以及代码实现
- 2024-11-19 我以前一直没有真正理解支持向量机,直到我画了一张图
- 2024-11-19 研一小姑娘分享机器学习之SVM支持向量机
- 2024-11-19 [机器学习] sklearn支持向量机
- 2024-11-19 支持向量机
- 2024-11-19 初探支持向量机:用大白话解释、原理详解、Python实现
- 2024-11-19 支持向量机的核函数
- 2024-11-19 初探支持向量机模型
- 2024-11-19 如何使用支持向量机学习非线性数据集
你 发表评论:
欢迎- 11-19零基础学习!数据分析分类模型「支持向量机」
- 11-19机器学习 | 算法笔记(三)- 支持向量机算法以及代码实现
- 11-19我以前一直没有真正理解支持向量机,直到我画了一张图
- 11-19研一小姑娘分享机器学习之SVM支持向量机
- 11-19[机器学习] sklearn支持向量机
- 11-19支持向量机
- 11-19初探支持向量机:用大白话解释、原理详解、Python实现
- 11-19支持向量机的核函数
- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)