您的位置: 旅游网 > 社会

最简单易懂的感知机教程从理论到实践附代码

发布时间:2019-08-15 12:12:43
最简单易懂的感知机教程:从理论到实践(附代码) 按:本文作者甄冉冉,原文载于作者个人博客,(公众号:)已获授权。 什么是感知机感知机是二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别(取+1和-1)。 感知机目的在求一个可以将实例分开的超平面,为了求它,我们用到基于误分类的损失函数和梯度下降的优化策略。 感知机模型比如x表示n维的数据,y表示数据的类别。则感知机公式可表示为: f(x) = sign(wx + b) 其中w,b为模型参数,w为权值,b为偏置。wx表示w,x的内积。这里sign是激励函数: sign(x) 该感知机超平面的线性方程为: w*x + b = 0 它的几何意义是: 该平面(w1x1 + w2x2 + b= 0)距离在轴上的坐标为: (0 , -b/w2) (-b/w1 , 0) (后面的代码会用到,这里提前说明下。) 这里再说明其他的一点知识并证明下 w为什么是超平面的法向量: 这里再补充点超平面的知识: 超平面分离定理是应用凸集到最优化理论中的重要结果,这个结果在最优化理论中有重要的位置。所谓两个凸集分离,直观地看是指两个凸集合没有交叉和重合的部分,因此可以用一张超平面将两者隔在两边。 回归正题: 我们将大于0的分为+1类,小于0的分为-1类。有些比如大于0的判断为-1类或者相反则就产生了损失,刚开始第一反应就是用误分类点的数目越少作为损失函数,但是这样的损失函数的w, b并不是连续可导,无法进行优化。 于是我们想转到另一种选择,就是误分类点到超平面的距离越短越好。距离公式如下: 如果忘记距离公式给你个提示: 而我们知道每一个误分类点都满足-yi(wx+b)0 因为当我们数据点正确值为+1的时候,你误分类了,那么你判断为-1,则算出来(wx0+b)0,所以满足-yi(w*x+b)0 当数据点是正确值为-1的时候,你误分类了,那么你判断为+1,则算出来(wx0+b0),所以满足-yi(wx+b)0 则我们可以将绝对值符号去掉,得到误分类点的距离为: 因为你知道,所以可以直接将绝对值去掉。那么可以得到总距离为: 不考虑w范数分之一(考虑和不考虑结果都一样,经过实验证明),我们可以得到损失函数为: 其中M为误分类点的数目 。 当我们已经有了一个目标是最小化损失函数,如下图: 我们就可以用常用的梯度下降方法来进行更新,对w,b参数分别进行求偏导可得: 那么我们任意初始化w,b之后,碰到误分类点时,采取的权值更新为w,b分别为: 整理下整个过程(比如二维平面): a.选定初值w1,w2,b (相当于初始化了一个超平面) b.在训练集中选取数据(xi,yi)(任意抽取数据点,判断是否所有数据点判断完成没有误分累点了,如果没有了,直接结束算法,如果还有进入c) c.如果yi(w*xi+b)0(说明是误分类点,就需要更新参数) 那么进行参数更新!更新方式如下: 其中η为学习率在之间。 代码讲解初始化数据 循环迭代更新 : 感知机:从原理到训练 知错能改的感知机(Perceptron) 版权文章,未经授权禁止转载。详情见转载须知。幼儿小便黄该怎么办
整肠生和妈咪爱效果一样吗
易过敏体质能吃维生素D吗
治疗急性心肌梗塞
猜你会喜欢的
猜你会喜欢的