热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

李航《统计学习方法》第二版第2章感知机浅见

李航《统计学习方法》第二版-第2章感知机浅见2.1感知机模型2.2感知机学习策略2.3感知机学习方法总结2.1感知机模型感知机是二分类线性模型,输入为实例的特征向量

李航《统计学习方法》第二版-第2章 感知机 浅见

  • 2.1 感知机模型
  • 2.2 感知机学习策略
  • 2.3 感知机学习方法
    • 总结


2.1 感知机模型

感知机是二分类线性模型,输入为实例的特征向量,输出为类别,-1和1。

目的是求出将数据分离的超平面,基于误分类的损失函数,用梯度下降法进行最小化,求得感知机模型。

感知机的定义简单就是输入空间X,输出Y={1,-1}。即:
f(x)=sign(w⋅x+b)f(x)=sign(w\cdot x+b)f(x)=sign(wx+b)
w叫权重,就是影响程度,b叫偏置,就是修正偏差用的。其实后面更新的就这两个参数,w就是斜率,旋转多少,w就是平移多少,sign是符号函数,即:
sign(x)&#61;{&#43;1,x≥0−1,<0sign(x)&#61;\left\{ \begin{aligned} &&#43;1,x \geq 0 \\ &-1 ,<0 \\ \end{aligned} \right.sign(x)&#61;{&#43;1,x01,<0

线性方程 w⋅x&#43;b&#61;0w\cdot x&#43;b&#61;0wx&#43;b&#61;0对应于特征空间的一个超平面&#xff0c;w是法向量&#xff0c;b是截距。二维就是一条线将样本分成两类&#xff0c;三维空间就是一个平面分割成两部分。简单可以如图所示&#xff1a;
在这里插入图片描述

2.2 感知机学习策略

我们应该选择怎么样的感知机呢&#xff0c;就是要定个损失函数。我们当然希望能够分清所有的样本&#xff0c;没有偏差&#xff0c;所以损失函数可以定义成有偏差&#xff0c;就是某个样本到超平面的距离&#xff0c;首先要先选出分类分错的样本&#xff0c;即做(xi,yi)(x_i,y_i)(xi,yi)&#xff0c;则分错就是真实的类别和错分的类别相反了&#xff0c;也就是相乘是<0。所以可以是这样:
−yi(w⋅xi&#43;b)>0-y_i(w\cdot x_i&#43;b)>0yi(wxi&#43;b)>0
即真实的和预测的结果异号。因此到超平面的距离是&#xff1a;−1∣∣w∣∣yi(w⋅xi&#43;b)-{\frac {1} {||w||}y_i(w\cdot x_i&#43;b)}w1yi(wxi&#43;b)

这样所有分类错的点的集合设为M&#xff0c;到超平面的总距离为:−1∣∣w∣∣∑xi∈Myi(w⋅xi&#43;b)-\frac{1}{||w||} \sum_{x_i \in M} y_i(w\cdot x_i&#43;b)w1xiMyi(wxi&#43;b)

不考虑1∣∣w∣∣\frac {1} {||w||}w1,这个是常数&#xff0c;就得可以得到感知机学习的损失函数。

对于给定训练集T&#61;(x1,y1),(x2,y2),...,(xN,yN)T&#61;{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)}T&#61;(x1,y1),(x2,y2),...,(xN,yN)
其中xi∈X&#61;Rnx_i \in X&#61;R^nxiX&#61;Rn,yi∈Y&#61;{1,−1}y_i\in Y&#61;\{1,-1\}yiY&#61;{1,1}&#xff0c;i&#61;1,2,..,Ni&#61;1,2,..,Ni&#61;1,2,..,N。则损失函数定义为:
L(w,b)&#61;−∑xi∈Myi(w⋅xi&#43;b)L(w,b)&#61;- \sum_{x_i \in M} y_i(w\cdot x_i&#43;b)L(w,b)&#61;xiMyi(wxi&#43;b)
其中M为分类错误点的集合。

2.3 感知机学习方法

当然采用梯度下降法啦&#xff0c;而且是随机梯度下降法&#xff0c;每次随机选一个错分类的点来进行梯度下降&#xff0c;损失函数的梯度由:
∇wL(w,b)&#61;−∑xi∈Myixi\nabla_wL(w,b)&#61;-\sum_{x_i \in M} y_ix_iwL(w,b)&#61;xiMyixi
∇bL(w,b)&#61;−∑xi∈Myi\nabla_bL(w,b)&#61;-\sum_{x_i \in M} y_ibL(w,b)&#61;xiMyi
给出。

随机选取一个错分类点(xi,yi)(x_i,y_i)(xi,yi),对w&#xff0c;b进行更新&#xff1a;
w←w&#43;ηyixiw \leftarrow w&#43;\eta y_ix_iww&#43;ηyixi
b←b&#43;ηyib \leftarrow b&#43;\eta y_ibb&#43;ηyi

其中η\etaη是步长&#xff0c;也就是学习率&#xff0c;这样就不断的进行&#xff0c;使得最后损失函数不断减小&#xff0c;直到为0。

基本算法就是:
1.选取初值w0,b0w_0,b_0w0,b0;
2.在训练集上选取数据(xi,yi)(x_i,y_i)(xi,yi);
3.如果1∣∣w∣∣yi(w⋅xi&#43;b)≤0{\frac {1} {||w||}y_i(w\cdot x_i&#43;b)} \leq0w1yi(wxi&#43;b)0,
w←w&#43;ηyixiw \leftarrow w&#43;\eta y_ix_iww&#43;ηyixi
b←b&#43;ηyib \leftarrow b&#43;\eta y_ibb&#43;ηyi
4.转至2&#xff0c;直至训练集中没有错分类的.

很容易理解&#xff0c;就不多说了。做实验会发现&#xff0c;采取不同的初值或者选取不同的错分类点&#xff0c;解可以不同&#xff0c;并且该算法也右收敛性的理论证明&#xff0c;具体可以去看书&#xff0c;我就不写了&#xff0c;因为写了大多人也不会看的哈哈。

还有中算法就是叫对偶形式&#xff0c;名字比较奇怪&#xff0c;其实因为是收敛的&#xff0c;那必定是有限次更新可以完成&#xff0c;所以可以写出训练集之间内积的形式&#xff0c;而且内积可以服用&#xff0c;存在一个矩阵里&#xff0c;其他原理和上面的算法一样。

总结

感知就模型就是二分类的线性模型&#xff0c;利用梯度下降法将错分类降到最低。

好了&#xff0c;今天就到这里了&#xff0c;希望对学习理解有帮助&#xff0c;大神看见勿喷&#xff0c;仅为自己的学习理解&#xff0c;能力有限&#xff0c;请多包涵&#xff0c;部分图片来自网络,侵删。


推荐阅读
author-avatar
fjfzfisher
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有