SVM
支持向量机SVM和神经网络
-
辉煌
在十年前(06-07年之前),支持向量机SVM的地位相当于现在的深度学习
原因就是支持向量机SVM是唯一能达到工业界性能要求,并且机器学习研究者和统计学习研究者能够明白他背后模型原理的一个算法。 -
没落
2011年开始,有了大量的数据,并且硬件水平有了进步,神经网络的模型复杂度能够无限的增长,还能够支持并行。
SVM的模型复杂度是0(N3),在大数据时代SVM
支持向量机SVM和神经网络
- 辉煌
-
在十年前(06-07年之前),支持向量机SVM的地位相当于现在的深度学习
原因就是支持向量机SVM是唯一能达到工业界性能要求,并且机器学习研究者和统计学习研究者能够明白他背后模型原理的一个算法。
- 没落
-
2011年开始,有了大量的数据,并且硬件水平有了进步,神经网络的模型复杂度能够无限的增长,还能够支持并行。
SVM的模型复杂度是0(N3),在大数据时代,就很难跑完大数据任务。因此,SVM逐渐被神经网络取代了?
是否有必要再学习支持向量机SVM?
SVM已经过时,有没有必要再去学习?
SKlearn已将把各种模型都已经封装好了,调用就行了,还有没有必要再去学习这些算法?
重要的是发现问题,解决问题的一个过程?推导过程很重要
如果关注KKT,凸优化和SVM本质并没有什么关系。
每一个深度学习算法都会有大量的变种,在这种情况下应该学习如何能通过发现一个问题,改进算法,解决一个问题,这种思路才是机器学习的精髓。
看懂了原理之后,面对的是无数变化的场景,如何从场景中发现问题,解决问题
支持向量机SVM简介
NIPS机器学习的一个顶级会议
SVM(support vector machines)确实可以看做一个特殊的神经网络?
背景
监督学习的任务就是找出一个决策边界出来。
在训练集中有正负样本,监督学习就是学习出来一个决策边界。不同的监督学习算法就是为了学习出来不同的决策边界,然后去做预测。
key idea1
我们的目标是给定了一个训练集,如何找到一个决策边界(超平面),使得正负样本正确区分, 我们可以找到很多的决策边界(超平面)将正负样本正确区分,但是哪一个才是最符合我们要求的?
存在多个超平面将两类样本分开
从直觉就发现,加粗的一个决策边界更好一点,毕竟距离两遍都有点距离,模型的泛化能力会好一点。换句话说,这条边界稍微偏了一点点,不会对分类结果产生太大影响。
w是法向量,u是任意点的向量,w.u是w和u的点积,即u在w上的投影。
如果w.u>c,则分到负
如果w.u<c,则分到正
c是常数,即原点到决策边界的距离。
因此,这个决策函数可以是w.x+b>0
(b应该是负值)
SVM的终极目标就是学习出来(找到)w是多少,b是多少
Key Idea2
SVM的目标是给定了一个训练集,如何找到一个决策边界(超平面),使得正负样本正确区分,并且决策边界(超平面)距离每个样本点距离(间隔)足够大。
- 无间隔的决策边界(超平面)
-
w.x+b>=0 正样本
w.x+b<=0 负样本
- 有间隔的决策边界(超平面) w.x+b>=1 正样本
-
w.x+b<=-1 负样本
-
当x为正时,
=1
当x为负时,
=-1
- 把两个约束条件简化成一个
-
前面是间隔,后面的1是人为设定的阈值
等号成立的时候,就是表明样本点在决策边界傍边的间隔上
这就找到了第一个约束条件
idea3
- 求出x1与x2的间隔
- x1与x2满足约束条件
-
- x1是负样本,
-
=-1,w=1,则x1=1+b
-
- x2是正样本,
-
=1,w=1,则x2=1-b
-
- 则可以得出如下公式:
-
- 结论
-
间隔大小和数据集没有任何关系,只要知道了法向量w,就可以顺利求出间隔大小.这是一个神奇的结论。
idea4 最大化间隔
SVM的目标是给定了一个训练集,如何找到一个决策边界(超平面),使得正负样本正确区分,并且决策边界(超平面)距离每个样本点距离(间隔)足够大。
- 所以,就是求得
- 等价于
- 等价于
- 等价于
- 这么转化纯粹是为了方便计算
- 计算任务就变成了,寻找一个满足下列约束的w
-
s.t.
- 局限性
-
如果只做到这一步,这是一个典型的线性支持向量机(线性SVM),推导不到核方法去。
idea5 如何优化最大间隔
- 拉格朗日把一个带约束条件的函数极值的算法,转变成一个不带约束条件函数极值算法。 找到一个alpha值,使得L最大
-
未知变量是阿尔法,w和b
分别对w和b求偏导,令偏导等于0
- 对alpha求偏导,令其等于零
- 对b求偏导 ,令其等于零
- 因此,w可以看做支持向量的线性组合
-
坐标提升 SMO
把
带入L,得
则L的值取决于
u是一个待预测的样本点,则
则alpha大部分值是0,极少有值,有值得alpha对应的x叫做支持向量
怎么求alpha才是KKT,SMO,QP等等要解决的问题
核方法
大部分分类问题都是非线性的,很难找到一条直线把他们区分开
可以经过转换,使他转变成线性问题
核方法:
变换前的点乘:
只需要知道变换后的点乘:
,就很难跑完大数据任务。因此,SVM逐渐被神经网络取代了?
是否有必要再学习支持向量机SVM?
SVM已经过时,有没有必要再去学习?
SKlearn已将把各种模型都已经封装好了,调用就行了,还有没有必要再去学习这些算法?
重要的是发现问题,解决问题的一个过程?推导过程很重要
如果关注KKT,凸优化和SVM本质并没有什么关系。
每一个深度学习算法都会有大量的变种,在这种情况下应该学习如何能通过发现一个问题,改进算法,解决一个问题,这种思路才是机器学习的精髓。
看懂了原理之后,面对的是无数变化的场景,如何从场景中发现问题,解决问题
支持向量机SVM简介
NIPS机器学习的一个顶级会议
SVM(support vector machines)确实可以看做一个特殊的神经网络?
背景
监督学习的任务就是找出一个决策边界出来。
在训练集中有正负样本,监督学习就是学习出来一个决策边界。不同的监督学习算法就是为了学习出来不同的决策边界,然后去做预测。
key idea1
我们的目标是给定了一个训练集,如何找到一个决策边界(超平面),使得正负样本正确区分, 我们可以找到很多的决策边界(超平面)将正负样本正确区分,但是哪一个才是最符合我们要求的?
存在多个超平面将两类样本分开
从直觉就发现,加粗的一个决策边界更好一点,毕竟距离两遍都有点距离,模型的泛化能力会好一点。换句话说,这条边界稍微偏了一点点,不会对分类结果产生太大影响。
w是法向量,u是任意点的向量,w.u是w和u的点积,即u在w上的投影。
如果w.u>c,则分到负
如果w.u<c,则分到正
c是常数,即原点到决策边界的距离。
因此,这个决策函数可以是w.x+b>0
(b应该是负值)
SVM的终极目标就是学习出来(找到)w是多少,b是多少
Key Idea2
SVM的目标是给定了一个训练集,如何找到一个决策边界(超平面),使得正负样本正确区分,并且决策边界(超平面)距离每个样本点距离(间隔)足够大。
- 无间隔的决策边界(超平面)
w.x+b>=0 正样本
w.x+b<=0 负样本 - 有间隔的决策边界(超平面) w.x+b>=1 正样本
w.x+b<=-1 负样本
当x为正时,=1
当x为负时, =-1- 把两个约束条件简化成一个
前面是间隔,后面的1是人为设定的阈值
等号成立的时候,就是表明样本点在决策边界傍边的间隔上
这就找到了第一个约束条件
idea3
- 求出x1与x2的间隔
-
x1与x2满足约束条件
- 结论
间隔大小和数据集没有任何关系,只要知道了法向量w,就可以顺利求出间隔大小.这是一个神奇的结论。
- 结论
idea4 最大化间隔
SVM的目标是给定了一个训练集,如何找到一个决策边界(超平面),使得正负样本正确区分,并且决策边界(超平面)距离每个样本点距离(间隔)足够大。
-
所以,就是求得
-
等价于
-
等价于
-
等价于
-
这么转化纯粹是为了方便计算
-
计算任务就变成了,寻找一个满足下列约束的w
- 局限性
如果只做到这一步,这是一个典型的线性支持向量机(线性SVM),推导不到核方法去。
idea5 如何优化最大间隔
-
拉格朗日把一个带约束条件的函数极值的算法,转变成一个不带约束条件函数极值算法。 找到一个alpha值,使得L最大
未知变量是阿尔法,w和b
分别对w和b求偏导,令偏导等于0 -
对alpha求偏导,令其等于零
- 对b求偏导 ,令其等于零
-
因此,w可以看做支持向量的线性组合
u是一个待预测的样本点,则
则alpha大部分值是0,极少有值,有值得alpha对应的x叫做支持向量
怎么求alpha才是KKT,SMO,QP等等要解决的问题
核方法
大部分分类问题都是非线性的,很难找到一条直线把他们区分开
可以经过转换,使他转变成线性问题
核方法:
变换前的点乘:
只需要知道变换后的点乘: