这篇文章将介绍感知器、逻辑回归的求解和SVM的部分求解,包含部分的证明。本文章涉及的一些基础知识,已经在《梯度下降、牛顿法和拉格朗日对偶性》中指出,而这里要解决的问题,来自《从感知器到SVM》 、《从线性回归到逻辑回归》两篇文章。

感知器:

前面的文章已经讲到,感知器的目标函数如下:

$min \ L(w,b)$

其中,$L(w,b)=-\sum_{i=1}^{n}[y_i*(w*x_i+b)]$

对于上面这种无约束的最优化问题,一般采用的是梯度下降的办法,但是,考虑到梯度下降速度比较慢,实际使用中,采用是随机梯度下降。

其基本的思想是:一次选取一个误分点使其梯度下降,而不是像梯度下降一样,一次性使用所有的误分点,这样,可以极大的减少计算量,提高运算效率。

不过,需要注意的一点是,随机梯度下降有可能不能收敛到极小值点,而是在极小值点附近徘徊。

下面,对目标函数进行求解。首先是分别对w和b求偏导:

$\triangledown_wL(w,b)=-\sum \limits_{x_i \in M}y_ix_i$

$\triangledown_bL(w,b)=-\sum \limits_{x_i \in M}y_i$

随机选取一个误分点,对w和b进行更新:

$w \gets w+\eta y_ix_i$

$b \gets b+\eta y_i$

直到训练集中没有误分点,算法结束。

逻辑回归

目标函数:

$min \ L(w)$

$L(w)=-\sum_{i=1}^{n}[y_i*(w*x_i)-ln(1+exp(w*x_i))]$

使用梯度下降:

$\triangledown_wL(w)=-$ $\sum_{i=1}^{n}(y_i*x_i-\frac{exp(w*x_i)}{1+exp(w*x_i)}*x_i)$

$w \gets w+\eta \triangledown_wL(w)$

直到没有误分点为止。

SVM

SVM和感知器和逻辑回归的不同点在于,SVM是一个约束最优化问题。我们的目标是在约束条件下,最大化目标函数。一般的处理办法是先通过拉格朗日对偶性将目标函数化简,然后使用SMO(序列最小最优化)算法解决。

首先是拉格朗日对偶性化简目标函数。

在处理不同的目标函数之前,先解释一下,为什么拉格朗日对偶性能够化简目标函数:

假设拉格朗日函数满足KKT条件:

$L(x,a,b)=f(x)+\sum_{i=1}^{k}a_ic_i(x)+\sum_{j=1}^{l}b_jh_j(x)$

记:$\theta_p(x)=\max \limits_{a,b:a_i\geq 0} \ L(x,a,b)$

  $\theta_D(a,b)=\min \limits_{x\in R^{n}} \ L(x,a,b)$

证明:

$\because \theta_D(a,b)=\min \limits_{x\in R^{n}} \ L(x,a,b) \leq L(x,a,b) \leq \max \limits_{a,b:a_i\geq 0} \ L(x,a,b)=\theta_p(x)$

$\therefore \theta_D(a,b) \leq \theta_p(x)$

$\therefore \max \limits_{a,b:a_i\geq 0} \theta_D(a,b) \leq \min \limits_{x\in R^{n}} \theta_p(x)$

由于$L(x,a,b)$满足KKT条件,因此,存在解$x^*,a^*,b^*$使得上面的等号成立。

至于为什么KKT条件是上面等号成立的条件,我暂时还没有找到证明。不过这已经被前人证明过了,就按照一个结论记住吧。

因此,一旦满足KKT条件,原始问题直接就能转化成对偶问题,而且根据KKT条件,可以直接将问题简化。下面各个例子将会细说:

根据SVM处理不同的数据,我们逐个击破。首先是线性可分支持向量机:

$min \ \ \frac{1}{2}||w||^2$

$1-y_i * (w * x_i + b) \leq0$ $ \ \ \ $   $i=1,2,3......n$

首先写出广义拉格朗日函数:

$L(w,b,a)=\frac{1}{2}||w||^2+\sum_{i=1}^{n}a_i(1-y_i * (w * x_i + b))$

$a_i \geq 0 , \ i=0,1,...,n$

原始问题是:$\min \limits_{w,b} \max \limits_{a:a_i\geq 0} \ L(w,b,a)$

对偶问题是:$\max \limits_{a:a_i\geq 0} \min \limits_{w,b} \ L(w,b,a)$

我们对对偶问题进行化简,根据KKT条件可得(KKT条件的相关细节可以看介绍拉格朗日对偶性的文章):

$\triangledown_wL(w,b,a)=w-\sum_{i=1}^{n}a_iy_ix_i=0$

$\triangledown_bL(w,b,a)=-\sum_{i=1}^{n}a_iy_i=0$

因此,可以得到:

$w=\sum_{i=1}^{n}a_iy_ix_i$

$\sum_{i=1}^{n}a_iy_i=0$

将上面两个等式代入广义拉格朗日函数,化简可以得到:

$\min \limits_{w,b} \ L(w,b,a)=-\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}a_ia_jy_iy_j(x_i \centerdot x_j)+\sum_{i=1}^{n}a_i$

而:$\max \limits_{a} \ \min \limits_{w,b} \ L(w,b,a)=\max \limits_{a} \ -\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}a_ia_jy_iy_j(x_i \centerdot x_j)+\sum_{i=1}^{n}a_i$

因此,原始问题,转化成了下面的对偶问题:

$\max \limits_{a} \ -\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}a_ia_jy_iy_j(x_i \centerdot x_j)+\sum_{i=1}^{n}a_i$

$s.t. \ \sum_{i=1}^{n}a_iy_i=0$

$a_i \geq 0, \ i=1,2,....,n$

为了保证思路上的连续性,这里先不对上面的对偶问题进行求解,而是先分析剩下情况的问题如何转化。

线性支持向量机的目标函数:

$min \ \ \frac{1}{2}||w||^2 + C\sum_{i=1}^{n}\zeta_i$

$s.t. \ y_i*(w*x_i + b) \geq 1 - \zeta_i, \ \ \ i=1,2,3......n$

$\zeta_i \geq 0, \ \ i=1,2,3......n$

先写出广义拉格朗日函数:

$L(w,b,\zeta,a,\mu)=\frac{1}{2}||w||^2+C\sum_{i=1}^{n}\zeta_i+\sum_{i=1}^{n}a_i(1-\zeta_i-y_i * (w * x_i + b))+\sum_{i=1}^{n}\mu_i\zeta_i$

其中:$a_i \geq 0,\mu_i \geq 0$

其中原始问题是:$\min \limits_{w,b,\zeta} \ \max \limits_{a,\mu} \ \ L(w,b,\zeta,a,\mu)$

对偶问题是:$\max \limits_{a,\mu} \ \min \limits_{w,b,\zeta} \ \ L(w,b,\zeta,a,\mu)$

根据KKT条件,对对偶问题进行化简:

$\triangledown_wL(w,b,\zeta,a,\mu)=w-\sum_{i=1}^{n}a_iy_ix_i=0$

$\triangledown_bL(w,b,\zeta,a,\mu)=-\sum_{i=1}^{n}a_iy_i=0$

$\triangledown_{\zeta}L(w,b,\zeta,a,\mu)=C-a_i-\mu_i=0$

得到:

$w=\sum_{i=1}^{n}a_iy_ix_i$

$\sum_{i=1}^{n}a_iy_i=0$

$C-a_i-\mu_i=0$

因此,$\max \limits_{a} \ \min \limits_{w,b,\zeta} \ L(w,b,\zeta,a,\mu)=\max \limits_{a} \ -\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}a_ia_jy_iy_j(x_i \centerdot x_j)+\sum_{i=1}^{n}a_i$

其中,$\mu_i$可以根据等式$C-a_i-\mu_i=0$消去。即$\mu_i=C-a_i$,由$\mu_i\geq 0$得到$a_i\leq C$。

于是,可以得到下面的对偶问题:

$\max \limits_{a} \ -\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}a_ia_jy_iy_j(x_i \centerdot x_j)+\sum_{i=1}^{n}a_i$

$s.t. \ \sum_{i=1}^{n}a_iy_i=0$

$0\leq a_i\leq C, \ i=1,2,....,n$

非线性支持向量机:

我们已经知道,非线性支持向量机和线性支持向量机最大的区别是:非线性支持向量机通过一个映射函数将非线性问题转化成线性的问题。因此,其对偶问题的差别也就一个映射函数的差别:

$\max \limits_{a} \ -\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}a_ia_jy_iy_j(\phi(x_i) \centerdot \phi(x_j))+\sum_{i=1}^{n}a_i$

$s.t. \ \sum_{i=1}^{n}a_iy_i=0$

$0\leq a_i\leq C, \ i=1,2,....,n$

不过,在实际的计算中,前人发现,$\phi(x_i)\centerdot\phi(x_j)$的计算比较困难,但是,这一步又必不可少,通过研究后,前人找到了一个办法,这就是核技巧

核技巧的想法是:在学习和预测中,只定义核函数,而不显式地定义映射函数。也就是说:只定义:$K(x_i,x_j)=\phi(x_i)\centerdot\phi(x_j)$。

因此,我们得到核函数的定义:$K(x,z)=\phi(x)\centerdot\phi(z)$

这样定义的原因主要是:通过$K(x,z)$计算$\phi(x)\centerdot\phi(z)$比较容易,而通过$\phi(x)\centerdot\phi(z)$计算$K(x,z)$比较困难。因此,上面化简后的对偶函数变成:

$\max \limits_{a} \ -\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}a_ia_jy_iy_jK(x_i,x_j)+\sum_{i=1}^{n}a_i$

$s.t. \ \sum_{i=1}^{n}a_iy_i=0$

$0\leq a_i\leq C, \ i=1,2,....,n$

One Class SVM:

目标函数:

$\min \ R^2+C\sum_{i}\zeta_i$

$s.t \ (x_i-a)^T(x_i-a)\leq R^2+\zeta_i$

$\zeta_i\geq 0, \ \ \ i=1,2,...,n$

先写出广义拉格朗日函数:

$L(R,a,\zeta,b,\mu)=R^2+C\sum_{i}\zeta_i+\sum_{i=1}^{n}b_i(x_i^2-2ax_i+a^2-R^2-\zeta_i)+\sum_{i=1}^{n}\mu_{i}\zeta_i$

$b_i\geq 0,\mu_i\geq 0, \ \ i=1,2,3...,n$

其中原始问题是:$\min \limits_{R,a,\zeta} \ \max \limits_{b,\mu} \ \ L(w,a,\zeta,b,\mu)$

对偶问题是:$\max \limits_{b,\mu} \ \min \limits_{w,a,\zeta} \ \ L(w,a,\zeta,b,\mu)$

由KKT条件得到:

$\triangledown_RL(R,a,\zeta,b,\mu)=2R-\sum_{i=1}^{n}2b_iR=0 \ \ (1)$

$\triangledown_aL(w,a,\zeta,b,\mu)=\sum_{i=1}^{n}(2ab_i-2b_ix_i)=0 \ \ (2)$

$\triangledown_{\zeta}L(w,a,\zeta,b,\mu)=C-b_i-\mu_i=0 \ \ (3)$

(3)式是对每一个$\zeta_i$求偏导。

由(1)式可得,$\sum_{i=1}^{n}b_i=1$

由(2)式得:$\sum_{i=1}^{n}(2ab_i-2b_ix_i)=0$,由于不能保证$2ab_i-2b_ix_i=0$,因此,将公式拆开得:

$2a\sum_{i=1}^{n}b_i-2\sum_{i=1}^{n}b_ix_i=0$

因此,$a=\frac{\sum_{i=1}^{n}b_ix_i}{\sum_{i=1}^{n}b_i}=\sum_{i=1}^{n}b_ix_i$

,从(1)式的结果中可以知道分母等于1

由(3)式可得:$C-b_i-\mu_i=0,\ \ \ i=1,2,...,n$

由(3)式消去$\mu_i$可以得到:$0\leq b_i \leq C$

将(1)(3)代入拉格朗日函数,刚好消去包含R和的项:

$L(R,a,\zeta,b,\mu)=\sum_{i=1}^{n}b_i(x_i^2-2ax_i+a^2)$

将(2)式的推导结果:$a=\sum_{i=1}^{n}b_ix_i$代入上式可得:

$\min \limits_{R,a,\zeta} \ L(R,a,\zeta,b,\mu)=\sum_{i=1}^{n}b_i(x_i*x_i)-\sum_{i=1}^{n}\sum_{j=1}^{n}b_ib_j(x_i*x_j)$

如果采用了核技巧,也可以写成下面的表达式:

$\min \limits_{R,a,\zeta} \ L(R,a,\zeta,b,\mu)=\sum_{i=1}^{n}b_iK(x_i,x_i)-\sum_{i=1}^{n}\sum_{j=1}^{n}b_ib_jK(x_i,x_j)$

所以,原问题的对偶问题可以写成下面的形式

$\max \limits_{b_j} \ \sum_{i=1}^{n}b_iK(x_i,x_i)-\sum_{i=1}^{n}\sum_{j=1}^{n}b_ib_jK(x_i,x_j)$

$s.t. \ \sum_{i=1}^{n}b_i=1$

$0\leq b_i\leq C, \ i=1,2,...,n$

有偏支持向量机的目标函数:

$min \ \ \frac{1}{2}||w||^2 + C_{+}\sum_{i=1}^{k-1}\zeta_i + C_{-}\sum_{i=k}^{n}\zeta_i$

$s.t. \ y_i*(w*x_i + b) \geq 1 - \zeta_i, \ \ \ i=1,2,3......n$

$\zeta_i \geq 0, \ \ i=1,2,3......n$

从前面的总结的4个情况来看,所有情况的对偶问题最终都会变成类似下面的形式:(以非线性支持向量机为例子)

$\max \limits_{a_i} \ L(a,x,y)$

$s.t. \ \sum_{i=1}^{n}a_iy_j=K$

$0\leq a_i\leq C, \ i=1,2,...,n$

其中,第一个式子是目标函数,一般是最大化或者最小化目标函数,能够控制的变量只有一个,如a;

第二个式子是一个等式,将从i=1到n的所有情况全部求和等于一个常数。

第三个式子是关于变量(如a)的范围的控制。

类似的形式,一般是可以用同样的办法进行求解的。

关于这类问题的求解,如果继续在本文中写,篇幅就太长了,影响阅读效果,因此,最后一步的求解,将会在下一篇文章中叙述,敬请期待。

参考文献:

(1)李航 《统计学习方法》

(2)维基百科

转载请注明:http://www.cnblogs.com/weibao/p/5573273.html

有任何问题,请联系weibao798@gmail.com

感知器、逻辑回归和SVM的求解的更多相关文章

  1. 机器学习之感知器和线性回归、逻辑回归以及SVM的相互对比

    线性回归是回归模型 感知器.逻辑回归以及SVM是分类模型 线性回归:f(x)=wx+b 感知器:f(x)=sign(wx+b)其中sign是个符号函数,若wx+b>=0取+1,若wx+b< ...

  2. 感知器、logistic与svm 区别与联系

    https://blog.csdn.net/m0_37786651/article/details/61614865 从感知器谈起 对于典型的二分类问题,线性分类器的目的就是找一个超平面把正负两类分开 ...

  3. 线性回归,逻辑回归,神经网络,SVM的总结

    目录 线性回归,逻辑回归,神经网络,SVM的总结 线性回归,逻辑回归,神经网络,SVM的总结 详细的学习笔记. markdown的公式编辑手册. 回归的含义: 回归就是指根据之前的数据预测一个准确的输 ...

  4. Spark MLlib回归算法------线性回归、逻辑回归、SVM和ALS

    Spark MLlib回归算法------线性回归.逻辑回归.SVM和ALS 1.线性回归: (1)模型的建立: 回归正则化方法(Lasso,Ridge和ElasticNet)在高维和数据集变量之间多 ...

  5. [吴恩达机器学习笔记]12支持向量机1从逻辑回归到SVM/SVM的损失函数

    12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.1 SVM损失函数 从逻辑回归到支持向量机 为了描述 ...

  6. 机器学习(九)—逻辑回归与SVM区别

    逻辑回归详细推导:http://lib.csdn.net/article/machinelearning/35119 面试常见问题:https://www.cnblogs.com/ModifyRong ...

  7. 机器学习-逻辑回归与SVM的联系与区别

    (搬运工) 逻辑回归(LR)与SVM的联系与区别 LR 和 SVM 都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题,如LR的Softmax回归用在深度学习的多分类 ...

  8. KNN与SVM对比&SVM与逻辑回归的对比

    首先说一下两种学习方式: lazy learning  和  eager learning. 先说 eager learning, 这种学习方式是指在进行某种判断(例如,确定一个点的分类或者回归中确定 ...

  9. Coursera《machine learning》--(6)逻辑回归

    六 逻辑回归(Logistic Regression:LR) 逻辑回归(Logistic Regression, LR)模型其实仅在线性回归的基础上,套用了一个逻辑函数,但也就是由于这个逻辑函数,使得 ...

随机推荐

  1. Tomcat version 7.0 only support J2EE 1.2。。。。。。。

    刚开始使用eclipse编程,换了eclipse版本后导入项目,出现下的报错

  2. SILVERLIGHT 应急卫生模拟演练项目之GRID布局

    上篇文章 我介绍了LOADING界面 loading加载完成后 会进入主界面 效果图如下 这里我要给大家说一下我在布局方面的应用  说起布局 做过SL开发的一定都知道 Grid,StackPanel和 ...

  3. iftop 安装以及相关参数及说明(转载自csdn)

      转载自http://blog.csdn.net/cqinter/article/details/6250211 关于 Iftop iftop 是类似于top的实时流量监控工具.主要用来显示本机网络 ...

  4. Installshield调用DLL的正确姿势

    脚本如下 szDllPath = SUPPORTDIR ^ "TestCom.dll";       set oMyTest = CoCreateObjectDotNet(szDl ...

  5. java单例-积木系列

    一步步知识点归纳吧,把以前似懂非懂,了解表面,知道点不知道面的知识归一下档.   懒汉式单例: 私有化构造函数,阻止外界实例话对象,调用getInstance静态方法,判断是否已经实例化. 为什么是懒 ...

  6. SQL---Chapter01 数据库和SQL

    数据库类型: 层次数据库(Hierarchical Database, HDB) 数据通过层次结构(树形结构)的方式表示出来. 关系型数据库(Relational Database, RDB) 使用专 ...

  7. Erlang Materials Outline

    Motivation 因The Erlang Run-Time System迟迟没有出版,不等了. 梳理一下学习Erlang过程中的学习笔记,以准备一个关于Erlang的small but tight ...

  8. nginx配置文件语法高亮显示方法

    1.去官方站点下载nginx.vim http://www.vim.org/scripts/script.php?script_id=1886 2.创建nginx.vim的存放目录 # mkdir - ...

  9. WP8应用上传失败查错

    开发的一个应用,好久没有更新. 最近做了些修改,在设备上安装测试,没什么 问题,上传到STORE,收到反馈说有两个操作必挂. 知道了直接设备安装测试和从STORE上下载,会有些不同. http://s ...

  10. etcd第三集

    简单说下golang的etcd接口例子.etcd api有v2(http+json)和v3(grpc)两个版本,目前大家都用v2,所以... v2: https://github.com/coreos ...