感知机是二类分类的线性分类模型,所谓二分类指的是输出的类别只有-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. DSET收集ESXi硬件日志

    1.Open DSET CLI with administrator mode C:\Windows\system32>dellsysteminfo -s 10.125.1.xxx -u roo ...

  2. ie浏览器,背景色兼容解决方法

    rgba的含义,r代表red,g代表green,b代表blue,a代表透明度.红绿蓝是三原色,所有颜色都可以由这三种颜色拼合而成.比如 rgba(0,0,0,.5)就是透明度为0.5的黑色.现代浏览器 ...

  3. SpringToolSuite/Eclipse中集成的Tomcat无法add Project时的解决版本

  4. svn-git

    1.创建版本库 # svnadmin create proj 2.修改配置文件  Auth文件    [groups]    admin=shguo    [/]    @admin=rw    *= ...

  5. MVC项目中WebViewPage的实战应用

    由于公司的项目可能会卖到国外,所以需要支持多语言.今天我就在目前的项目中实现了多语言功能,下面记录我的具体实现. 1.相信很多朋友在用MVC做项目时候,都会遇到“视图必须派生自 WebViewPage ...

  6. java安全沙箱(二)之.class文件检验器

    java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是: 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管理器及J ...

  7. I/O 请求数据包

    MSDN原文:https://msdn.microsoft.com/zh-cn/library/windows/hardware/hh439638(v=vs.85).aspx 发送到设备驱动程序的大部 ...

  8. 为 Docker Registry 增加 Nginx 前端

    其实Docker Registry 就是一个API backend,所以加一个Nginx前端有大大的好处,比如docker push 时增加用户名密码验证. 怎么加?请参考以下nginx配置 upst ...

  9. C#:String.Format数字格式化输出 {0:N2} {0:D2} {0:C2}等等

    int a = 12345678; //格式为sring输出//   Label1.Text = string.Format("asdfadsf{0}adsfasdf",a); / ...

  10. [python实现设计模式]-5.迭代器模式-一起撸串嗨皮啦

    迭代器模式是一个我们经常使用但是出境不高的模式. 为啥捏?因为大部分的语言都帮我们实现了细节,我们不许关注他的实现就能用的很嗨皮了. 不管怎样.这也是个非常常用的模式. 俗话说得好,这个世界上没有事情 ...