数学描述
d:间隔(margin)最大化
将平行线擦到的向量叫支持向量(Support Vectors)
定义
①训练数据及标签,其中
是向量,
,
是标签,
=+1或-1
②线性模型:(W,b) (超平面),W是一个向量,
,b是一个常数
我们要干的事:用所有的①算出②中的W和b
③一个训练集线性可分是指:,
,使:
对,有
⒈若,则
⒉若则
综合上式为:(公式1)
优化问题(凸优化/二次规划)
最小化:
限制条件: (i=1...N)
事实1:与
是同一个平面,
若(W,b)满足公式1,则(aW,ab)也满足公式1
事实2:点到平面的距离公式
平面:
则到此平面的距离:
向量到超平面
的距离
,
我们可以用a去缩放(W,b)→(aW,ab)
最终使在支持向量上有:
,此时支持向量与平面距离
因此最小化就是最大化d
二次规划
①目标函数是二次项
②限制条件是一次项
要么无解,要么只有一个极值
SVM处理非线性
一、最小化 (i=1~N),其中
为松弛变量,
为正则项,C是事先设定的参数
限制条件:
①
②
二、高维映射、
、
、
、
、
、
①是无限维。
我们可以不知道无限维映射的显式表达,我们只要知道一个核函数
←
与
两个无限维向量内积
则①这个优化式任然可解。
核函数
①(高斯核)
②(多项式核,d为多项式阶数)
能写成
的充要条件:
①(交换性)
②有:
(半正定性)
优化理论
原问题(非常普适)
最小化:
限制条件:、
对偶问题
①定义:
其中、
②对偶问题定义
最大化:,其中inf是指在遍历所有w的情况下L的最小值
限制条件:
定理:如果是原问题的解,而
是对偶问题的解,则有
定义:,G叫做原问题与对偶问题的间距
对于某些特定优化问题,可以证明G=0
强对偶定理:若为凸函数,且
,
则此优化问题的原问题与对偶问题间距为0,即
对(KKT条件)
或者
或者
②拉格朗日乘子法: 拉格朗日乘子法是一种将约束优化问题转换为无约束优化问题的方法。它通过引入一组新的变量(拉格朗日乘子)来构造一个拉格朗日函数,该函数包含了原始问题的目标函数和约束条件。为了求解这个优化问题,可以使用拉格朗日乘子法。对于每个样本点,引入一个拉格朗日乘子
。定义拉格朗日函数
为:
其中,N 是样本数量。
③对偶问题:在优化问题中,通常有一个原始问题和一个对偶问题。原始问题是最初要解决的问题,它包含了一组决策变量、目标函数以及约束条件。对偶问题是通过应用拉格朗日乘子法得到的,它提供了原始问题的一个下界(对于最小化问题)。 通过对拉格朗日函数分别对w和b求偏导并令其为0,可以得到对偶问题。对偶问题通常更容易求解,并且可以引入核函数来处理非线性问题。对偶问题中的目标函数是:
需要满足的约束条件是:
④KKT条件: Karush-Kuhn-Tucker (KKT) 条件是解决对偶问题时必须满足的约束。这些条件包括原始问题的约束和拉格朗日乘子的非负性。KKT条件提供了一种检查某个解是否为优化问题最优解的方法。如果一个解满足KKT条件,那么它至少是一个局部最优解。在特定条件下(如问题为凸优化问题),KKT条件也是全局最优解的必要条件。
KKT条件由几个关键部分组成,包括:
- 梯度条件(Stationarity):原始问题的目标函数的梯度与对偶问题的拉格朗日乘子有关,这确保了在最优解处,原始问题的目标函数在可行方向上的变化为零。
- 原始可行性(Primal Feasibility):最优解必须满足原始问题的所有约束条件。
- 对偶可行性(Dual Feasibility):对偶问题中的拉格朗日乘子必须满足一定的条件,例如对于不等式约束,乘子必须非负。
- 互补松弛条件(Complementary Slackness):这涉及到原始问题的约束和对偶问题的乘子之间的关系,确保在最优解处,任何活跃的约束都与其对应的拉格朗日乘子相乘等于零。
⑤优化算法: 求解对偶问题通常需要使用优化算法。序列最小优化(Sequential Minimal Optimization, SMO)是一种常用的算法,它通过分解大的优化问题为一系列最小化问题来加速SVM的训练过程。SMO算法的执行步骤如下:
-
选择两个乘子:
SMO算法每次迭代选择两个乘子(alpha)进行优化,这两个乘子一个违反KKT条件较严重,另一个则根据某些启发式规则选择。选择这两个乘子的过程可以看作是在一个二维空间中优化问题。 -
解析求解子问题:
一旦选择了两个乘子,SMO算法将原始的SVM优化问题转化为只涉及这两个乘子的二次规划子问题。这个子问题可以解析求解,即可以直接通过数学公式计算出新的乘子值,而不需要使用数值优化方法。 -
更新乘子:
根据解析解,更新选中的两个乘子的值。由于SVM的对偶问题中的乘子之间有约束(例如,它们必须满足),更新一个乘子后,另一个乘子的值也可以相应地计算出来。
-
更新阈值b和权重向量w:
在每次迭代后,需要根据新的乘子值更新SVM模型的阈值b和权重向量w。权重向量w可以通过支持向量(即那些的样本点)计算得出,而阈值b则与这些支持向量的标签和位置有关。
-
检查收敛性:
在每次迭代后,检查所有乘子是否满足KKT条件。如果所有乘子都满足KKT条件,或者变化小于某个阈值,则认为算法已经收敛,训练过程可以结束。 -
重复迭代:
如果还有乘子不满足KKT条件,则重复上述步骤,选择下一对乘子进行优化。
SMO算法的优点是它的实现相对简单,并且可以有效地处理大规模数据集。它的核心思想是将复杂的优化问题分解为一系列简单的子问题,每个子问题都可以快速求解,从而大大减少了计算量。
ROC曲线
四个概率TP(将正样本识别为正样本的概率),FN(将正样本识别为负样本的概率),FP(将负样本识别为正样本的概率),TN(将负样本识别为负样本的概率)
1.TP+FN=1
2.FP+TN=1
3.对同一个系统来说,若TP增加,则FP也增加
FN减少↔TP增加↔FP增加↔TN减少