统计学习笔记:感知机(perceptron)原理及C源码实现

    相对来说感知机从原理或实现来说都较为简单,按照李航《统计学习方法》就可以实现,根据神经网络中的技巧,可对感知机进行优化,例如采用附加动量法进行权值、偏置的更新,防止训练陷入局部最小,关于这些我会在神经网络以及深度学习的内容中讲述。

感知机

在统计学习当中称为感知机,在神经网络当中称为单层感知器。概念不同,但实现的功能及本质是相同的。

一、感知机模型

假设输入空间(特征空间)是,输出空间是。输入向量x表示实例的特征向量,对应输入空间(特征空间)的点,输出y表示输入实例所属的类别。由输入到输出的关系映射如下:

上式为感知机模型,其中w表示权值向量,b表示偏置。sign是符号函数,即

感知机是一种线性分类模型,属于判别模型。感知机模型的假设空间是定义在特征空间中的所有线性分类模型或者线性分类器,即函数集合

二、感知机的几何解释

在几何解释当中,我们可以将感知机看成是定义在内积空间当中的超平面,该平面的表达式如下

其中,w是超平面的法向量,b是超平面的截距。这个超平面将内积空间分成两个部分,位于两部分的点(特征向量)分别被分为正、负两类。因此,该超平面称为分离超平面。

三、 感知机学习策略

(1)感知机学习

由训练数据集(实例的特征及所属类别),求得感知机模型,即求得参数wb

(2)数据集的线性可分性

给定一个数据集,如果存在某个超平面S能够将数据集完全正确的分到超平面的两侧,则称该数据集是线性可分的,否则线性不可分。

(3)感知机学习策略

①目标:确定一个可将线性可分数据集完全正确分类的分类超平面S,即确定参数 wb,使得损失函数最小

②损失函数:感知机的损失函数定义为训练数据集中所有被错误分类的点到超平面    的总距离,输入空间中任意一个点x0到超平面S的距离为

其中表示w的L2范数。

对于被错误分类的点,下式总是成立

因为对于错误分类点而言,yi表示实例点xi真实类别,而由于被错误分类,的符号总与yi相反,因此对于错误分类点上式总是成立。则x0到超平面S的距离可以表示为

则训练数据集中所有被错误分类的点到分离超平面S的总距离可以表示为

不考虑,则感知机学习策略的损失函数为

上式是感知机学习的经验风险函数,显然该损失函数是非负的,若没有错误分类点,则损失函数的值为0(因为当正确分类时,损失函数的值为负,而损失函数表示的是距离,因而取0)。

四、感知机学习算法

(1)目的:感知机的学习算法是对以下最优化问题的算法。给定一个训练数据集

求参数wb,使其为以下损失函数极小问题的解

(2)算法:采用梯度下降法以串行更新(每个实例更新一次参数)的方式调整参数,根据    梯度下降法,对损失函数求wb的偏导,可得

           其中η为学习率,0<η<1。

(3)步骤:编程实现感知机学习算法

           ①随机选取初值-10<1和b0=1。

           ②在训练数据集中选取实例点。

           ③如果,更新参数

           ④跳转至②,直到训练数据集全部分类正确。

源码在我的GitHub上有,用C语言实现,备注很详细,运行通过。

网址:https://github.com/FAmorris/Perceptron

装载请说明出处,请支持原创,在不收取他人费用下,可以随便传播学习,我们一起进步!

1. 参考李航《统计学习方法》

你可能感兴趣的:(统计学习笔记:感知机(perceptron)原理及C源码实现)