《统计学习方法》:第二章:感知机

该章结构

  • 一、感知机模型:
  • 二、 感知机的学习策略:
  • 三、 感知机的学习算法:


一、感知机模型:

  • 感知机:是二分类的线性分类模型,输入为:实例的特征向量,输出:实例类别(-1和+1)。
  • 感知机旨在:学习一个分离超平面,将训练数据进行线性划分。

1、感知机定义

  • 假设:输入空间为 X ∈ R n X∈R^n XRn,输出空间为 Y ∈ { − 1 , + 1 } Y∈\{-1,+1\} Y{1,+1},输入实例的特征向量为: x ∈ X x∈X xX它对应于输人空间的一个点。输入空间到输出空间的映射函数:
    f ( x ) = s i g n ( w ∗ x + b ) f(x)=sign(w*x+b) f(x)=sign(wx+b)被称为感知机;其中 w w w b b b是感知机模型的参数。 ∗ * 是矩阵乘法(内积运算)。 s i g n sign sign是符号函数:
    s i g n ( x ) = { + 1 x ≥ 0 − 1 x < 0 sign(x)= \begin{cases} +1 & x≥0 \\ -1 & x<0 \end{cases} sign(x)={+11x0x<0
  • 感知觉是一个线性分类模型。属于判别模型。其假设空间是定义在特征空间的所有线性分类模型:即函数集合 { f ( x ) = w ∗ x + b } \{f(x)=w*x+b\} {f(x)=wx+b}

2、几何解释

  • 感知机中的线性方程: w ∗ x + b = 0 w*x+b=0 wx+b=0,表示的是输入空间的一个超平面 S S S w w w为该超平面的法向量, b b b为法向量的截距。这个超平面将假设空间分为两部分,按照法向量的方向是分为上部分和下部分。严格的来说是三部分:平面上部空间,平面上和平面下部空间。平面上部空间的样本点代入 w ∗ x + b > 0 w*x+b>0 wx+b>0, 平面上的样本点: w ∗ x + b = 0 w*x+b=0 wx+b=0,平面下部空间样本点代入 w ∗ x + b < 0 w*x+b<0 wx+b<0。这样我们根据函数值就可以将样本分类。
  • 输入空间为平面时,分离超平面就是一条直线,如下图:
    《统计学习方法》:第二章:感知机_第1张图片

二、 感知机的学习策略:

1、数据集的线性可分性:

  • 给定数据集: T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) T={(x_1,y_1 ),(x_2,y_2 ),…,(x_N,y_N)} T=(x1,y1),(x2,y2),,(xN,yN),其中 x i ∈ X = R n , y i ∈ { + 1 , − 1 } , i = 1 , 2 , … N x_i∈X=R^n,y_i∈\{+1,-1\},i=1,2,…N xiX=Rn,yi{+1,1}i=1,2,N。如果存在超平面 S S S w ∗ x + b = 0 w*x+b=0 wx+b=0,能将训练集的正例和负例完全正确的分离到超平面的两侧,则称数据集 T T T线性可分的

2、感知机的学习策略:

  • 假设训练数据集线性可分,则感知觉的目标就是学习到一个分离超平面,要确定一个分离超平面,只需确定其中的 w w w b b b就可以了。
  • 为了得到我们想要的分离超平面,我们需要一个学习策略,即定义一个损失函数并将其最小化。
  • 一个很自然的损失函数就是误分类点的总数,但是这样的损失函数不是学习参数 w w w b b b的可导函数,不易优化。
  • 感知机采样的损失函数是:误分类点到超平面的总距离。样本点 x 0 x_0 x0到超平面 S S S的距离为: 1 ∣ ∣ w ∣ ∣ ∣ w ∗ x 0 + b ∣ \frac{1}{||w||}|w*x_0+b| w1wx0+b
  • 不考虑 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} w1,故感知觉的损失函数为: − y i ( w ∗ x i + b ) -y_i (w*x_i+b) yi(wxi+b)
  • 总结:给定训练集: T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) T={(x_1,y_1 ),(x_2,y_2 ),…,(x_N,y_N)} T=(x1,y1),(x2,y2),,(xN,yN),其中 x i ∈ X = R n , y i ∈ + 1 , − 1 , i = 1 , 2 , … N x_i∈X=R^n,y_i∈{+1,-1},i=1,2,…N xiX=Rn,yi+1,1i=1,2,N.感知机的损失函数为: L ( w , b ) = − ∑ x i ∈ M y i ( w ∗ x i + b ) L(w,b)=-∑_{x_i∈M}y_i (w*x_i+b) L(w,b)=xiMyi(wxi+b)其中 M M M为误分类的样本集合,即满足 y i ( w ∗ x i + b ) ≤ 0 y_i (w*x_i+b)≤0 yi(wxi+b)0的样本集合。
  • 注意:对于不考虑 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} w1的原因,书上没有讲,网上版本比较多,我比较认同的一个解释是:
    • 感知机的任务是进行二分类工作,它的最终目的是找到一个分离超平面,不是找到最优的那个分离超平面,所以它并不关心得到的超平面离各点的距离是多少,只是关心我最后是否已经正确分类样本,比如说下面红色与绿线,对于感知机来说,效果任务是一样好的:
      《统计学习方法》:第二章:感知机_第2张图片
    • 所以我们可以不考虑 w w w的范式,直接去掉它,因为这个时候我们只考虑误分类点,当一个误分类点出现的时候,我们进行梯度下降,对 w , b w,b wb进行改变即可!跟距离没有什么关系了,因为 w w w的范式始终是大于0,对于我们判断是否为误分类点没有影响!这也回到了我们最初始那个最直观的损失函数:误分类点的个数。引入距离,只是将它变成一个可导的形式!
  • 感知机的学习策略是:在假设空间中选取损失函数最小的模型。

三、 感知机的学习算法:

  • 感知机的学习问题转化为求解损失函数的最优化问题,最优化方法是随机梯度下降法。

1、感知机学习算法的原始形式:

  • 给定训练集: T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) T={(x_1,y_1 ),(x_2,y_2 ),…,(x_N,y_N)} T=(x1,y1),(x2,y2),,(xN,yN),其中 x i ∈ X = R n , y i ∈ { + 1 , − 1 } , i = 1 , 2 , … N x_i∈X=R^n,y_i∈\{+1,-1\},i=1,2,…N xiX=Rn,yi{+1,1}i=1,2,N.求参数 w , b w,b w,b。使其以下损失函数(目标函数)极小化问题的解:
    min ⁡ w , b ⁡ L ( w , b ) = − ∑ x i ∈ M y i ( w ∗ x i + b ) \min_{w,b}⁡L(w,b)=-∑_{x_i∈M}y_i (w*x_i+b) w,bminL(w,b)=xiMyi(wxi+b)其中 M M M为误分类的样本集合。
  • 感知机学习算法为随机梯度下降算法步骤如下:
    • 第一步:任选超平面 w 0 , b 0 w_0,b_0 w0,b0
    • 第二步:从训练集任选一个样本 ( x i , y i ) (x_i,y_i) (xi,yi).
    • 第三步:如果 y i ( w ∗ x i + b ) ≤ 0 y_i (w*x_i+b)≤0 yi(wxi+b)0,使用梯度下降法不断极小化上面目标函数。
      • 极小化过程不是一次性使用 M M M中所有误分类点的梯度下降,而是每次随机选取一个误分类点使其梯度下降。
      • 假设集合 M M M是固定的,损失函数(目标函数) L ( w , b ) L(w,b) L(w,b)的梯度为:
        ∇ w L ( w , b ) = − ∑ x i ∈ M y i x i ∇_w L(w,b)=-∑_{x_i∈M}y_i x_i wL(w,b)=xiMyixi ∇ b L ( w , b ) = − ∑ x i ∈ M y i ∇_b L(w,b)=-∑_{x_i∈M}y_i bL(w,b)=xiMyi
      • 上面的是损失函数(目标函数)对整个误分类集合 M M M的梯度,我们使用的是损失函数(目标函数)对某个误分类点 ( x i , y i ) (x_i,y_i) (xi,yi)的梯度:
        ∇ w L ( w , b ) = − y i x i ∇_w L(w,b)=-y_i x_i wL(w,b)=yixi ∇ b L ( w , b ) = − y i ∇_b L(w,b)=-y_i bL(w,b)=yi
      • 所有随机选取一个误分类点(x_i,y_i),对w和b的更新公式如下:
        w ← w − η ∇ w L ( w , b ) = w + η y i x i w←w-η∇_w L(w,b)=w+ηy_i x_i wwηwL(w,b)=w+ηyixi b ← b − η ∇ b L ( w , b ) = w + η y i b←b-η∇_b L(w,b)=w+ηy_i bbηbL(w,b)=w+ηyi
        其中η为步长
    • 第三步:重复第二、三两步直到训练集上没有错误样本点.

  • 该算法的直观解释
    • 当一个样本点被误分类时,即位于分离超平面的错误一侧,我们调整 w w w b b b的值,使分离超平面向误分类点的一侧移动,以减少误分类点到分类超平面的距离,直至分离超平面越过误分类点使其被正确分类。

2、感知机学习算法的对偶形式:

  • 对偶形式的基本想法:将 w w w b b b表示为实例 x i x_i xi和标记 y i y_i yi的线性组合的形式,通过求解出线性组合的系数从而得到 w w w b b b
  • 在上面的感知机学习算法的原始形式中,如果我们初始化 w 0 = b 0 = 0 w_0=b_0=0 w0=b0=0。那么最后得到的 w w w b b b可以表示为:
    w = ∑ i = 1 N α i y i x i w=∑_{i=1}^N α_i y_i x_i w=i=1Nαiyixi b = ∑ i = 1 N α i y i b=∑_{i=1}^N α_i y_i b=i=1Nαiyi其中 α i ≥ 0 α_i≥0 αi0为整个训练过程样本 ( x i , y i ) (x_i,y_i) (xi,yi)的总步长。这样我们的感知机就可以表示为: f ( x ) = s i g n ( ∑ i = 1 N α i y i x i ∗ x + ∑ i = 1 N α i y i ) f(x)=sign(∑_{i=1}^N α_i y_i x_i *x+∑_{i=1}^N α_i y_i ) f(x)=sign(i=1Nαiyixix+i=1Nαiyi)
  • 算法步骤: α = ( α 1 , α 2 , … , α N ) α=(α_1,α_2,…,α_N) α=(α1,α2,,αN)
    • 第一步:初始化: α = 0 α=0 α=0
    • 第二步:从训练集中选取一个样本 ( x i , y i ) (x_i,y_i) (xi,yi)
    • 第三步:如果 y i ( ∑ j = 1 N α j y j x j ∗ x i + ∑ i = 1 N α i y i ) ≤ 0 : y_i (∑_{j=1}^Nα_j y_j x_j *x_i+∑_{i=1}^Nα_i y_i )≤0: yi(j=1Nαjyjxjxi+i=1Nαiyi)0: α i ← α i + η α_i←α_i+η αiαi+η
    • 第四步:重复第二/三步,直到没有误分类点。
  • 注意:书中的算法过程使用 b b b来代替 ∑ i = 1 N α i y i ∑_{i=1}^Nα_i y_i i=1Nαiyi,但是我个人感觉这样更能体现对偶算法一点。
  • 对偶形式中训练实例x_i仅以内积的形式出现,所以我们可以预先将实例之间的内积求出来并保存到矩阵中,这个矩阵叫Gram矩阵: G = [ x i ∗ x j ] N × N G=[x_i*x_j ]_{N×N} G=[xixj]N×N

你可能感兴趣的:(统计学习方法)