【统计学习方法】感知机笔记


感知机是用于二分类的线性模型,输入是实例的特征,输出是类别。感知机模型目标是找到将数据线性划分的分离超平面。

感知机模型

假设输入空间为: X ⊆ R n \mathcal X\sube \bf R^n XRn,输出空间为: Y = { + 1 , − 1 } \mathcal Y=\{+1,-1\} Y={+1,1},且有 x ∈ X , y ∈ Y x \in \mathcal X, y \in \mathcal Y xX,yY。感知机的模型如下:
f ( x ) = s i g n ( w ⋅ x + b ) f(x)=sign (w\cdot x+b) f(x)=sign(wx+b)
其中sign是指示函数:
s i g n ( x ) = { 0 , x ≥ 0 1 , x < 0 sign(x) = \begin{cases} 0,\qquad x \geq 0 \\1, \qquad x < 0\end{cases} sign(x)={0,x01,x<0
训练完成后的感知机模型为下面的线性方程:
w ⋅ x + b = 0 w\cdot x+b=0 wx+b=0
上面的公式表示一个划分超平面:

在这里插入图片描述

w是超平面的法向量,b是超平面的截距。感知机的目标就是找到合适的参数w和b,使得划分超平面可以区分正负两个类别。

感知机损失函数

假定有数据集如下:
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } x i ∈ X = R n , y i ∈ Y = { − 1 , + 1 } , i = 1 , 2 , … , N ;    0 < η ⩽ 1 T=\{(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)\}\\ x_i\in \mathcal X=\mathbf R^n, y_i\in \mathcal Y\it =\{-1,+1\}, i=1,2,\dots,N; \ \ 0<\eta\leqslant 1 T={(x1,y1),(x2,y2),,(xN,yN)}xiX=Rn,yiY={1,+1},i=1,2,,N;  0<η1
若训练集线性可分,损失函数可以用所有误分类点到超平面S的总距离表示。对某个样本而言,到超平面的距离为:
1 ∣ ∣ w ∣ ∣ ∣ w ⋅ x 0 + b ∣ \frac{1}{||w||}|w\cdot x_0 + b| w1wx0+b
对于误分类点,总有 w ⋅ x 0 + b w\cdot x_0 + b wx0+b y i y_i yi 符号相反,故有:
− y i ( w ⋅ x 0 + b ) > 0 -y_i(w\cdot x_0 + b)>0 yi(wx0+b)>0
进而可以得到误分类点到超平面的距离:
− 1 ∣ ∣ w ∣ ∣ y i ( w ⋅ x 0 + b ) -\frac{1}{||w||} y_i(w\cdot x_0 + b) w1yi(wx0+b)
假设误分类点构成集合M,则误分类点到超平面的距离之和为:
− 1 ∣ ∣ w ∣ ∣ ∑ x i ∈ M y i ( w ⋅ x i + b ) -\frac{1}{||w||}\sum_{x_i\in M}y_i(w\cdot x_i+b) w1xiMyi(wxi+b)
∣ ∣ w ∣ ∣ = 1 ||w||=1 w=1,得到损失函数:
L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) L(w,b)=-\sum_{x_i\in M}y_i(w\cdot x_i+b) L(w,b)=xiMyi(wxi+b)

感知机参数学习

学习算法的原始形式

目标是找到最佳的参数w,b,使得损失函数最小化:
min ⁡ w , b L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) \min\limits_{w,b} L(w,b)=-\sum_{x_i\in M}y_i(w\cdot x_i+b) w,bminL(w,b)=xiMyi(wxi+b)
可以采用随机梯度下降法来优化参数,首先需要求w和b的偏导数:
∂ L ( w , b ) ∂ w = − ∑ x i ∈ M x i y i ∂ L ( w , b ) ∂ b = − ∑ x i ∈ M y i \frac{\partial L(w,b)}{\partial w} = -\sum_{x_i \in M} x_i y_i\\ \frac{\partial L(w,b)}{\partial b} = -\sum_{x_i \in M} y_i wL(w,b)=xiMxiyibL(w,b)=xiMyi
然后更新参数,其中 η \eta η为学习率:
w ← w + η y i x i b ← b + η y i w\leftarrow w+\eta y_ix_i \\ b\leftarrow b+\eta y_i ww+ηyixibb+ηyi
算法流程如下:

输入: T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } x i ∈ X = R n , y i ∈ Y = { − 1 , + 1 } , i = 1 , 2 , … , N ;    0 < η ⩽ 1 T=\{(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)\}\\ x_i\in \mathcal X=\mathbf R^n , y_i\in \mathcal Y\it =\{-1,+1\}, i=1,2,\dots,N; \ \ 0<\eta\leqslant 1 T={(x1,y1),(x2,y2),,(xN,yN)}xiX=Rn,yiY={1,+1},i=1,2,,N;  0<η1

输出: w , b ; f ( x ) = s i g n ( w ⋅ x + b ) w,b;f(x)=sign(w\cdot x+b) w,b;f(x)=sign(wx+b)

1,选取初值 w 0 , b 0 w_0,b_0 w0,b0

2,训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)

3,如果某个样本误分类了,即 y i ( w ⋅ x i + b ) ⩽ 0 y_i(w\cdot x_i+b)\leqslant 0 yi(wxi+b)0,则更新参数:
w ← w + η y i x i b ← b + η y i w\leftarrow w+\eta y_ix_i \\ b\leftarrow b+\eta y_i ww+ηyixibb+ηyi
4,转至(2),直至训练集中没有误分类点

学习算法的对偶形式

上面的原始学习算法,我们通过以下方式更新参数:
w ← w + η y i x i b ← b + η y i w\leftarrow w+\eta y_ix_i \\ b\leftarrow b+\eta y_i ww+ηyixibb+ηyi
由于我们把w和b都初始化为0,所以每次更新w和b实际上都是在对 η y i x i \eta y_ix_i ηyixi η y i \eta y_i ηyi的累加。对偶形式的基本思想是,用实例 x i x_i xi和标记 y i y_i yi来表示w和b。对于某个误分类的样本i,可能需要 n i n_i ni次对w,b的迭代才能使之正确分类,令 α i = n i η \alpha_i = n_i\eta αi=niη则有:
w = ∑ i = 1 N n i η y i x i = ∑ i = 1 N α i y i x i b = ∑ i = 1 N n i η y i = ∑ i = 1 N α i y i w = \sum_{i=1}^Nn_i\eta y_i x_i = \sum_{i=1}^N\alpha_i y_i x_i \\ b = \sum_{i=1}^Nn_i\eta y_i = \sum_{i=1}^N\alpha_i y_i w=i=1Nniηyixi=i=1Nαiyixib=i=1Nniηyi=i=1Nαiyi
上面的式子就能够仅仅用 x i x_i xi和标记 y i y_i yi的线性组合来表示w和b,于是算法流程更新为:

输入: T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } x i ∈ X = R n , y i ∈ Y = { − 1 , + 1 } , i = 1 , 2 , … , N ; 0 < η ⩽ 1 T=\{(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)\}\\ x_i\in \mathcal{X}=\mathbf{R}^n , y_i\in \mathcal{Y} =\{-1,+1\}, i=1,2,\dots, N; 0< \eta \leqslant 1 T={(x1,y1),(x2,y2),,(xN,yN)}xiX=Rn,yiY={1,+1},i=1,2,,N;0<η1

输出:
α , b ; f ( x ) = s i g n ( ∑ j = 1 N α j y j x j ⋅ x + b ) α = ( α 1 , α 2 , ⋯   , α N ) T \alpha ,b; f(x)=sign\left(\sum_{j=1}^N\alpha_jy_jx_j\cdot x+b\right)\\ \alpha=(\alpha_1,\alpha_2,\cdots,\alpha_N)^T α,b;f(x)=sign(j=1Nαjyjxjx+b)α=(α1,α2,,αN)T

  1. α ← 0 , b ← 0 \alpha \leftarrow 0,b\leftarrow 0 α0,b0
  2. 训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)
  3. 如果 y i ( ∑ j = 1 N α j y j x j ⋅ x + b ) ⩽ 0 y_i\left(\sum_{j=1}^N\alpha_jy_jx_j\cdot x+b\right) \leqslant 0 yi(j=1Nαjyjxjx+b)0

α i ← α i + η b ← b + η y i \alpha_i\leftarrow \alpha_i+\eta \\ b\leftarrow b+\eta y_i αiαi+ηbb+ηyi

  1. 转至(2),直至训练集中没有误分类点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值