1 感知机模型

感知机perceptron是二类分类问题的线性分类模型,输入为实例的特征向量,输出为实例的类别(+1,-1)。感知机旨在求出训练数据进行线性划分的分离超平面(separating hyperplane),基于损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型,从而对新实例进行分类。它分为原始和对偶形式。1957年Rossenblatt提出。

1.1 模型定义

从输入空间到输出空间的映射(函数):f(x)=sign(w·x+b)
其中,w是weight,x输入向量,b偏置bias,sign是符号函数,即

假设空间是定义在所有特征空间上的函数(线性分类模型)的集合{f|f(x)=w·x+b}
感知机解释:
线性方程w·x+b=0对应于特征空间Rn一个超平面,w是超平面的法向量,b是超平面的截距,超平面S将实例分为正负两类。

2 感知机学习策略

2.1 数据的线性可分性

如果对于数据集T,存在一个超平面能够完全正确的将其划分到超平面的两侧称为数据集线性可分linear separable

2.2 学习策略

假设数据线性可分,为了求出超平面,需要求出w和b,需要一个学习策略(如何找到超平面的计算方法),即定义损失函数,并将损失函数最小化。
定义损失函数:误分类点总数到超平面S的总距离。
输入空间Rn任一点到平面的距离是:点到平面的距离

误分类点满足:

因此误分类点到平面的距离是:

假设总共有M个误分类点,则总距离为:

不考虑常数项||w||,就是感知机的损失函数,即

误分类时,L为w,b的连续可导函数。正确分类时L为0。

3 学习算法

主要就是对上述损失函数进行求解全局最小(优)值(极小值)

3.1 算法原始形式


具体采用随机梯度下降法(stochastic gradient descent SGD):首先任意选取一个超平面w0,b0,然后梯度下降法不断地极小化目标表函数,极小化过程不是一次使M中所有误分类点梯度下降,而是一次随机选取一个误分类点使其梯度下降。
梯度为:

具体算法过程:

3.2 收敛性

首先将b并入w得到w hat,将x添加一维1,形式将被简化。于是得到:

迭代次数k有一个上限,说明原始算法是可收敛的,前提是数据线性可分。

3 学习算法的对偶形式

说明一点,感知机的学习算法是支持向量机学习算法的基础,这里原始形式和对偶形式与之对应。

Gram 矩阵:

MATLAB示例:

 x1=[3,3]',
x2=[4,3]',
x3=[1,1]',
G=[x1'*x1,x1'*x2,x1'*x3;
x2'*x1,x2'*x2,x2'*x3;
x3'*x1,x3'*x2,x3'*x3]
 

class-感知机Perception的更多相关文章

  1. 深度学习基础-基于Numpy的感知机Perception构建和训练

    1. 感知机模型   感知机Perception是一个线性的分类器,其只适用于线性可分的数据.          f(x) = sign(w.x + b) 其试图在所有线性可分超平面构成的假设空间中找 ...

  2. CS229 笔记03

    CS229 笔记03 局部加权线性回归 Non-Parametric Learning Algorithm (非参数学习方法) Number of parameters grows with the ...

  3. 多层感知机及其BP算法(Multi-Layer Perception)

    Deep Learning 近年来在各个领域都取得了 state-of-the-art 的效果,对于原始未加工且单独不可解释的特征尤为有效,传统的方法依赖手工选取特征,而 Neural Network ...

  4. 【MLP】多层感知机网络

    BPN(Back Propagation Net) 反向传播神经网络是对非线性可微分函数进行权值训练的多层网络,是前向神经网络的一种. BP网络主要用于: 1)函数逼近与预测分析:用输入矢量和相应的输 ...

  5. 机器学习理论基础学习3.1--- Linear classification 线性分类之感知机PLA(Percetron Learning Algorithm)

    一.感知机(Perception) 1.1 原理: 感知机是二分类的线性模型,其输入是实例的特征向量,输出的是事例的类别,分别是+1和-1,属于判别模型. 假设训练数据集是线性可分的,感知机学习的目标 ...

  6. 感知机学习算法(PLA)

    Perception Learning Algorithm, PLA 1.感知机 感知机是一种线性分类模型,属于判别模型. 感知机模型给出了由输入空间到输出空间的映射: f(X) = sign(WTX ...

  7. matlab 实现感知机线性二分类算法(Perceptron)

    感知机是简单的线性分类模型 ,是二分类模型.其间用到随机梯度下降方法进行权值更新.参考他人代码,用matlab实现总结下. 权值求解过程通过Perceptron.m函数完成 function W = ...

  8. 感知机(perceptron)概念与实现

    感知机(perceptron) 模型: 简答的说由输入空间(特征空间)到输出空间的如下函数: \[f(x)=sign(w\cdot x+b)\] 称为感知机,其中,\(w\)和\(b\)表示的是感知机 ...

  9. 统计学习方法 --- 感知机模型原理及c++实现

    参考博客 Liam Q博客 和李航的<统计学习方法> 感知机学习旨在求出将训练数据集进行线性划分的分类超平面,为此,导入了基于误分类的损失函数,然后利用梯度下降法对损失函数进行极小化,从而 ...

  10. 统计学习中感知机的C++代码

    感知机是古老的统计学习方法,主要应用于二类线性可分数据,策略是在给定的超平面上对误差点进行纠正,从而保证所有的点都是正确可分的. 用到的方法是随机梯度下降法,由于是线性可分的,可保证最终在有限步内收敛 ...

随机推荐

  1. IOLI-crackme0x01-0x05 writeup

    上一篇开了个头, 使用Radare2并用3中方法来解决crackme0x00, 由于是第一篇, 所以解释得事无巨细, 今天就稍微加快点步伐, 分析一下另外几个crackme. 如果你忘记了crackm ...

  2. HTML标签的命名/CSS标准化命名大全

    在一个内容较多的HTML页面中,需要设计许多不同的框架,再为这些不同的框架及内容进行分类,给予相应的名称,从而使得网页结构更加清晰,也为工作提供了方便.许多新手朋友在设计一个HTML文件时,可能只会依 ...

  3. 【IT人】如何提高阅读源代码的效率

    1.最近刚到公司,公司就发一架构代码自己看,看了几天看的想吐,也在网上找了下相关的技巧吧,不是有句话叫做:成功必有方法,失败总是借口! 2.借鉴别人的方法来看看如下: 记得在开源流行之前,我看过的代码 ...

  4. 汽车之家店铺数据抓取 DotnetSpider实战[一]

    一.背景 春节也不能闲着,一直想学一下爬虫怎么玩,网上搜了一大堆,大多都是Python的,大家也比较活跃,文章也比较多,找了一圈,发现园子里面有个大神开发了一个DotNetSpider的开源库,很值得 ...

  5. ubuntu的网络配置

    1,检查网络是否通畅 ping www.baidu.com 2,检查网线是否插好 3,使用ifconfig查看当前活跃网络接口 ifconfig 4,配置IP地址.子网掩码.网关地址 sudo vi ...

  6. php 生成缩略图

    $src = '4.jpg'; list($width,$height) = getimagesize($src); $im = imagecreatefromjpeg($src); $panl = ...

  7. 升级gitlab

    https://gitlab.com/gitlab-org/gitlab-ce/tree/master/doc/update https://about.gitlab.com/update/#cent ...

  8. Three.js 学习笔记(1)--坐标体系和旋转

    前言 JavaScript 3D library The aim of the project is to create an easy to use, lightweight, 3D library ...

  9. CentOS 挂载 cdrom, iso文件作为源

    在生产系统环境中的机器都没有连接互联网,因此都是使用本地源. 首先,需要将cdrom, 或 iso文件挂载到本地目录. 1.挂载光驱: 将cdrom 放入光驱. $  mkdir /media/cdr ...

  10. 移动端页面点击a标签会有半透明的阴影或红色边框的bug

    好久没有更新了,今天来一发 ^_^ 最近在写移动端页面,测试时发现一个a标签的bug:无论是iOS端还是Android端都存在,当点击a标签,会有一个矩形的透明的阴影闪一下(不同的浏览器阴影的颜色还不 ...