支持向量机是处理回归问题的可泛化性能最好的,解决过拟合,机器学习中算法精度也是最高的
梯度下降
梯度下降法(Gradient Descent, GD)常用于求解无约束(不跟其他的位置比最近,而是只自己比什么时候数值最小)情况下凸函数(Convex Function)的极小 值,是一种迭代类型的算法,因为凸函数只有一个极值点,故求解出来的极小值点就是函数的最小 值点
最优化问题一般是指对于某一个函数而言,求解在其指定作用域上的全局最小值问题,一般分为以 下三种情况(备注:以下几种方式求出来的解都有可能是局部极小值,只有当函数是凸函数的时候, 才可以得到全局最小值) :
无约束问题:求解方式一般求解方式梯度下降法
等式约束条件:求解方式一般为拉格朗日乘子法
不等式约束条件:求解方式一般为KKT条件(比拉格朗日乘子法的条件要多些)
拉格朗日乘子法
拉格朗日乘子法就是当我们的优化函数存在等值约束的情况下的一种最优化求解方式;其中参数α 被称为拉格朗日乘子,要求α不等于0(如画一个圆相切两弧线时的距离圆心最近的点,圆心固定)(也可以通过弧线与圆的切线方向相同的时候得到拉格朗日乘子α,α就是圆心到弧线的最小距离)
对偶问题(比如把a>b换成b<a的问题)
在优化问题中,目标函数f(x)存在多种形式,如果目标函数和约束条件都为变量x的线性函数,则称 问题为线性规划;如果目标函数为二次函数,则称最优化问题为二次规划;如果目标函数或者约束 条件为非线性函数,则称最优化问题为非线性优化。每个线性规划问题都有一个对应的对偶问题。 对偶问题具有以下几个特性:
1.对偶问题的对偶是原问题;
2.无论原始问题是否是凸的,对偶问题都是凸优化问题;
3.对偶问题可以给出原始问题的一个下界;
4.当满足一定条件的时候,原始问题和对偶问题的解是完美等价的
KKT条件(无法用圆到弧线距离来解决时,用KKT条件,比如直线上到弧线最小的距离,KKT系数有最大值,拉格朗日乘子有最小值)
KKT条件是泛拉格朗日乘子法的一种形式;主要应用在当我们的优化函数存在不等值约束的情况下 的一种最优化求解方式;KKT条件即满足不等式约束情况下的条件
可行解必须在约束区域g(x)之内,由图可知可行解x只能在g(x)<0和g(x)=0的区域取得
当可行解x在g(x)<0的区域中的时候,此时直接极小化f(x)即可得到
当可行解x在g(x)=0的区域中的时候,此时直接等价于等式约束问题的求解
当可行解在约束内部区域的时候,令β=0即可消去约束
对于参数β的取值而言,在等值约束中,约束函数和目标函数的梯度只要满足平行即可,而在不等 式约束中,若β≠0,则说明可行解在约束区域的边界上,这个时候可行解应该尽可能的靠近无约束 情况下的解,所以在约束边界上,目标函数的负梯度方向应该远离约束区域朝无约束区域时的解, 此时约束函数的梯度方向与目标函数的负梯度方向应相同;从而可以得出β>0
对偶问题的直观理解:最小的里面的那个最大的要比最大的那个里面的最小的大;从而就可以为原 问题引入一个下界
最初用来解决分类的问题,现在也可以用来处理回归的问题了
支持向量机(靠离分类线最近的支撑向量(支持向量)的样本来确定分类线的算法)(Support Vecor Machine, SVM)本身是一个二元分类算法,是对感知器算法(除了扩展了svm还延申了深度学习)模型的一 种扩展,现在的SVM算法支持线性分类和非线性分类的分类应用,并且也能够直接将SVM应用于 回归应用中 。我们也可以将SVM应用在多元分类领域中。在不考虑集成学习算法,不考虑特定 的数据集的时候,在分类算法中SVM可以说是特别优秀的。
线性可分(Linearly Separable):在数据集中,如果可以找出一个超平面,将两组数据分开,那么这个数据集叫做线性可分数据。
线性不可分(Linear Inseparable):在数据集中,没法找出一个超平面,能够将两组数据分开,那么这个数据集就叫做线性不可分数据。
分割超平面(Separating Hyperplane):将数据集分割开来的直线(分类线)/平面叫做分割超平面。
间隔(Margin):数据点到分割超平面的距离称为间隔。(找到这个最大间隔的方法叫做优化算法)
支持向量(Support Vector):离分割超平面最近的那些点叫做支持向量
合函数:提升维度(需要提升维度之后的分类属于非线性分类,从原维度看到的不是直线而是曲线)
推导目标函数:
设置分割超平面
使用距离进行切分
找到距离分割超平面最近的样本,让它距离分割超平面距离最大(泛化性能最好,泛化就是为了避免过拟合的)
通过等比缩放的方法w的方法,使得正负类别点的函数值都满足 ≥ 1
通过这个条件,将目标函数公式进行调整
加上约束条件
一般不方便求最大值,所以将求最大的目标函数修改为求最小的目标函数
拉格朗日乘子法:
虽然有了目标函数,到底谁是支持向量,如何计算w,这些问题还没有解决,就用到了拉格朗日乘 子法
根据拉格朗日乘子法
原问题是极小极大问题
求对偶进行转换(为了更好理解实际的表达方式,实际结果不变)
将拉格朗日函数 分别对w,b求偏导,令结果为0
将上一步的求导结果带入
继续求公式minw,bL(w,b,α)对极大
整理目标函数,添加负号
分割超平面求解:
构造一个求约束最优的问题(消除约束条件)
只要求出就能得出最优解
给定三个数据点:正例点x1=(3,3),x2=(4,3), 负例点x3=(1,1),构造此时的约束优化条件
将约束带入目标函数,进行化简计算
带入目标函数,得到关于, 的函数
对α1, α2求偏导为0,可得到s(α1, α2 )在点(1.5,-1)处取极值。而该点坐标不满足大于0的条 件,所以最小值在边界上得到。
当α1=0时,最小值s(0,2/13)=-2/13=-0.1538
当α2=0时,最小值s(1/4,0)=-1/4=-0.25
于是,s(α1, α2 )在α1=1/4, α2=0时达到最小,此时 α3 = α1+ α2=1/4
α1=α3=1/4对应的点x1, x3是支持向量
带入公式得到w1=w2=0.5, b=-2
所以,分割超平面为1/2x1+1/2x2-2=0
分类函数为f(x)=sign(1/2x1+1/2x2-2)
总结
要求数据必须是线性可分的;
纯线性可分的SVM模型对于异常数据的预测可能会不太准;
对于线性可分的数据,SVM分类器的效果非常不错。
出现原因:有时候不能满足所有训练集样本点分类正确,这样会降低泛化能力(满足大多数不需满足少数异常数据)
调整目标函数,如果数据线性不可分,加上松弛因子 ≥ 0,让函数加上松弛因子大于等于1
其拉格朗日函数也要加上松弛因子
可以使用核函数,将原有的空间映射到更高维的空间,从而可以将线性不可分问题处理到在核空间 中可分的状态
一般情况下,都使用高斯核函数进行处理操作
正常情况下需要使用网格搜索进行处理得到最优的核函数
高斯核特点:
粗线是分割的超平面
其他线是等高线
绿色圈中的点是支持向量点