感知机是二类分类的线性分类模型,所谓二分类指的是输出的类别只有-1或1两种,所谓线性指的是输入的特征向量集合在特征空间中被超平面划分为相互分离的正负两类。感知机学习的目的正是为了求出将训练数据进行线性划分的分离超平面。

1、感知机模型:

定义:x是n维特征向量,y是判断的二元类别-1或1,判别函数f(x)=sign(wx+b),其中w和b是参数,w称为权重向量,b称为偏置,sign为符号函数。

说明:感知机模型的假设空间为定义在特征空间中的所有线性分类模型或线性分类器,即函数集合{f|f(x)=wx+b}。

几何解释: f(x)=wx+b=0,对应特征空间中的一个超平面,其中w是超平面法向量,b是超平面的截距,这个超平面将特征空间划分为两个部分,位于两部分的特征向量分别被称为正、负两类。

2、感知机学习策略(原则、标准):

感知机有未知参数w、b,为了使用感知机必须基于样本数据求出未知参数,这里选择“经验风险损失最小原则”。首先需要确定损失函数,直观地以错误分类点的总数为损失函数最为自然,但缺点是w、b参数空间不连续可导,不易于优化。因此选择损失函数为错误分类点到超平面的总距离。点到超平面的距离为|wx+b|/||w||,||w||为L2范数,那么错误分类的数据到超平面的距离可以表示为  -y(wx+b)/||w||, 因此损失函数表示为:

其中M是错误分类的点的集合,显然损失函数是非负的,如果没有错误分类的点,损失函数值为零。而且错误分类的点越少、误分类点离超平面越近,损失函数值就越小。

3、学习算法:对给定的样本集,求参数w、b使得损失函数最小化

损失函数的梯度:

算法1:随机梯度下降法

算法解释:

首先任意选取一个超平面w、b,然后用梯度下降法不断地极小化损失函数,极小化过程不是一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。

其中是步长,又称为学习率。这样通过迭代可以期待损失函数不断减少,直到0。直观上理解,当一个点被错误分类,即位于分离超平面的错误一侧时,则调整w,b的值,使超平面向该分类点的一侧移动,以减少该分类点与超平面间的距离,直至超平面越过该误分类点使其被正确分类。可以看出,使用不同的初始值或选取不同的误分类点顺序会导致不同的解。可以证明训练样本线性可分时这个算法经过有限步后是收敛的。

算法2:算法1的对偶形式

算法解释:

基本思想是将w、b表示为x、y的线性组合形式,通过求解其系数而求得w、b。根据上面的算法1,从假设w、b分别为零开始,经过多次迭代到最终获得解,最终w、b可以表示为:

这里表示第i个点由于被误分而进行更新的次数,点更新的次数越多,意味着它离超平面越近,也就越难正确分类,也就是这样的点对学习结果的影响最大。将感知机表达式替换成上面的式子,就变成了先求解系数,最后直接计算w。在算法迭代过程中点之间的计算只涉及內积形式,故可以预先以Gram=[xixj]NXN矩阵存储。

机器学习PR:感知机模型的更多相关文章

  1. 机器学习入门 一、理解机器学习+简单感知机(JAVA实现)

    首先先来讲讲闲话 如果让你现在去搞机器学习,你会去吗?不会的话是因为你对这方面不感兴趣,还是因为你觉得这东西太难了,自己肯定学不来?如果你觉的太难了,很好,相信看完这篇文章,你就会有胆量踏入机器学习这 ...

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

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

  3. 使用numpy实现批量梯度下降的感知机模型

    生成多维高斯分布随机样本 生成多维高斯分布所需要的均值向量和方差矩阵 这里使用numpy中的多变量正太分布随机样本生成函数,按照要求设置均值向量和协方差矩阵.以下设置两个辅助函数,用于指定随机变量维度 ...

  4. (转)看穿机器学习(W-GAN模型)的黑箱

        本文转自:http://www.360doc.com/content/17/0212/11/35919193_628410589.shtml#   看穿机器学习(W-GAN模型)的黑箱 201 ...

  5. 【机器学习】感知机学习算法(PLA)

    感知机问题学习算法引入:信用卡问题 根据已知数据(不同标准的人的信用评级)训练后得出一个能不能给新客户发放信用卡的评定结果 解决该问题的核心思想扔为之前所讲到的梯度下降算法,对于更多条件的类似问题,首 ...

  6. 感知机模型到DNN模型

    参考资料 感知机模型:https://www.cnblogs.com/pinard/p/6042320.html DNN:https://www.cnblogs.com/pinard/p/641866 ...

  7. 【感知机模型】手写代码训练 / 使用sklearn的Perceptron模块训练

    读取原始数据 import pandas as pd import numpy as np in_data = pd.read_table('./origin-data/perceptron_15.d ...

  8. python机器学习——使用scikit-learn训练感知机模型

    这一篇我们将开始使用scikit-learn的API来实现模型并进行训练,这个包大大方便了我们的学习过程,其中包含了对常用算法的实现,并进行高度优化,以及含有数据预处理.调参和模型评估的很多方法. 我 ...

  9. 吴裕雄 python 机器学习——人工神经网络与原始感知机模型

    import numpy as np from matplotlib import pyplot as plt from mpl_toolkits.mplot3d import Axes3D from ...

随机推荐

  1. myeclipse构建webservice项目

    新建server端 1 创建Web Service Project项目 2.项目名称:HelloWorldServer 3.创建接口类 4.发布 选择项目名称,选择从Java类中构建web servi ...

  2. 在Ubuntu下进行MongoDB安装步骤

    一. 在Ubuntu下最傻瓜的步骤(以下都在root用户下进行操作): 1.运行"apt-get install mongo" 如果遇到找不到安装包的话运行"apt-ge ...

  3. JSTL 核心标签库 使用

    JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...

  4. 带你入门带你飞Ⅰ 使用Mocha + Chai + Sinon单元测试Node.js

    目录 1. 简介 2. 前提条件 3. Mocha入门 4. Mocha实战 被测代码 Example 1 Example 2 Example 3 5. Troubleshooting 6. 参考文档 ...

  5. [转载]《民航科技》2012年4月专家论坛:罗喜伶《SWIM技术国际研究动态及对中国民航的借鉴意义》

    专家介绍:罗喜伶,北京航空航天大学电子信息工程学院副教授,工学博士,硕士生导师,国家空管新航行系统技术重点实验室和协同式网络化空中交通管理系统研究教育部创新团队核心成员,民航空管广域信息系统专家组成员 ...

  6. Url路径重写的原理

    ASP.net的地址重写(URLRewriter)实现原理及代码示例 吴剑 2007-01-01 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 概述 访问 ...

  7. 项目中用到RouteTable,发布到IIS7中无法访问

    项目中用到RouteTable,发布到IIS7中,访问之后没有任何反应,google半天终于找到了解决方法,就是要把iis的“HTTP重定向”功能打开

  8. shell 命令集

    shell 常用知识点--------------------------------------- sed 用法 http://www.cnblogs.com/edwardlost/archive/ ...

  9. 查询oracle连接数 对应的 应用程序

     select  b.MACHINE, b.PROGRAM , count(*) from v$process a, v$session b where a.ADDR = b.PADDR and  b ...

  10. python3+ 模块学习 之 subprocess

    subprocess 模块方法: call() check_call() check_output() 以上三个方法用于创建一个子进程,父进程等待子进程结束.若shell = true, 则shell ...