前言:本人也是刚刚入门机器学习,就像入门很多语言一样,第一个程序总是Hello World 。机器学习也不然,入门机器学习的第一个程序就是感知机啦。感知机是二类线性分类模型,输出的值为{+1, -1}两种类型,感知机是利用超平面将两类分离,多个不同的感知机就可以组成一张神经元网络,再往上就是人工智能系统然后就是终结者阿诺......越说越离题了。
好啦步入正题吧。下面我从三个方面简单阐述一下这个感知机到底是个什么妖怪:感知机模型,感知机学习策略,感知机学习算法。(部分代码以及资料引用了网上的)
一、感知机模型:
假设输入空间(特征空间)是X∈Rn,输出空间是Y={+1, -1},仅有两种结果,就好比一条线,位于线上方的点带入该线的方程得到的y值总是大于0,所以感知机是一种线性分类模型,属于判别模型。输入x∈X表示实例特征向量。对应于输出空间(特征空间)的点:输出y∈Y表示实例类别,由输入空间到输出空间的如下函数:
f(x)=sign(w*x+b)={-1,+1}。
线性方程w*x+b 其中w称为权值,b称为偏置。咱们的感知机呢正是通过很多训练集来训练自己,从而不断更新w和b,直到找到一个最优的分类位置。
对应于特征空间Rn 中的一个超平面S,其中w是超平面的法向量,b是超平面的截距。根据这个原理我们可以推导出计算距离的公式:
能够将数据集的正实例和负实例完全正确的划分到超平面的两侧,则称数据集T是线性可分数据集,否则称线性不可分数据集。
二、感知机学习策略:
就像咱们有自己的学习方法一样,感知机也有自己的学习方法。而感知机的学习方法我们常称为损失函数。同时我们要将这个损失函数极小化,这就要求它是连续可导的。损失函数有两种选择:一、误分类点的总数;二、误分类点到超平面S的距离;第一种不易于优化,因此我们通常选择第二种。什么叫误分类点呢?如图:
我画了这样子的一条线,意在将两种颜色的圆分类,但蓝色类里面多了一个红色的,这个红色的就称之为误分类点啦。
对于误分类点来说,它到超平面的距离计算就相当于蓝色圈到超平面的距离取反,因为它代入超平面方程得到的y值应该是负值。也就是这个:
那么总距离就是:
因此,感知机sign(wx+b)的损失函数可以简写为:
三、感知机学习算法:
感知机学习问题转化为求解损失函数最优化问题,最优化的方法是随机梯度下降法。感知机学习算法有两种形式:原始形式和对偶形式。在训练数据线性可分的条件下,感知机学习算法是收敛的。
原始形式
我的感知机采用的正是原始形式,原始形式是通过给定的训练数据集T={(x1,y1), {x2,