这篇文章将介绍感知器、逻辑回归的求解和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. 判断安卓和IOS

    var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > - ...

  2. 29 个你必须知道的 Linux 命令

    虽然Linux发行版支持各种各样的饿GUI(graphical user interfaces),但在某些情况下,Linux的命令行接口(bash)仍然是简单快速的.Bash和 Linux Shell ...

  3. NSUserDefaults

    一.了解NSUserDefaults以及它可以直接存储的类型二.使用 NSUserDefaults 存储自定义对象1.将自定义类型转换为NSData类型2.将自定义类型数据存入 NSUserDefau ...

  4. Nginx 开启gzip 压缩

    随着nginx的发展,越来越多的网站使用nginx,因此nginx的优化变得越来越重要,今天我们来看看nginx的gzip压缩到底是怎么压缩的呢? gzip(GNU-ZIP)是一种压缩技术. 经过gz ...

  5. android 中theme和style的语法相关

    1.theme和style都是一组属性的集合,用于定义文本.颜色.大小等显示风格.他们都是资源,可以用android系统级别的一些默认的风格和主题资源,你也可以自定义你自己的主题和风格资源. 2.自定 ...

  6. Hive中的排序和分组(对map和reduce的影响,值得一看!)

    order by order by 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)只有一个reducer,会导致当输入规 模较大时,需要较长的计算时间. set ...

  7. HTML5 地理位置定位(HTML5 Geolocation)原理及应用

    地理位置(Geolocation)是 HTML5 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开发基于位置信息的应用.今天这篇文章向大家介绍一下 HTML5 地理位置定位的基本原理及各个 ...

  8. java批量insert入mysql数据库

    mysql 批量insert语句为 insert into Table_(col1,col2...) values(val11,val12...),(val11,val12...),...; java ...

  9. 启动struts2项目出现classnotfound错误

    由于工作需求.需要了解struts2项目,前几天部署了一个struts2的demo,研究url的解析过程,昨天还是好好的,今天修改了一下web.xml文件,然后启动Tomcat就报错,错误如下: 严重 ...

  10. Hibernate4.1之后关于占位符的问题

    hibernate 4.1之后对于HQL中查询参数的占位符做了改进,如果仍然用老式的占位符会有类似如下的告警信息 [main] WARN [org.hibernate.hql.internal.ast ...