最优化问题一般是指对于某一个函数而言,求解在其指定作用域上的全局最小值问题,一般分为以下三种情况(备注:以下几种方式求出来的解都有可能是局部极小值,只有当函数是凸函数的时候,才可以得到全局最小值):
①无约束问题:求解方式一般求解方式梯度下降法、牛顿法、坐标轴下降法等;
②等式约束条件:求解方式一般为拉格朗日乘子法
拉格朗日乘子法求解
③不等式约束条件:求解方式一般为KKT条件
KKT条件总结
1. 拉格朗日取得可行解的充要条件;
2. 将不等式约束转换后的一个约束,称为松弛互补条件;
3. 初始的约束条件;
4. 初始的约束条件;
5. 不等式约束需要满足的条件。
假定点p(x0,y0),平面方程为f(x,y)=Ax+By+C,那么点p到平面f(x)的距离为:
从三维空间扩展到多维空间中,如果存在一个超平面f(X)=θX+b; 那么某一个点X0到这个超平面的距离为:
对于m个样本,每个样本n维特征以及一个二元类别输出y:。目标是找到一个超平面,即:
。让一个类别的样本满足:
;另外一个类别的满足:
。
正确分类的样本:;错误分类的样本:
。假定分类错误的样本数为k,可定义损失函数为(分类错误的样本到超平面的距离之和最小):
直接使用梯度下降法就可以对损失函数求解,不过由于这里的k是分类错误的样本点集合,样本数目不是固定的,所以我们不能使用批量梯度下降法(BGD)求解,只能使用随机梯度下降(SGD)或者小批量梯度下降(MBGD);一般在感知器模型中使用SGD来求解。
支持向量机(Support Vecor Machine, SVM)本身是一个二元分类算法,是对感知器算法模型的一种扩展,现在的SVM算法支持线性分类和非线性分类的分类应用,并且也能够直接将SVM应用于回归应用中,同时通过OvR或者OvO的方式我们也可以将SVM应用在多元分类领域中。在不考虑集成学习算法,不考虑特定的数据集的时候,在分类算法中SVM可以说是特别优秀的。
感知机:分类错误的样本离分割平面的距离和最小
线性可分SVM:最大化支持向量到分割平面的距离和,即让离超平面比较近的点尽可能的远离这个超平面(离超平面足够远的点基本上都是被正确分类的;离超平面很近的点,这些点比较容易分错)
①支持向量到超平面的几何距离
备注:SVM中支持向量到超平面的函数距离一般为1(原因:假设等于k,
两边同时除以k,相当于w变成了
,b变成了
,替换掉了原来的,直接进行w和b的更新)
②SVM模型是让所有的分类点在各自类别的支持向量的两边,同时要求支持向量尽可能地远离这个超平面,用数学公式表示如下:
③SVM目标函数/损失函数为(等价于②):
④将目标函数和约束条件使用KKT条件转换为拉格朗日函数,从而转换为无约束的优化函数。备注:每个样本对应有一个β
⑤拉格朗日对偶化
等价于
,即:先求优化函数对于w和b的极小值,然后再求解
对于拉格朗日乘子β的极大值。
⑥求解函数L极小化的时候w、b和β的取值:
求解出来的w和b带入优化函数L:
备注:β值的求解使用SMO算法
根据求解出的β最优解β*计算w*和b*(一般使用所有支持向量的计算均值来作为实际的b值),(xs,ys)即支持向量:
根据KKT条件中的对偶互补条件(松弛条件约束),支持向量必须满足一下公式:
输入线性可分的m个样本数据{(,
),(
,
),...,(
,
)},其中x为n维的特征向量,y为二元输出,取值为+1或者-1;SVM模型输出为参数w、b以及分类决策函数。
给定三个数据点:正例点x1=(3,3),x2=(4,3), 负例点x3=(1,1),构造此时的约束优化条件。
解决数据集存在异常点的问题(正常数据本身是线性可分的,但是由于存在异常点数据,导致数据集不能够线性可分)
硬间隔:线性划分SVM中的距离度量,在线性划分SVM中,要求函数距离一定是大于1的,最大化硬间隔条件为:
软间隔:SVM对于训练集中的每个样本都引入一个松弛因子(ξ),使得函数距离加上松弛因子后的值是大于等于1。松弛因子(ξ)越大,表示样本点离超平面越近,如果松弛因子大于1,那么表示允许该样本点分错,过大的松弛因子可能会导致模型分类错误。函数中的C>0是惩罚参数,是一个超参数,类似L1/L2 norm的参数;C越大表示对误分类的惩罚越大,也就是越不允许存在分错的样本;C越小表示对误分类的惩罚越小, 也就是表示允许更多的分错样本存在;C值的给定需要调参。
最终优化后的目标函数/损失函数和线性可分SVM模型基本一样,除了约束条件不同,也就是说也可以使用SMO算法来求解。
输入线性可分的m个样本数据{(x1,y1),(x2,y2),...,(xm,ym)},其中x为n维的特征向量,y为二元输出,取值为+1或者-1;SVM模型输出为参数w、b以及分类决策函数。
在线性回归中,通过多项式扩展将低维度的数据扩展成为高维度的数据,从而可以使用线性回归模型来解决问题。也就是说对于二维空间中不是线性可分的数据,将其映射到高维空间中后,变成了线性可分的数据。
启发:
将SVM线性不可分的数据映射到高维空间中,数据就会变成线性可分的,从而就可以使用线性可分SVM模型或者软间隔线性可分SVM模型。
Ф为从低维特征空间到高维特征空间的映射函数
可以看到,只需要将原来的低维空间中的两个向量的点积转换为高维空间中两个向量的点积即可。
问题:
如果原始空间是n维,那么我们会得到一个n(n+3)/2维的新空间;这个数目是呈爆炸性增长的,这给计算带来了非常大的困难,而且如果遇到无穷维的情况,就根本无从计算。
假设函数Ф是一个从低维特征空间到高维特征空间的一个映射,那么如果存在函数K(x,z), 对于任意的低维特征向量x和z,都有:,称函数K(x,z)为核函数(kernal function)。
核函数在解决线性不可分问题的时候,采取的方式是:使用低维特征空间上的计算来避免在高维特征空间中向量内积的恐怖计算量;也就是说此时SVM模型可以应用在高维特征空间中数据可线性分割的优点,同时又避免了引入这个高维特征空间恐怖的内积计算量。即:用低维空间中少的内积的计算量来让模型具有高维空间中的线性可分的优点。
公式:。可以发现两者之间非常相似,所以我们只要乘上一个相关的系数,就可以让这两个式子的值相等,这样就可以将五维空间的一个内积转换为两维空间的内积的运算。
计算量对比:
映射到高维:11次乘法+4次加法;
近似计算:3次乘法+2次加法;
加系数后的近似计算:4次乘法+2次加法;