机器学习PR:感知机模型
感知机是二类分类的线性分类模型,所谓二分类指的是输出的类别只有-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:感知机模型的更多相关文章
- 机器学习入门 一、理解机器学习+简单感知机(JAVA实现)
首先先来讲讲闲话 如果让你现在去搞机器学习,你会去吗?不会的话是因为你对这方面不感兴趣,还是因为你觉得这东西太难了,自己肯定学不来?如果你觉的太难了,很好,相信看完这篇文章,你就会有胆量踏入机器学习这 ...
- 统计学习方法 --- 感知机模型原理及c++实现
参考博客 Liam Q博客 和李航的<统计学习方法> 感知机学习旨在求出将训练数据集进行线性划分的分类超平面,为此,导入了基于误分类的损失函数,然后利用梯度下降法对损失函数进行极小化,从而 ...
- 使用numpy实现批量梯度下降的感知机模型
生成多维高斯分布随机样本 生成多维高斯分布所需要的均值向量和方差矩阵 这里使用numpy中的多变量正太分布随机样本生成函数,按照要求设置均值向量和协方差矩阵.以下设置两个辅助函数,用于指定随机变量维度 ...
- (转)看穿机器学习(W-GAN模型)的黑箱
本文转自:http://www.360doc.com/content/17/0212/11/35919193_628410589.shtml# 看穿机器学习(W-GAN模型)的黑箱 201 ...
- 【机器学习】感知机学习算法(PLA)
感知机问题学习算法引入:信用卡问题 根据已知数据(不同标准的人的信用评级)训练后得出一个能不能给新客户发放信用卡的评定结果 解决该问题的核心思想扔为之前所讲到的梯度下降算法,对于更多条件的类似问题,首 ...
- 感知机模型到DNN模型
参考资料 感知机模型:https://www.cnblogs.com/pinard/p/6042320.html DNN:https://www.cnblogs.com/pinard/p/641866 ...
- 【感知机模型】手写代码训练 / 使用sklearn的Perceptron模块训练
读取原始数据 import pandas as pd import numpy as np in_data = pd.read_table('./origin-data/perceptron_15.d ...
- python机器学习——使用scikit-learn训练感知机模型
这一篇我们将开始使用scikit-learn的API来实现模型并进行训练,这个包大大方便了我们的学习过程,其中包含了对常用算法的实现,并进行高度优化,以及含有数据预处理.调参和模型评估的很多方法. 我 ...
- 吴裕雄 python 机器学习——人工神经网络与原始感知机模型
import numpy as np from matplotlib import pyplot as plt from mpl_toolkits.mplot3d import Axes3D from ...
随机推荐
- 打造H5里的“3D全景漫游”秘籍
近来风生水起的VR虚拟现实技术,抽空想起年初完成的“星球计划”项目,总结篇文章与各位分享一下制作基于Html5的3D全景漫游秘籍. QQ物联与深圳市天文台合作,在手Q“发现新设备”-“公共设备”里,连 ...
- 3.2 一般的哈尔空间Vj
例3.2给予我们继续往下面做的动力.很明显的我们对于g(t)的逼近还是太粗糙了.很自然的,我们会想到,如果继续细分我们的短点,比如每1/2取一个值,甚至每1/4取一个值,那么就会有更好的逼近效果. 不 ...
- JVM之数据类型
1.概述 Java虚拟机的数据类型可分为两大类:原始类型(Primitive Types,也称为基本类型)和引用类型(Reference Types).Java虚拟机用不同的字节码指令来操作不同的数据 ...
- 合并两个java bean对象非空属性(泛型)
import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; cl ...
- css属性在各种浏览器上的兼容性
transform:在360急速浏览器不支持,在IE兼容性上看IE浏览器的版本,IE9+是支持.
- $(window).height()获取浏览器高度不准
以前在开发的时候这样$(window).height()获取浏览器的高度一致不觉得有什么不对, 今天在做java开发的时候不知道为什么获取的高度很明显不对. 后来无意中想到一个文档模式不对的原因,于是 ...
- XE7 & IOS开发之开发账号(1):开发证书、AppID、设备、开发授权profile的申请使用,附Debug真机调试演示(XCode所有版本通用,有图有真相)
网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 注意,以下讨论都是以&q ...
- 页面动态table动态合并table
function hebingRows(col, atrrb) { var trs = $("table tbody tr"); var rows = 1; for (var i ...
- CodeBlocks安装及配置注意事项
在使用codeblocks的时候,网上一般只会提供CodeBlocks的项目文件,并不包括编译器和调试器,要使用CodeBlocks的完整功能需要在官网下载完整版. 如图可下载mingw版本. 进入C ...
- ebs如何将客户化的PL/SQL程序发布到webservice
as:cux_gl_hec_iface_soa_pkg. 1.将package声明部分的内容拷贝出来另存为cux_gl_hec_iface_soa_pkg.pls的文件: 2.将该文件上传到服务器上拥 ...