专栏名称: 机器学习研究会
机器学习研究会是北京大学大数据与机器学习创新中心旗下的学生组织,旨在构建一个机器学习从事者交流的平台。除了及时分享领域资讯外,协会还会举办各种业界巨头/学术神牛讲座、学术大牛沙龙分享会、real data 创新竞赛等活动。
目录
相关文章推荐
爱可可-爱生活  ·  【WassersteinFlowMatchi ... ·  3 天前  
黄建同学  ·  让 AI ... ·  4 天前  
51好读  ›  专栏  ›  机器学习研究会

【学习】浅析感知机(二)--学习算法及python代码剖析

机器学习研究会  · 公众号  · AI  · 2017-04-12 19:16

正文



点击上方“机器学习研究会”可以订阅哦
摘要
 

转自:自然语言处理与机器学习

在上篇文章【学习】浅析感知机(一)--模型与学习策略中 我已经表达清楚了感知机的型以及学习策略,明白了感知机的任务是解决二分类问题学习策略是优化损失函数


那么我们怎么来进行学习呢?根据书中例子给出python代码实现!



1 学习算法

当我们已经有了一个目标是最小化损失函数,如下图:



我们就可以用常用的梯度下降方法来进行更新,对w,b参数分别进行求偏导可得:



那么我们任初始化w,b之后,碰到误分类点时,采取的权值更新为w,b分别为:

好了,当我碰到误分类点的时候,我们就采取上面的更新步骤进行更新参数即可!但李航博士在书中并不是用到所有误分类点的数据点来进行更新,而是采取随机梯度下降法(stochastic gradient descent)。


步骤如下,首先,任取一个超平面w0,b0,然后用梯度下降法不断地极小化目标函数极小化过程不是一次是M中所有误分类点的梯度下降而是一次随机选取一个误分类点使其梯度下降


有证明可以证随机梯度下降可以收敛,并更新速度快于批量梯度下降,在这里不是我们考虑的重点,我们默认为它能收敛到最优点即可


那么碰到误分类点时候,采取的权值更新w,b分别为:



好了,到这里我们可给出整个感知机学习过程算法!如下:


(1)选定初值w0,b0,(当于初始给了一个超平面


(2)在训练集中选取数据(xi,yi)(任意抽取数据点,判断是否所有数据点判断完成没有误分累点了,如果没有了,直接结束算法,如果还有进入(3)


(3)如果yi(w*xi+b)<0(说明是误分类点,就需要更新参数)

那么进行参数更新!更新方式如下:



这种更新方式,我们直观上的感觉,可以可视化理解一下,如下图:



当我们数据点应该分类为y=+1的时候,我们分错了,分成-1(说明w*x<0,代表w与x向量夹角大于90度),这个时候应该调整,更新过程为w=w+1*x,往x向量方向更接近了!


第二种更过程如下图:



当我们数据点应该分类为y=-1的时候,我们分错了,分成+1(说明w*x>0,代表w与x向量夹角小于90度),这个时候应该调整,更新过程为w=w-1*x,往远离x向量方向更接近了!


(4)转到(2),直到训练集中没有误分类点(能够证明在有限次更新后,收敛,下篇文章会讲到!)


到这里为止,其实感知机算法理论部分已经全部讲完了,下面我给出算法python代码实现以及详细的代码注释!


原文链接:

http://mp.weixin.qq.com/s/Qh7xo9bI31WCfYFMOO4WJg

“完整内容”请点击【阅读原文】
↓↓↓