1 2 3 4

【python与机器学习实战】感知机和支持向量机学习笔记(一)

对《Python与机器学习实战》一书阅读的记录,对于一些难以理解的地方查阅了资料辅以理解并补充和记录,重新梳理一下感知机和SVM的算法原理,加深记忆。


 

1.感知机

感知机的基本概念

  感知机是运用梯度下降学习过程的最简单的机器学习算法之一,是神经网络和支持向量机的基础。具体提出是由Rosenblatt这个人提出的,具体背景略。这里仅对感知机算法进行介绍:

  对于二分类问题,假设一个数据集D={(x1,y1),...,(xN,yN)},存在一个平面(超平面)wx+b=0将数据分成两类,使得:

       则称数据为线性可分的,否则为线性不可分。那么,感知机的损失函数可以表示为:

       其中E表示误分类的集合,即:

 

      那么利用梯度下降法,对参数进行更新,更新过程如下:

 

   值得一提的是,考虑到计算速度问题,可采用随机梯度下降(SGD)或批量梯度下降(BGD)进行参数更新,若为随机梯度下降,随机选取一个被误分类的样本进行参数的更新,则偏导数为:

 
  上述即为感知机的学习算法过程,最终学习的模型为:

 

  感知机的对偶形式

  对偶形式通常是为了解决原始问题较为复杂,经转换为对偶形式后能够方便求解,对于特定问题原始算法的对偶形式存在一些共性。虽然感知机的原始形式比较简单,但为了便于后面SVM算法的对偶形式的理解,这里对感知机的对偶形式的转化过程进行讲述。

  上述参数更新过程每一次选取一个分错的样本点对参数进行更新,假设在最终训练结束后,样本点(xi,yi)共被选取到了ni次,那么最终参数更新为:

 

  设αi=ηni,则上式改写为:

 

   那么误分类集合E可表示为:

  当存在有误分类的点时,随机选取xi对应下标的αi进行更新(随机梯度下降),从而对α进行更新:

  这里需要说明的是:

  即实际上参数的更新就是对选取到样本点xi的次数ni进行更新。

2.从感知机到支持向量机

  在二分类情况下,感知机所关注的主要是将样本分成两类即可,理论上讲,只要是线性可分的数据集,只要迭代次数足够大,就一定能够将样本分开。但这对于最终模型的泛化能力没有保证,换句话说就是“虽然分开了,但是哪种分开的情况下才是最好呢?”,如图所示:

 

  图中蓝线和红线都将样本分成两类(假设红色为class1,蓝色为class2),但对于一个新的样本(绿色),采用蓝线时,新样本属于class1,而采用红线划分时,新样本属于class2。

  因此,SVM就是为了解决这样的问题的一种改进的方法。显然对于上图中直觉上红线的划分效果最好,保证了两边的数据点被划分时有较大的“间隔”,这也是SVM算法的主旨思想,即:在进行划分的过程中使距离分离超平面最近的点的距离最大。具体数学描述如下:

  假设分离超平面为wx+b=0,那么样本点(xi,yi)距离平面的距离(这里距离指的是几个间隔,区别于函数间隔,该距离还有一个推导过程,某度可查)可以表示为:

(因在正侧为正,在负一侧为负,因此乘以yi即可)

   那么,使得距离分离超平面距离最小的样本点的距离最大的数学描述为:

   这里不妨令函数间隔为1(具体为什么设为1,一方面是便于推导,另一方面对于目标函数的优化没有影响,详细证明过程暂不考究),即:

  那么问题转化为:

    上述即为SVM算法的基本概述,至于如何求解,后文再说。

  对于线性可分的数据采用上述约束条件能够将数据完美分开,这就是硬间隔SVM基于该假设进行的,而通常数据中存在一定的噪音,并不能完全是线性可分的,此时将采用软间隔的方法对数据进行训练。所谓软间隔,就是在划分数据时给予一定的容忍,同时为了限制这个容忍度,在目标函数中加上一定的惩罚,来制衡这种容忍程度,这里容忍度称之为松弛变量,记为ξ,具体描述如下:

  将约束条件加上一个松弛变量,即为:

   同时在目标函数中加入惩罚项,来约束松弛变量:

  那么,根据约束条件,引入Hinge损失,记为l,则l可以表示为:

  那么最终的目标函数变为:

  接下来就是如何求解SVM的问题,一种是采用梯度下降的直接进行参数迭代求解,另一种是转换为求解问题的对偶形式,在进行求解。

利用梯度下降算法求解SVM

  将上式作为损失函数进行求解,记为:

  那么分别对w,b进行求导,则有:

  根据每一次迭代的误差项e,误差项计算公式为:

  选择误差项最大的一项对应的样本点进行参数更新,即:

  然后选取(xi,yi)对参数进行更新,更新过程为:

  最终输出模型:

 


 

SVM初步的介绍就先写到这里,后续将对SVM的对偶形式及其求解,以及核方法在SVM的运用进一步进行梳理。

 

参考文献:

何宇健 《Python与机器学习实战》

 

posted @ 2021-08-04 19:38  Uniqe  阅读(337)  评论(0编辑  收藏  举报