阅读之前看这里:博主是一名正在学习数据类知识的学生,在每个领域我们都应当是学生的心态,也不应该拥有身份标签来限制自己学习的范围,所以博客记录的是在学习过程中一些总结,也希望和大家一起进步,在记录之时,未免存在很多疏漏和不全,如有问题,还请私聊博主指正。
博客地址:天阑之蓝的博客,学习过程中不免有困难和迷茫,希望大家都能在这学习的过程中肯定自己,超越自己,最终创造自己。
SVM的具体原理很多博客和书籍都有介绍,我这里就不再详细介绍了,可以参考博客:SVM支持向量机算法介绍
通过间隔最大化,得到SVM的约束最优化问题:
m i n ω , β 1 2 ∥ ω ∥ 2 s . t . y i ( w ⋅ x i + b ) − 1 ≥ 0 , i = 1 , 2 , . . . , m \mathop{min}\limits_{\omega,\beta} \frac{1}{2}\left \| \omega \right \|^2 \\ s.t. y_i(w\cdot x_i +b)-1\ge0, \qquad i = 1,2,...,m ω,βmin21∥ω∥2s.t.yi(w⋅xi+b)−1≥0,i=1,2,...,m
对于上述带有不等式约束的最优化问题,可以使用拉格朗日乘子法(Lagrange Multiplier)对其进行求解。
首先先了解一下最优化问题的分类,最优化问题可以分为一下三类:
拉格朗日乘子法可以应用于有等式约束的优化问题和有不等式约束的优化问题
对于有等式约束的优化问题:
m i n x f ( x ) s . t . h i ( x ) = 0 , i = 1 , 2 , . . . , m \mathop{min}\limits_{x}f(x) \\ s.t. h_i(x)=0, \qquad i = 1,2,...,m xminf(x)s.t.hi(x)=0,i=1,2,...,m其中 f ( x ) f(x) f(x)被称为目标函数。
当没有约束条件的时候,我们通过求导的方法,来寻找最优点,设 x ∗ x^* x∗是这个最优点,即此时有
此外,如果 f ( x ) f(x) f(x)是一个实值函数, x ⃗ \vec{x} x是一个 n n n维向量的话,那么 f ( x ) f(x) f(x)对向量 x ⃗ \vec{x} x的导数被定义为
当有一个等式约束条件
举例设
m i n x f ( x 1 , x 2 , x 3 ) \mathop{min}\limits_{x}f( x_1,x_2,x_3) xminf(x1,x2,x3)
从几何的角度看,可以看成是在一个曲面 Ω { x 1 , x 2 , x 3 ∣ h ( x 1 , x 2 , x 3 ) = 0 } \Omega\{ x_1,x_2,x_3|_{h(x_1,x_2,x_3)=0}\} Ω{ x1,x2,x3∣h(x1,x2,x3)=0}上寻找函数 f ( x 1 , x 2 , x 3 ) f(x_1,x_2,x_3) f(x1,x2,x3)的最小值。
设目标函数 z = f ( x 1 , x 2 , x 3 ) z=f(x_1,x_2,x_3) z=f(x1,x2,x3),当 z 取不同的值的时候,相当于可以投影在曲面 Ω { x 1 , x 2 , x 3 ∣ h ( x 1 , x 2 , x 3 )