首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

机器学习之感知机学习笔记

今天,我将和大家一起学习机器学习中的感知机算法。

感知机(perceptron)是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1二值。感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面。因此,感知机学习旨在求出将训练数据进行线性划分的分离超平面。为此,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型,从而实现利用得到的感知机模型对新的输入实例进行分类。

感知机算法由Rosenblatt提出,是神经网络与支持向量机的基础。下表列出了感知机与支持向量机的一些异同:

下面,我们正式进入感知机算法的学习。我们将从三个方面来学习感知机,分别是:

1、感知机模型

2、感知机的学习策略

3、感知机学习算法

首先,我们来学习感知机的模型。

如下图所示,感知机分为学习和分类两个过程。在学习过程中,对于训练数据集

,我们通过学习系统得到感知机模型;在分类过程中,对于新的输入实例,我们利用分类系统,通过感知机模型,得到新的输入实例的类别。

感知机模型就是如下这个函数:

其中,w和b为感知机模型参数,叫作权值(weight)或权值向量(weight vector),叫作偏置(bias),表示w和x的内积。是符号函数,即

感知机对应于特征空间中的一个超平面S,其中w是超平面的法向量,b是超平面的截距。这个超平面将特征空间划分为两个部分。位于两部分的点(特征向量)分别被分为正、负两类。因此,超平面S称为分离超平面(separating hyperplane),如下图所示:

接下来,我们学习感知机的学习策略

由上面可知,感知机学习的目标是求得一个能够将训练数据集正实例点和负实例点完全正确分开的分离超平面。为了找出这样的超平面,即确定感知机模型参数w,b,需要确定一个学习策略,即定义(经验)损失函数并将损失函数极小化。

损失函数的选择有:

①误分类点的总数(这样的损失函数不是参数w,b的连续可导函数,不易优化)

②误分类点到超平面S的总距离(这是感知机所采用的)

感知机的损失函数使用第二种,即误分类点到超平面S的总距离

因此,感知机学习的策略是在假设空间中选取使损失函数最小的模型参数w,b,即可得感知机模型。

最后,我们学习感知机学习的算法

感知机学习算法采用随机梯度下降法(stochastic gradientdescent),对感知机的损失函数进行求导,即可得损失函数的梯度,

感知机算法具体可描述为:

我们用动态图来看一下具体的过程:

图中圆圈代表负类,叉叉代表正类,我们选取初值0后,可得感知机模型0,在训练集中选取数据,如果,则用梯度下降法对w和b进行更新,即,直至训练集中没有误分类点。

在感知机算法的求解过程中,可能会出现过拟合现象,即求得的感知机模型对训练数据有很好的分类能力,感知机模型过于复杂,但对未知测试数据的分类能力并不好。比如下图中的感知机模型就过于复杂,导致了过拟合现象。

我们来看一下模型复杂度与预测误差的关系。随着模型复杂度的增加,训练误差持续降低;测试误差先降低,降到一个最低点之后,又开始上升。为了使得到的感知机模型最好,应使得测试误差最小,即图中红线位置。

为了避免过拟合现象的发生,我们可以采用交叉验证方法。交叉验证是指重复地使用数据;把给定的数据进行切分,将切分的数据集组合成为训练集与测试集,在此基础上反复地进行训练、测试以及模型选择。交叉验证法有以下三种类型:

① 简单交叉验证

首先随机地将已给数据分为两部分,一部分作为训练集,另一部分作为测试集(例如,70%的数据为训练集,30%的数据为测试集);然后用训练集在各种条件下(例如,不同的参数个数)训练模型,从而得到不同的模型;在测试集上评价各个模型的测试误差,选出测试误差最小的模型。

② S折交叉验证

首先随机地将已给数据切分为S个互不相交的大小相同的子集;然后利用S-1个子集的数据训练模型,利用余下的子集测试模型;将这一过程对可能的S种选择重复进行;最后选出S次评测中平均测试误差最小的模型。

③ 留一交叉验证

S折交叉验证的特殊情形是S=N,N是给定数据集的容量。

好了,以上就是今天的全部内容。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180515G0LCY200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券