0 解析几何知识, 点到平面的距离
image.png如图, 假设一个平面 , 平面外一点 , 在平面上的投影为, 求点到平面的距离即求
我们可以知道平面的法向量为, 则这个法向量对应的单位向量
假设平面上任意一点 , 则满足
点 到点 构成的向量
所以即为在法向量方向上的投影, 即与单位法向量的点乘的结果.(这里取了个绝对值, 因为距离只能为正, 避免了向量方向问题的干扰)
其中与点相关的变量都可以用式替换
所以合并式可得:
如果用矩阵来表示, 则我们取
则式(0.4)可以写为
即为L2范式(L2 norm), 就是平方和之后开根号
1 SVM基本问题描述和解决思路
基本问题:
假设有两个类别的数据,
其中
我们试图找到一个分隔平面(超平面) (这里就是的一个变体)
使得
- 离 分隔平面最近的点 到 分隔平面 的距离最大
- 所有点都能被正确分类
目标1: 距离最大
根据之前的预备知识, 我们知道任意一点到平面的距离为(李航的书说是"几何距离")
我们要求分隔平面两边的点都满足条件2: 距离分隔平面的距离最大
所以我们的求解目标是
目标2: 正确分类
同时我们希望能满足条件1, 即所有点能被正确分类
因为
- 如果是正确分类的话, 所有类别为+1 的点都会在平面的上方, 类别为-1 的点都会在平面的下方.
- 在平面上方的点满足 , 在平面下方的点满足
- 所以如果能正确分类就有:
SVM的求解问题的数学表达
翻译一下:
- 找到距离平面最近的一个点, 其距离:
- 把这个距离乘以2, 就是间隔了:
- 把分隔平面挪动翻转一下, 看看是不是能扩大这个间隔:
求解目标:
2 如何简化这个问题: 转换为凸二次规划问题
通过把原问题构建成凸二次规划问题来进行求解, 因为凸二次规划可解
凸二次规划问题:
- 目标函数是凸二次函数: (关于的二次函数)
- 约束是线性约束:
现在我们的目标就是, 把原问题凑成凸二次规划问题
目标函数的变换
原问题的目标函数为:
变换思路
- 因为求解目标是 , 所以这一项(即变量)要想办法忽略掉
- 目标函数为一个二次函数, 原函数里面其实隐含了一个二次函数:
- 所以这一项有点没有用, 我们需要想办法忽略它
工具:
-
我们发现一个事实, 如果把等比例放大/缩小, 式(1.1)描述的问题不变:
证明
假设一个系数, 使得放大为,
则式(1.1)变为:
其中目标函数 (分母分子同乘一个r, 抵消了)
约束目标(不等式两边同除一个正数, 不等式仍然成立) -
这个就是PQ和平面法向量点乘的结果,这个结果要除以法向量的模长才是几何间隔(我们的问题要求几何间隔满足一定条件)。所以如果我们只是变换法向量的长度的话,因为无论如何都会除以法向量长度,所以对于原问题并没有任何影响(式(1.1)描述的问题不变)。
变换过程
目标函数的变换
- 我们假设所有的都乘上一个系数r,我们证明了乘上这个系数与否不影响问题的描述
- 于是我们总能找到一个,使得, 这样的话原问题的目标函数可以写为
- 我之前一直迷惑于这个怎么处理的,后来想起来系数和问题的求解无关,因为这是个凸二次函数嘛,想想抛物线的形状,无论系数怎么改变抛物线最低点的值都会出现在固定的位置(系数和开口大小相关),所以可以直接忽略系数: 求解等价于求解
- 到这一步, 我们的目标函数变化过程为:
约束条件的变换
- 接下来看约束条件的变化, 原问题的约束条件为: , 由于之前对于的变换引入了一个新的约束条件:
- , 我们可以视为, 在这里, 的作用是对施加限制, 所以我们可以换个思路, 直接对施加限制: , 等价于
- 所以新的约束条件为: 且 , 因为的原因, 所以 (分类正确的条件下, 这两个式子都能保证>0(分类正确意味着点不能再分隔平面上, 所以绝对值也不可能等于0)), 所以这两个约束条件可以合并为一个:
变换过程的公式推导
原问题为:
找到个系数使得 ,(注意现在也是目标函数之一了)
化简目标函数, 凑二次函数:
于是现在的问题为:
转换约束条件, 把关于的约束条件转变成只与相关(目标函数中的也没了)
继续转换, 并合并两个约束条件
(这段变换其实是我整个SVM里面一开始最不能理解的地方, 我找到的教材都只是说了一句: 因为缩放并不影响原问题, 所以我们就能得出, 之类的解释(包括<统计学习方法>也是类似的跳跃式证明). 我数学太渣真的无法自己就这样接受这么跳跃的证明, 于是想了好久才想出了一个可以自己接受的证明方法. 不确保一定正确, 希望有人能指出错误)
3 通过构造一个新函数, 合成目标函数和约束: 拉格朗日函数
在利用二次凸优化构建了一个新的等价问题之后, 如何解? 现在的思路是把目标函数和约束合成为一个式子, 通过求新式子的最值, 便是原问题的最值
这个方法称为: 拉格朗日函数
拉格朗日函数求解的条件
-
如果一个带约束优化问题有诸如一下的形式:
-
并且连续可微
则可以将原问题转换为一下新问题
能进行这样转换的原因
为了能证明新得到的拉格朗日函数是原问题的变形(即拉格朗日函数能变回原问题), 我们最好把 和 原问题中的约束条件放在一起看,
并且时刻记住: 因为求的是, 所以 对有最大值, 对有最小值
于是我们有如下的假设:
- 如果不满足条件, 即: 中的 这一项, 最大值为, 导致, 无解.
- 如果 满足条件, 即: 中的 这一项, 因为, 所以最大值为(正数乘以负数结果仍为负数), 有可能有解
- 如果不满足条件, 即: 中的 这一项, 因为并没有约束条件约束, 所以可以取任意值, 即, 导致, 无解.
- 如果满足条件, 即: 则, 可能有解
我们可以组合假设2和假设4, 即:
如果 满足, 且满足, 则
所以此时 , 朗格朗日函数变换回原问题
把凸二次函数问题转换成拉格朗日函数
- 替换为 所以有:
- 替换为
- 替换为: 把原约束的左边移到了右边而已
- 因为原凸二次函数问题中没有类似的约束, 所以直接忽略这一项
- 原凸二次函数问题变为:
4 通过对偶问题解拉格朗日函数
为什么要转成对偶问题:
求解拉格朗日函数的极值的, 由于求极值的运算是从内向外的. 每次运算需要先算, 而这个作为新引入的变量, 只能通过计算所有值来找到最值.
而每次求得一个新的, 我们就要求一次的最值, 所以这样非常耗时麻烦
但是如果能先求, 每次找到一个新的后就不用再计算了.
对偶问题的转换
只要原问题满足KKT+Slater条件, 我们便可以交换求最大值和最小值的顺序:
KKT条件
- 主问题可行:
- 对偶问题可行:
- 互补松弛:
- (统计学习方法上面的条件)最优解处对偏导是0:
Slater条件
当主问题为凸优化问题, 即 和 为凸函数, 为仿射函数, 且可行域中至少有一点使不等式约束严格成立时, 对偶问题等价于原问题.
对偶问题的证明
原问题为, 对偶问题为, <统计学习方法>写的证明终于理解了, 这里我做一下注释(也把符号统一为我这里使用的符号):
先假设,(D=dual problem对偶问题)
, (P=prime problem原问题)
所以可知对任意 都有
因为 是对求最小值, 是对求最大值, 所以最小值一定小于大于最大值
即对任意 都有
这里的"任意"很重要, 下一步的证明的基础就是这个"任意"
因为原问题和对偶问题都有最优解, 所以:
因为我们有: 对任意 都有 , 所以就算取的最大值和 的最小值, 仍然要满足 , 所以成立
相当于:
求解SVM, 得到最简单的计算式
因为我们之前将原问题简化又简化了, 所以求解就变得很简单.
只要对分别求偏导, 然后找到偏导等于0的时候, 这时候的极值就是最优解
然后带入拉格朗日函数的对偶形式里面:
就有
SVM的最朴素算法(线性可分支持向量机算法)
<统计学习方法>
P106 算法7.2
网友评论