机器学习(一)LR
机器学习(二)SVM
机器学习(三)树模型
机器学习(四)聚类
目录
1、目标函数的由来
2、凸二次规划问题:
3、利用拉格朗日对偶性求解:
4、对偶问题:
(3)对偶间隙:
(4)Slater条件:
(5)强对偶:
总结:
5、outliers离群点:
6、核函数:
7、SMO(sequential minimal optimization)
8、目标函数:
8、判别函数:
总结:支持向量机(SVM)算法
学习链接(很详细):
机器学习算法与Python实践之(二)支持向量机(SVM)初级
机器学习算法与Python实践之(四)支持向量机(SVM)进阶
机器学习算法与Python实践之(四)支持向量机(SVM)实现
支持向量机:Duality 对偶问题
上面文章中提及到的参考文献可以好好看看。
目标函数的由来:两直线间的距离公式;
斯坦福《机器学习》Lesson6感想———1、函数间隔和几何间隔 (这里解释的很好了)
【统计学习方法-李航】:
一个点距离超平面的远近可以表示分类预测的确定程度,在超平面 w·x+b=0 确定的情况下,|w·x+b| 能够相对地表示点 x 距离超平面的远近,而 w·x+b 的符号与类标记 y 的符号是否一致能够表示分类是否正确,所以可用量 y(w·x+b) 来表示分类的正确性及确信度,这就是函数间隔(functional margin)的概念。
对于给定训练数据集 T 和定义超平面(w,b),定义超平面(w,b)关于样本点 的函数间隔为:
,
定义超平面(w,b)关于训练数据集 T 的函数间隔为超平面(w,b)关于 T 中所有样本点的函数间隔之最小值,即
,
函数间隔可以表示分类预测的正确性及确信度,但是选择分离超平面时,只有函数间隔是不够的,因为当我们成比例的改变 w 和 b 的时候,例如变为 2w 和 2b,我们的超平面是不会变的(直线的性质),但是函数函数间隔变了,变成了原来的 2 倍。所以我们需要对分离超平面的法向量 w 加一些约束,如规范化,||w||=1,使得间隔是固定的的,这时候函数间隔就变成了几何间隔(geometric margin)。
函数间隔/||w|| =几何间隔
补充:点到直线距离
凸?凸集是指一个点的集合,其中任意两点的连成一条直线,直线上的点仍然在这个集合内部;
二次规划问题:是一种典型的优化问题,包括凸二次规划和非凸二次规划,在此类问题中,目标函数是变量的二次函数,约束条件是变量的线性不等式。所以SVM的目标函数是一个带约束的二次规划问题—凸优化;
凸函数的局部最优就是全局最优;左边为凸函数;
一是对偶问题更容易求解;二是可以自然引入核函数,解决非线性分类问题;
支持向量机:Duality
(1)原问题为凸函数,那我们的目的就是寻找最优值的下届;
有可能 dual problem 比 primal problem 更容易求解,或者 dual problem 有一些优良的结构(例如 SVM 中通过 dual problem 我们可以将问题表示成数据的内积形式从而使得 kernel trick 的应用成为可能;
(2)目标函数是一个带约束的优化问题,为便于求解,构造拉格朗日函数将目标函数与约束条件结合在一起,先转为无约束优化问题,再将原问题转化为对偶问题,对偶问题的最优值为原问题的下界;可以理解为:胖子中最瘦的那个都比瘦骨精中最胖的那个要胖;就计算上来说先对x求导比较方便;
对偶间隙是指 x 分别为对偶问题和原问题的最优解。
对偶间隙的最大用途是作为算法停止迭代的条件,即如果我们想要保证 f(x) −g(u,v) ≤ ϵ;
有一些情况会同时求解 dual 和 primal problem ,比如在迭代求解的过程中,通过判断 duality gap 的大小,可以得出一个有效的迭代停止条件。
满足Slater条件就是说数据线性可分;而Slater 条件实际上在这里就等价于是存在这样的一个超平面将数据分隔开来,亦即是“数据是可分的”。当数据不可分是,strong duality 不能成立,不过,这个时候我们寻找分隔平面这个问题本身也就是没有意义的了,当然我们可以通过把数据映射到特征空间中来解决不可分的问题;
如果原问题满足Convex的并且满足Slater条件的话,那么Strong duality成立。
(这里只是指出 strong duality 成立的一种情况,并不唯一。如某些非 convex optimization 的问题,strong duality 也成立。)
弱对偶:
强对偶:
强对偶成立的一些性质:假设 和 和分别是 primal problem 和 dual problem 的极值点,相应的极值为 和 ,
由,有
任何满足强对偶的问题都满足KKT条件:
第4个条件叫做 complementary slackness 。显然,如果 ,那么必定有 ;反过来,如果 那么可以得到 。
SVM的目标函数的凸函数,且线性可分,所以是强对偶问题,因为是强对偶,所以满足KKT条件;对于强对偶问题,原问题和对偶问题在最优点处的极值相等;
加惩罚项
总结:离群点的存在,会使我们很难找到一个可将数据分开的超平面因为超平面本身只有少数几个support vector组成;SVM允许数据在一定程度上偏离一下超平面;引入松弛标变量,对应数据允许偏离functio margin的量;C为一个参数,用于控制两项间的权重;加入惩罚项后,化简得到的目标函数与未加惩罚项的一样,只多了一个约束条件;
1、为什么要用核函数?
总结:目标函数化简后是一个内积的形式,如果原始数据是 n 维且不可分,要解决线性不可分的问题我们需要将其映射到高维,就变成了n*n 维,计算复杂度很大,所以引入核函数,如上的二项式核,展开后发现原始特征的内积等价于映射后特征的内积。
2、什么样的函数可以成为有效的核函数?
答:核函数矩阵是对称阵且半正定(充分必要条件);
对称矩阵:;
实对称矩阵:矩阵的元素都是实数,且矩阵的转置等于它本身;
【必要条件】:
且对于任意非零向量 z,都有X'KX≥0,则称 K 为半正定矩阵。
【充分条件】:
Mercer定理表明一个函数是核函数,当且仅当对应的核函数矩阵是半正定的。
Mercer定理: 如果函数K是上的映射(也就是从两个n维向量映射到实数域)。那么如果K是一个有效核函数(也称为Mercer核函数),那么当且仅当对于训练样例,其相应的核函数矩阵是对称半正定的。 |
【参考链接】:支持向量机(三)核函数
3、核函数的分类
总结:对于非线性的情况,SVM 的处理方法是选择一个核函数 ,通过将数据映射到高维空间,然后在低维空间计算出高维空间的点积结果,来解决在原始空间中线性不可分的问题。由于核函数的优良品质,这样的非线性扩展在计算量上并没有比原来复杂多少,这一点是非常难得的。当然,这要归功于核方法——除了 SVM 之外,任何将计算表示为数据点的内积的方法,都可以使用核方法进行非线性扩展。
高斯核之所以能将原始空间映射到无穷维空间,是因为Taylor展开;
SVM中,高斯核为什么会把原始维度映射到无穷多维?
支持向量机:Numerical Optimization
总结:SMO算法就是用来求取最优的拉格朗日乘子;具体方法是:每次迭代选取两个变量,,其余变量作为固定值,根据约束条件,可以将问题转化为二次规划求最值的问题;所以求解非常高效;
补:SMO(序列最小最优化算法):
每一个变量 都对应一个样本点,所以变量的总数等于样本容量 N;思路:如果所有变量都满足 KKT 条件,那么这个最优化问题的解就得到了,因为KKT条件是该优化问题的充分必要条件。否则,选择两个变量,固定其他变量,针对着两个变量构建一个二次规划问题,这个二次规划问题关于这两个变量的解就是原始二次规划问题的解,因为这会使得原始二次规划问题的目标函数值变得更小。子问题有两个变量,一个是违反KKT条件最严重的那一个(外循环),另一个由约束条件自动确定(内循环)。这样,SMO算法将原问题不断地分解为子问题并对子问题求解,从而达到求解原问题的目的。
2. 找第二个点时,需找 最大的 ,因为 已定,所以 也确定了,也就说能使目标函数有足够的下降的 ;
支持向量机算法用来分类;
目标:找到最优超平面最大几何间隔;
方法:通过构造拉格朗日函数将目标函数和约束条件结合起来,因为它是一个带约束的凸二次规划问题(目标函数的二次函数,约束条件是线性不等式);SVM的目标函数的凸函数,且线性可分,所以是强对偶问题,因为是强对偶,所以满足KKT条件;通过对参数w,b求导代入L函数,得到最终的优化目标函数,其中拉格朗日乘子由SMO算法求得(每次迭代固定两个变量,其余作为常量,原问题就可以转为二次函数求极值的问题,高效);b值就是拿落在分隔线上的点来求的(因为在分割线上y=1或者-1嘛,才是等式,在其他地方,都是不等式,求解不了b);对于线性不可分,引入高斯核函数,将数据映射到高维空间,变为线性可分, 再在低维空间求高维空间的点积,从而解决线性不可分的问题;
欢迎大家指错,不尽感谢~
【本系列是根据网上资源和个人见解总结而来的,如需转载请备注原文链接。】