这篇文章将介绍感知器、逻辑回归的求解和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. app的推广

    安卓之家:http://www.ard9.com/bgxx/2639206.html 安贝市场:http://app.youxibaba.cn/app/info/appid/303997 安卓园:ht ...

  2. hibernate 中createQuery与createSQLQuery两个用法

    hibernate 中createQuery与createSQLQuery两者区别是:前者用的hql语句进行查询,后者可以用sql语句查询前者以hibernate生成的Bean为对象装入list返回后 ...

  3. Favorite Setting

    1. You Tube download Opera plugin:Video Downloader Pro Website:http://en.savefrom.net 2.

  4. 蓝牙-HCI错误码列表

    错误码定义: /* Success code */ #define HCI_SUCCESS 0x00 /* Possible error codes */ #define HCI_UNKNOWN_HC ...

  5. iOS 统计App 的代码总行数

    打开Terminal,cd 到项目的根目录下,输入以下命令 find . -name "*.m" -or -name "*.mm" -or -name &quo ...

  6. python3 filter用法(举例求0~n之间的素数)

    在用python3求0~n之间的素数时,关于filter用法的有点模糊,于是上网查了一下filter用法. 求0~n之间素数的脚本prime.py: def f(x): plist = [0,0] + ...

  7. C++ CreateThread 实例

    //ThreadBase.h#pragma once #include<windows.h> class CThreadBase { public: CThreadBase(void); ...

  8. Dos学习笔记(3)attrib命令

    今天和昨天一直在摸索这个命令觉得这个命令为什么改变不了文件夹的属性, 因为我试着用attrib +r /s 去修改子文件夹的时候发现没用,然后如果输入 attrib +r /d 又提示说/d需要和/s ...

  9. Reveal UI 分析工具简单使用

    官网下载地址(30天免费试用):http://revealapp.com/ 作用: 在 iOS 开发中,我们有时很希望有一款类似 Web 开发中的 UI Debug 工具(例如:Firebug),让我 ...

  10. linux 模块常用命令

    lsmod | grep pcspkr  查看pcspkr模块是否运行modprobe -r pcspkr   删除pcspkr模块modinfo pcspkr       查看pcspkr模块信息m ...