1. 简介
在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别、分类(异常值检测)以及回归分析。SVM算法中,我们将数据绘制在n维空间中(n代表数据的特征数),然后查找可以将数据分成两类的超平面。SVM一般只能
用
在
二
分
类
问
题
\color{blue}{用在二分类问题}
用在二分类问题,对于多类问题效果不好。
SVM的的学习算法就是求解凸二次规划的最优化算法。SVM学习的
基
本
想
法
是
求
解
能
够
正
确
划
分
训
练
数
据
集
并
几
何
间
隔
最
大
的
分
离
超
平
面
\color{blue}{基本想法是求解能够正确划分训练数据集并几何间隔最大的分离超平面}
基本想法是求解能够正确划分训练数据集并几何间隔最大的分离超平面。对于线性可分的数据集来说,这样的超平面有无穷多个(即感知机),但是几何间隔最大的分离超平面却是唯一的。
SVM 将会寻找可以区分两个类别并且能使间隔(margin)最大的划分超平面。比较好的划分超平面,样本局部扰动时对它的影响最小、产生的分类结果最鲁棒、对未见示例的泛化能力最强。
对于任意一个超平面,其两侧数据点都距离它有一个最小距离(垂直距离),这两个最小距离的和就是间隔。比如下图中两条虚线构成的带状区域就是 margin,虚线是由距离中央实线最近的两个点所确定出来的(也就是由支持向量决定)。但此时 margin 比较小,如果用第二种方式画,margin 明显变大也更接近我们的目标。
2. SVM与KNN区别
KNN分类问题:
确
定
K
值
画
圈
,
离
哪
些
点
较
近
就
分
为
哪
一
类
\color{blue}{确定K值画圈,离哪些点较近就分为哪一类}
确定K值画圈,离哪些点较近就分为哪一类
KNN没有训练过程,基本原理就是找到训练数据集里面离需要预测的样本点距离最近的K个值(距离可以使用比如欧式距离,K的值需要自己调参)来实现分类。
SVM分类问题:
找
决
策
边
界
,
将
数
据
进
行
划
分
\color{blue}{找决策边界,将数据进行划分}
找决策边界,将数据进行划分
SVM需要超平面wx+b来分割数据集(此处以线性可分为例),因此会有一个模型训练过程来找到w和b的值。训练完成之后就可以拿去预测了,根据函数y=wx+b的值来确定样本点x的label,不需要再考虑训练集。对于SVM,是先在训练集上训练一个模型,然后用这个模型直接对测试集进行分类。
参考:
深度学习算法2-SVM的原理
深度学习之SVM
深度学习——SVM
深度学习第四课—SVM