SVM支持向量机原理及代码实现

Posted 追梦小凯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVM支持向量机原理及代码实现相关的知识,希望对你有一定的参考价值。

文章目录

序言

记得刚开始接触svm算法的时候是在sklearn的课程上,那时候对机器学习还处于一个出生婴儿的阶段,学了一大段时间之后,也就记得了初始化,拟合模型,输出预测结果三行代码。对这个算法的理解很浅,是名副其实的调包侠。所幸如今有机会在此更深入地补全svm的知识。

因为在该算法中会用到不少的数学知识,故本文会先介绍所用到的数学知识,而后阐述原理和公式部分,最后呈现上代码的解决方法。

笔者自认才疏学浅,仅略懂皮毛,更兼时间与精力有限,文中错谬之处在所难免,敬请读者批评指正。笔者微信:827062650

1.数学知识补充

此部分仅对该模型的数学知识有不理解的读者起到简单解释,抛砖引玉的作用。数学知识在算法的运用上很广泛,如果感兴趣的读者,建议查看对应的教科书,获取更准确和更深刻的解答。

1.1凸函数

多元的一般函数和凸函数如下图所示,一般的函数拥有全局最优解和局部最优解,而凸函数具有只包含一个最优解的优良性质。则在我们常见的算法中,都尽可能将目标函数转换为凸函数。而一般来说,凹函数和凸函数除符号外无本质区别,本文将具有这类性质的函数统称为凸函数。

        
一般函数                            凸函数

定义

f ( β x + ( 1 − β ) y ) ≤ β f ( x ) + ( 1 − β ) f ( y ) x , y ∈ d o m f \\\\ f(\\beta x +(1- \\beta)y) \\le \\beta f(x) +(1- \\beta)f(y)\\\\ x,y \\in domf f(βx+(1β)y)βf(x)+(1β)f(y)x,ydomf

常见的凸函数

先说明一个凸函数的优良性质:凸函数之和也为凸函数

  • 线性函数
  • exp(x) , -log(x) , xlog(x)
  • 范数
  • 逻辑回归损失函数

1.2对偶问题

任何一个求极大化的线性规划问题都有一个求极小化的线性规划问题与之对应,反之亦然,如果我们把其中一个叫原问题,则另一个就叫做它的对偶问题,并称这一对互相联系的两个问题为一对对偶问题。

对偶问题具有优良性质:无论原问题是什么,他的对偶问题都为凸函数。

例如:
L ( w , α , β ) = f ( w ) + ∑ i = 1 k a i g i ( w ) + ∑ i = 1 l β i h i ( w ) 原 问 题 : m i n w m a x α , β L ( w , α , β ) 对 偶 问 题 : m a x α , β m i n w L ( w , α , β ) 可 以 证 明 : A ( x ) = m a x α , β L ( w , α , β ) > L ( w , α , β ) > m i n w L ( w , α , β ) = B ( α , β ) 则 : A ( x ) ≥ B ( α , β ) 恒 成 立 , 则 原 问 题 的 解 必 定 大 于 或 等 于 对 偶 问 题 的 解 L(w,\\alpha,\\beta)=f(w)+\\sum_i=1^ka_ig_i(w)+\\sum_i=1^l\\beta_ih_i(w)\\\\ 原问题:\\undersetwmin\\underset\\alpha,\\betamaxL(w,\\alpha,\\beta)\\\\ 对偶问题:\\underset\\alpha,\\betamax\\undersetwminL(w,\\alpha,\\beta)\\\\ 可以证明:A(x)=\\underset\\alpha,\\betamaxL(w,\\alpha,\\beta)>L(w,\\alpha,\\beta)>\\undersetwminL(w,\\alpha,\\beta)=B(\\alpha,\\beta)\\\\ 则:A(x) \\ge B(\\alpha,\\beta)\\quad 恒成立,则原问题的解必定大于或等于对偶问题的解 L(w,α,β)=f(w)+i=1kaigi(w)+i=1lβihi(w)wminα,βmaxL(w,α,β)α,βmaxwminL(w,α,β)A(x)=α,βmaxL(w,α,β)>L(w,α,β)>wminL(w,α,β)=B(α,β)A(x)B(α,β)

强对偶

而当原问题的解等于对偶问题的解。则为强对偶问题。

强对偶 一般情况下不成立,而在凸函数下一般会成立,在非凸函数下一般不成立。

在定义上,只要满足slater条件的凸优化问题,就是强对偶问题。(充分条件)

slater条件

m i n f ( w ) s . t . g i ( w ) ≤ 0 i = 1 , 2 , ⋅ ⋅ ⋅ ⋅ n h i ( w ) = 0 i = 1 , 2 , ⋅ ⋅ ⋅ ⋅ n min f(w)\\\\ s.t. \\quad g_i(w)\\le0 \\quad i=1,2,····n\\\\ \\quad \\quad h_i(w) =0\\quad i=1,2,····n\\\\ minf(w)s.t.gi(w)0i=1,2,nhi(w)=0i=1,2,n

假设g与f都是凸函数,h为仿射函数。同时假设存在w使得g(w)<0对所有i都成立,则称该问题符合slater条件。该问题为强对偶问题。

弱对偶

当原问题的解大于对偶问题的解,则为弱对偶问题。

KKT条件

KKT条件是由Karush-Kuhn-Tucker三人联合发表的,所以称为KKT条件。

当原问题为强对偶问题,则该问题必定符合KKT条件
L ( w , α , β ) = f ( w ) + ∑ i = 1 k a i g i ( w ) + ∑ i = 1 l β i h i ( w ) K K T 条 件 : w ∗ , α ∗ , β ∗ 为 最 优 解 时 的 值 ∂ L ∂ w ∗ , α ∗ , β ∗ = 0 α i ∗ g i ( w ∗ ) = 0 在 支 持 向 量 机 中 , 不 在 超 平 面 上 的 样 本 , 其 g i ( w ∗ ) ≠ 0 , 则 α i = 0 恒 成 立 。 L(w,\\alpha,\\beta)=f(w)+\\sum_i=1^ka_ig_i(w)+\\sum_i=1^l\\beta_ih_i(w) \\\\ KKT条件:w^*,\\alpha^*,\\beta^*为最优解时的值\\\\ \\frac\\partial L\\partial w^*,\\alpha^*,\\beta^*=0 \\\\ \\bf\\alpha_i^*g_i(w^*)=0\\\\ 在支持向量机中,不在超平面上的样本,其g_i(w^*)\\ne0,则\\alpha_i=0恒成立。 L(w,α,β)=f(w)+i=1kaigi(w)+i=1lβihi(w)KKTw,α,βw,α,βL=0αigi(w)=0gi(w)=0,αi=0

1.3拉格朗日乘数法

原公式以及对偶公式的由来

拉格朗日乘数法是一种求解带约束的多元函数问题的方法。该方法可以将带约束的优化问题转化为不带约束的优化问题。

直观来说就是一种求解以下方程的一种方法:
以上是关于SVM支持向量机原理及代码实现的主要内容,如果未能解决你的问题,请参考以下文章

SVM -支持向量机原理详解与实践之二

支持向量机SVM原理解读,以及PyQt5融合SVM的代码实现,没有公式推导(已经很成熟,很难改公式,数学专业的可以推导学习)

支持向量机(SVM)的详细推导过程及注解

机器学习之支持向量机(手推公式版)

机器学习之支持向量机(手推公式版)

分类和回归-支持向量机SVM算法