呆鸟的Python数据分析人工智能/模式识别/机器学习精华专题大数据,机器学习,人工智能

机器学习算法—感知机

2019-08-18  本文已影响46人  皮皮大

author : Peter
date: 2019-08-18


感知机Perceptron

导读

感知机是二分类的线性分类模型,输入是实例的特征向量(每个属性),输出是实例的类别。感知机对应于输入空间中将实例划分为正负两类的分离超平面,属于判别模型。

感知机原理剖析及实现

应用实例

比如说我们有一个坐标轴(图中的黑色线),横的为x1轴,竖的x2轴。图中的每一个点都是由(x1,x2)决定的。

  • 如果我们将这张图应用在判断零件是否合格上,x1表示零件长度,x2表示零件质量,坐标轴表示零件的均值长度和均值重量,并且蓝色的为合格产品,黄色为劣质产品,需要剔除。
  • 那么很显然如果零件的长度和重量都大于均值,说明这个零件是合格的。也就是在第一象限的所有蓝色点。反之如果两项都小于均值,就是劣质的,比如在第三象限的黄色点。
  • 在预测上很简单,拿到一个新的零件,我们测出它的长度x1,质量x2,如果两项都大于均值,说明零件合格。这就是我们人的人工智能。


    image.png

定义

现在假设输入空间是X\subseteq{R^n},输出空间Y=\{+1, -1\}。输入x\in X表示实例的特征向量,输出y\in Y表示实例的类别,其中输入到输出的函数表示如下:f(x)=sign(w.x+b),称为感知机

感知机的几何解释为线性方程:w \bullet x+b=0这条直线就是最好的那条线,最优解。特征空间R^n对应一个超平面S,其中w是超平面的法向量b是超平面的截距。超平面将特征空间划分为两个部分。位于两部分的点分为正负两个类别。正类为+1,父类为-1。

栗子(图2.1):


image.png

策略

给定一个数据集T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}其中x_i是输入空间实例的特征向量,y_i是实例的输出类别,如果存在超平面S满足将数据集的正负实例完全分开,即满足:当w.x_i+b>0 ,有y_i=+1;当w.x_i+b<0 ,有y_i=-1。此时,将所有的数据分为线性可分数据集,否则称为线性不可分。

算法

原始形式

算法思想

感知机学习算法的最优化问题就是求解损失函数的最小值,即:\mathop {\min \limits_{w,b}L(w,b)}=\sum_{x_i \in M}{y_i}{(w.x_0+b)}。感知机的算法是误分类驱动的,具体采用的是随机梯度下降法(stochastic gradient descent),大致过程如下:

算法描述

输入:训练数据集T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\},其中x_i\in X=R^n,y_i \in Y=\{-1, +1\}, i=1,2,....,N;学习率0 < \eta \leq 1

输出:w,b;感知机模型f(x)=sign(w.x+b)

直观解释:当有一个误分类点在超平面的错误一侧,调整w,b的值,使得分离超平面向着该误分类点的一侧移动,从而较小误分类点和超平面的距离,直至超平面越过该点,使其被正确地分类

栗子(2.1):


image.png image.png image.png image.png

对偶形式:

算法思想

对偶形式的基本思想是将w,b表示为实例x_i和输出类别y_i的线性组合的形式,通过求解系数从而求得wb

假设w,b的初值是都是0,对于误分类点通过:w\gets{w+\eta{y_ix_i}} b\gets{b+\eta{y_i}}逐步地去修改w,b,设修改n次,则w,b关于(x_i,y_i)的增量分别是\alpha _iy_ix_i\alpha_iy_i,其中\alpha_i=n_i\eta,通过不断地迭代过程,最终学习到的w,b分别表示为:w=\sum _{i=1}^{N}\alpha _iy_ix_i b=\sum _{i=1}^{N}\alpha _iy_i

在上面两个迭代式子中,\alpha_i \geq{0}, i=1,2,....N;当\eta=1时,表示第i个实例点由于误分类而进行更新的次数。

算法描述

输入:给定线性可分的训练数据集T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\},其中x_i\in X=R^n,y_i \in Y=\{-1, +1\}, i=1,2,....,N;学习率0 < \eta \leq 1

输出:\alpha, b;感知机模型f(x)=sign(\sum _{j=1}^{N}{\alpha_jy_jx_j}.x+b)其中,\alpha=(\alpha_1,....,\alpha_N)^T;训练过程为:

1.给定初值\alpha \gets 0,b\gets0

2.在训练数据集中选取数据(x_i,y_i)

3.如果y_i(\sum _{j=1}^{N}{\alpha_jy_jx_j}.x+b)\leq 0,进行(w,b)的更新:\alpha \gets{\alpha_i+\eta} b\gets{b+\eta{y_i}}
4.转到第二步,直至训练集中没有误分类点停止

对偶形式中训练实例仅仅是以内积的形式出现,著名的Gram矩阵G=[x_i\bullet y_i]_{N\times N}

栗子(2.2):


image.png image.png

算法收敛性

对于原始形式的感知机学习算法,经过有限次迭代之后可以得到一个将训练数据集完全分离的超平面和感知机模型。为了证明过程方便,将偏置b加入权重w中,记作\hat w=(w^T,b)^T,同样的输入向量中也加入常数1,记作\hat x=(x^T, 1)^T。显然有:\hat x \in R^{n+1},\hat w \in R ^{n+1},则\hat w \bullet \hat x=w \bullet x+b,具体证明过程加入下图:

image.png image.png image.png image.png image.png
上一篇 下一篇

猜你喜欢

热点阅读