版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37334135/article/details/85103215
1、感知机
学习资料:《统计学习方法》,cs229讲义,其他。
感知机是用来进行二类分类的分类模型,而感知机的学习过程就是求出将训练数据进行线性划分的分离超平面过程。下面会给出感知机模型,接着进行学习,最后证明算法的收敛性。
1.1、感知机模型
看下面的图,有两类点,记为-1和+1(负累和正类),我们需要求一条直线(超平面,用
wx+b=0来表示)来将它们进行划分。我们最后需要得到参数
w和
b,参数求解的过程就是感知机学习过程了。
假设输入空间
X是m维向量,输出空间
Y={+1,−1}。输入
x={x1,x2,...,xm}表示实例的特征向量;输出
y表示实例的类别。那么感知机模型表示如下:
f(x)=sign(wx+b)
其中
w称为权值,
b称为偏置,
wx=w1x1+w2x2+...+wmxm,当
wx+b>0时候
sign(wx+b)=+1,当
wx+b<0 时候
sign(wx+b)=−1。
现在要做的是求出这样的超平面
wx+b=0将空间分成正类和负类,接下来进行模型的学习,求解参数
w和
b。
1.2、感知机的学习算法
先给出数据集线性可分的定义:
给定一个数据集
T={(x1,y1),...,(xn,yn)},其中
xi 是m维向量(m个特征),
yi={+1,−1}表示类别,如果存在某个超平面
S
wx+b=0
能够将训练集的正实例点和负实例点正确的划分到超平面两侧,即:对于
y=+1的实例有
wxi+b>0,对于
y=−1的实例有
wxi+b<0,写到一起也就是
yi(wxi+b)>0那么就说数据集
T是线性可分的。
如果给定数据集是线性可分的,那么我们就可以去求这样的超平面
wx+b=0,参数
w,b求解过程也就成了感知机学习过程。我们定义损失函数,通过最小化损失函数值来进行参数的求解。
定义一个点
xi到超平面
wx+b=0的距离:
∣∣w∣∣1∣wxi+b∣
其中
∣∣w∣∣是向量
w的
L2范数,举个例子来说,假设超平面表示为
x1+2x2+3=0那么点(1,-2)刚好在上面,而
(1,1)带入
x1+x2+3中结果是6,而权重和偏置变成了原来两倍那么
(1,1)的距离就成了原来的2倍,所以我们使用了距离除以
L2范数进行距离的固定化,这样权重和偏置就算成倍增加那么距离也不会变了。这里叫做集合间隔,而不进行标准化的叫做函数间隔。
对于误分类的数据
(xi,yi),满足
yi(wxi+b)<0=>−yi(wxi+b)>0 ,所以该误分类的点到超平面的距离为:
−∣∣w∣∣1yi(wxi+b)
∣∣w∣∣1可以直接去掉,只要响应的变化内部系数即可,所以所有误分类的点
xi∈M到超平面的距离之和为:
J(w,b)=−xi∈M∑yi(wxi+b)
这就是我们的损失函数(也称做感知机学习的经验风险函数),我们的学习要求使得这个损失函数值最小,显然损失函数的值是大于等于0,只有当超平面将数据集正确划分了,那么就是没有误分类点此时损失函数值就是0。
超平面是连续可导的,所以损失函数也是连续可导,这里要求最小值,所以可以使用梯度下降(比如随机梯度下降)
wj:=wj−α∂wj∂J(w,b) for every j(表示第j个特征)
b:=b−α∂b∂J(w,b)
将损失函数带入求导可得:
wj:=wj+αxi∈M∑yixij
b:=b+αxi∈M∑yi
由于是使用随机梯度下降,那么伪代码我们写成下面的形式
fori=i1−>iM{wj:=wj+αyixij(针对没个j同时进行),b:=b+αyi}
具体的算法如下:
- 选取初始值
w0,b0
- 训练集中选取数据
(xi,yi)
- 找误分类点,即
yi(wxi+b)<=0,那么进行上面的
w和
b的更新操作,转到步骤2。直到没有误分类点为止。
1.3、算法的收敛性
对于上面的算法会不会存在,一直找不到这样的超平面导致会一直循环下去呢?答案是不会,也就是说经过有限次迭代可以得到一个将训练集正确划分的超平面,也就是说该算法具有收敛性。
为方便起见,进行如下的转换:
w=(wT,b),
x=(xT,1)T,为了方便起见后面将
T给去掉了。
那么
w⋅x+b=0就可以表示成
w⋅x=0
下面来进行证明收敛性
给定训练集
{(x1,y1),(x2,y2),...,(xn,yn)}是线性可分的。
(1)、证明存在满足条件
∣∣we∣∣=1的超平面
we⋅x=we⋅x+be=0,将训练集正确分开,且存在
γ>0,对所有的
i=1,2,…,n都有
yi(we⋅xi)=yi(we⋅xi+be)>=γ
证明: 由于训练集线性可分,自然就存在超平面
S将其正确划分,对于该超平面我们只需要规范一下,或者说同比例增加或者减少参数大小,是的满足
w=1即可,那么该平面就是我们想要的,记做
we⋅x=we⋅x+be=0。此时必然满足
yi(we⋅xi)=yi(we⋅xi+be)>0,我们将
γ 记做
minyi(we⋅xi+be),所以就得到对任意
i=1,2,…,n, 都有
yi(we⋅xi)=yi(we⋅xi+be)>=γ
(2)、令
R=i∈[1,n]max∣∣xi∣∣ ,则前面提到的感知机算法的误分类次数
k(或者说参数的迭代的轮次)满足如下不等式
k<=(γR)2
补充:如果满足了(2)那么就说明了算法的收敛性,也就是一定的迭代次数后能得到满足要求的超平面。下面开始证明
假设初始参数
w0=0,如果实例被误分类那么需要继续更新参数。对于第
k−1次参数
wk−1,对应的误分类实例为
xi,由于是误分类很自然的有
yi(wk−1⋅xi)=yi(wk−1⋅xi+bk−1)<0
根据前面写的随机梯度下降得到的公式如下(将所有的特征
j全部写到了一起,所以没有了
wj):
wk=wk−1+αyixi
bk=bk−1+αyi
k−1表示上一轮,
k表示当前,两个写到一起就是
wk=wk−1+αyixi
(2.1)、证明
we⋅wk>=kαγ
证明:
we⋅wk=we(wk−1+αyixi)=we⋅wk−1+αyiwexi>=we⋅wk−1+αγ>=we⋅wk−2+2αγ>=...>=we⋅w0+kαγ=kαγ
(2.2)、证明
∣∣wk∣∣2<=kα2R2
证明:
∣∣wk∣∣2=wk⋅wk=wk−1⋅wk−1+2αyiwk−1xi+α2∣∣xi∣∣2<=∣∣wk−1∣∣2+α2R2<=...<=kα2R2
根据(2.1)和(2.2)得到
kαγ<=we⋅wk<=∣∣we∣∣⋅∣∣wk∣∣=∣∣wk∣∣<=k
αR
=>k2α2γ2<=kα2R2,最后得到
k<=(γR)2