目录

一、感知机模型

二、感知机的学习策略

三、感知机学习算法

感知机算法的原始形式

感知机模型的对偶形式

参考文献


本章节根据统计学习方法,分为模型、策略、算法三个方面来介绍感知机模型。 首先介绍感知机模型,接着介绍感知机的学习策略,也就是最小化损失函数,最后介绍感知机学习的算法,分为原始形式和对偶形式(当中也介绍了算法的收敛性)【PS:算法也就是随机梯度下降算法】

一、感知机模型

首先感知机(perceptron)模型是一个二类分类的线性分类模型,属于判别模型。其输入为实例的特征向量,输出 为实例的类别,取+1和–1二值。我是不喜欢看定义,倒不如用几何模型来的直观。

以上就是感知机模型的作用,旨在求出将训练数据进行线性划分分离超平面,为此,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化, 求得感知机模型,利用学习得到的感知机模型对新的输入实例进行分类。(做的就是分类的事情,尘归尘土归土!)。但是既然有了几何模型,总得来点数学公式吧,不然怎么写代码进行计算,是吧?

2.1, 2.2  两个数学表达式,麻烦记住,划重点!(滑稽!)

插个广告,你学感知机就是想学神经网络,是不是,来看看西瓜书上的感知机模型吧:

二、感知机的学习策略

学习策略,通过别人的讲解,一般来说,学习策略就是指的损失函数(咱也不知道这句话对不对,姑且就这样相信吧!)定义2.2首先来了一个数据集的线性可分性,说白了就是说,感知机只能解决线性可分的问题,不能解决非线性可分的问题。(啥?你不懂啥线不线性可分,还想知道为什么不能解决?什么才能解决非线性可分?我不知道!你看看西瓜书的解释吧!)

(什么?看不懂?我也不懂,不看了!next!)  假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练集正实例点 和负实例点完全正确分开的分离超平面。为了找出一个超平面(你就认为是找一条线)也即确定感知机模型参数 w,b,需要确定一个学习策略,即定义(经验)损失函数并将损失函数极小化。(通俗说,就是要找到一个方法求得一个最佳的w,b)。

这里对于损失函数选择,我的理解就是使得误分类点到超平面的距离之和最小,如果距离为 0 ,那就说明恭喜你,找到了一个可以完美分类的超平面了。以下给出一个大神的解释。(还看不明白,那就继续next,不要放弃,总有一天会搞明白的!)


我们从最初的要求有个f(x),引申到能只输出1和-1的sign(x),再到现在的wx+b,看起来越来越简单了,只要能找到最合适的wx+b,就能完成感知机的搭建了。前文说过,让误分类的点距离和最大化来找这个超平面,首先我们要放出单独计算一个点与超平面之间距离的公式,这样才能将所有的点的距离公式求出来对不?

先看wx+b,在二维空间中,我们可以认为它是一条直线,同时因为做过转换,整张图旋转后wx+b是x轴,那么所有点到x轴的距离其实就是wx+b的值对不?当然了,考虑到x轴下方的点,得加上绝对值->|wx+b|,求所有误分类点的距离和,也就是求|wx+b|的总和,让它最小化。很简单啊,把w和b等比例缩小就好啦,比如说w改为0.5w,b改为0.5b,线还是那条线,但是值缩小两倍啦!你还不满意?我可以接着缩!缩到0去!所以啊,我们要加点约束,让整个式子除以w的模长。啥意思?就是w不管怎么样,要除以它的单位长度。如果我w和b等比例缩小,那||w||也会等比例缩小,值一动不动,很稳。没有除以模长之前,|wx+b|叫函数间隔,除模长之后叫几何间隔,几何间隔可以认为是物理意义上的实际长度,管你怎么放大缩小,你物理距离就那样,不可能改个数就变。在机器学习中求距离时,通常是使用几何间隔的,否则无法求出解。

然后我们来看看李航老师书上的解释:

至于这里为什么不考虑这个1/w,这个好像涉及一个函数间隔和几何间隔,反正就是考不考虑,都不会影响分类效果,为了简化计算就不考虑了。

最后记住损失函数长啥样就行了:

三、感知机学习算法

感知机学习算法采用的是随机梯度下降算法,说白了,来看一段官方的解释:

然后我这里就只解释感知机算法的原始形式和对偶形式,至于算法收敛性的证明我就不写,(别问,问就是懒得证明!^_^,好吧,我就是不会,打我啊!)

感知机算法的原始形式

在这里请允许我偷一个懒,我实在是不可能比原书的内容解释的更好,因为个人看来无论怎么讲,无论谁来讲,自己不动手推一遍,根本就弄不清楚(可能是我自己太笨,B站上的讲解视频看了几遍,别人的博客看了几遍,数学表达式我都认识,就是感觉不像个人,最后自己按李航的书老老实实推一遍,把例题一步步做一遍,豁然开朗^_^,骚年,你还看?赶紧动手推啊!)

所以这里我只摆出算法的解释和算法的具体过程,具体内容大家可以参看原书:

上面我们说过,算法解决的问题就是使得损失函数最小化,求得合适的参数 w,b。这里请大家记住以下的2.5, 2.6,2.7,别问为什么,记住理解就行了,划重点,谢谢!

然后,解决问题的方法就是随机梯度下降法:

(看不懂,我也看不懂,就这样吧!next!)

Python实现代码如下:

'''
author:SingGuo
datetime:2020年6月30日22:45:16
感知机模型的原始形式
'''import numpy as np# 初始化数据
def createData():x = np.array([[3, 3], [4, 3], [1, 1]])y = [1, 1, -1]w = [0, 0]b = 0# lr = 1 # learning_ratereturn x, y, w, b# 感知机模型
# def sign(w, b, x):# f = np.dot(x, w) + b  # x .w + b# return int(f)# 更新系数w, b
def update(x, y, w, b, i):w = w + y[i] * x[i]b = b + y[i]return w, bdef optimization(x, y, w, b):misclassification = Falsewhile not misclassification:count = 0for i in range(len(y)):# f = sign(w, b, x)if y[i] * (np.dot(w, x[i]) + b) <= 0:  # 如果是一个误分类实例点print('误分类点为:', x[i], '此时的w和b为:', w, b)count += 1w, b = update(x, y, w, b, i)if count == 0:print('最终训练得到的w和b为:', w, b)misclassification = Truereturn w, bif __name__ == '__main__':x, y, w, b= createData()optimization(x=x, y=y, w=w, b=b)

运行结果:

感知机模型的对偶形式

关于对偶形式,我第一反应就是啥叫对偶,在李航老师的书上仅仅只是说:

但是这个意思我懂,就是换种方法解题的意思,在周志华老师的西瓜书中支持向量机这一张对于对偶问题是这样解释的:

(凸二次规划? 没学过啊!过几天百度看看!拉格朗日?……哎!西瓜书更不懂,于是我找到博客)博客上的解释是这样的:

(假装看的懂的样子,好吧,现在我还是值理解对偶就是换一种更简单的方法简化计算方便求解。至于为啥会有这个形式,可能涉及凸优化的内容,咱也没学,也不会瞎说,那就这样吧!)下面是对偶形式的算法解释:

别问我为啥现在开始贴图了,别问,问就是要睡觉!来吧,直接看代码:

'''
author:SingGuo
datetime:2020年7月1日00:33:39
感知机模型的原始形式
'''import numpy as npdef creatDataSet():group = np.array([[3, 3], [4, 3], [1, 1]])label = [1, 1, -1]return group, labeldef update(x, y, i):global a, b, Ga[i] += 1b = b + ydef cal(x, label, row):global a, b, Gresult = 0for i in range(len(G[row])):result += label[i] * a[i] * G[row][i]result += bresult *= label[row]return resultprint(result)def perceptron_func(group, label):global a, b, GisFind = Falsen = group.shape[0]x_col = group.shape[1]a = np.zeros(n, dtype=np.int)  # 初始化b = 0G = np.zeros((n, n), dtype=np.int)# 计算Gam矩阵for i in range(n):for j in range(n):G[i][j] = group[i][0] * group[j][0] + group[i][1] * group[j][1]while isFind == False:for i in range(n):if cal(group[i], label, i) <= 0:update(group[i], label[i], i)print('误分类点为:', group[i], '此时的a1, a2, a3和b为:', a, b)breakelif i == n - 1:print('最后迭代的结果为:', a, b)isFind = Trueif __name__ == '__main__':g, l = creatDataSet()perceptron_func(g, l)

运行结果为:

这个时候有人问了,为啥两个代码风格不一样?(哎!水平垃圾,对偶形式借鉴别人的,自己写的过程中有一个错误解决不了!我下去慢慢解决)

(同桌:别找理由,你就是编程太垃圾了!)

(我:……)

参考文献

【1】李航:《统计学习方法》

【2】周志华:《机器学习》

【3】感知机学习算法的对偶形式

【4】感知机对偶问题

【5】感知器、感知器对偶形式(含作业)||《统计学习方法》李航_第1章_蓝皮(学习笔记)

【6】感知机的对偶形式

【7】感知机算法实现(对偶形式)

【8】感知机对偶形式手算过程

【9】统计学习方法(2)——感知机原始形式、对偶形式及Python实现

【10】李航统计学习方法之感知机学习(含感知机原始形式和对偶形式Python代码实现)

【11】李航统计学习方法-感知机python实现

【12】李航统计学习方法-感知机python实现

【13】统计学习方法|感知机原理剖析及实现

完结,撒花!!!!!

【李航统计学习方法】感知机模型相关推荐

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

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

  2. 李航统计学习方法----感知机章节学习笔记以及python代码

    目录 1 感知机模型 2 感知机学习策略 2.1 数据集的线性可分性 2.2 感知机学习策略 3 感知机学习算法 3.1 感知机学习算法的原始形式 3.2 感知机算法的对偶形式 4 感知机算法pyth ...

  3. 李航统计方法——感知机

    李航统计学习方法--感知机 文章目录 李航统计学习方法--感知机 1.数据集的线性可分性 2.感知机学习策略 3.感知机学习算法 3.1感知机学习算法原始形式 3.2感知机学习算法的对偶形式 1.数据 ...

  4. 统计学习方法 pdf_李航统计学习方法(第三章)

    第3章 k 近邻法 k 近邻法(k-NN)是一种基于实例的学习方法,无法转化为对参数空间的搜索问题(参数最优化问题).它的特点是对特征空间进行搜索.除了k近邻法,本章还对以下几个问题进行较深入的讨论: ...

  5. 统计学习方法|感知机原理剖析及实现

    欢迎直接到我的博客查看最近文章:www.pkudodo.com.更新会比较快,评论回复我也能比较快看见,排版也会更好一点. 原始blog链接: http://www.pkudodo.com/2018/ ...

  6. 统计学习方法感知机(附简单模型代码)

    1. 感知机模型 输入为实例的特征向量, 输出为实例的类别, 取+1和-1:感知机对应于输入空间中将实例划分为正负两类的分离超平面, 属于判别模型:导入基于误分类的损失函数:利用梯度下降法对损失函数进 ...

  7. 最大熵阈值python_李航统计学习方法(六)----逻辑斯谛回归与最大熵模型

    本文希望通过<统计学习方法>第六章的学习,由表及里地系统学习最大熵模型.文中使用Python实现了逻辑斯谛回归模型的3种梯度下降最优化算法,并制作了可视化动画.针对最大熵,提供一份简明的G ...

  8. 李航统计学习方法 Chapter2 感知机

    如果想了解更多的知识,可以去我的机器学习之路 The Road To Machine Learning通道 第2章 感知机 1.感知机是根据输入实例的特征向量 x x x对其进行二类分类的线性分类模型 ...

  9. 李航 统计学习方法 第2章 感知机

    第2章 感知机 介绍感知机模型, 叙述感知机的学习策略, 特别是损失函数; 最后介绍感知机学习算法,包括原始形式和对偶形式, 证明算法的收敛性. 感知机模型 f ( x ) = s i g n ( w ...

最新文章

  1. 网站建设初学者一定要清楚网站建设基本因素和流程
  2. WSAD5技巧之一:访问Oracle9i数据源
  3. 使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之一
  4. 马吕斯定律matlab拟合,Matlab插值模拟在光的偏振中的应用
  5. 虚拟机中PXE-MOF:Exiting intel PXE ROM.Operating system not found解决方法
  6. 疫期免费 “零接触”云迁移~工具替代人力! 人不聚,活儿继续!
  7. ios修改apn的插件_苹果iPhone查看和编辑APN方法教程
  8. 感谢上天,我被失联2年后,终于活着从东南亚菠菜公司的技术“魔窟”逃出来了......
  9. 第二讲:双活灾备方案建设方法论
  10. [nlp] sentiment analysis(情感分析)
  11. 余弦定理和新闻的分类
  12. Spring的AOP(一):什么是AOP
  13. 计算机答辩提问(小程序/网站)
  14. TransE论文剩余部分
  15. 嵌入式项目管理学习——001重点明确和心态转换
  16. Nginx配置并使用SSI功能
  17. 各大股票开放接口介绍
  18. New Concept English3 Lesson 1. A puma at large【精讲学习笔记】
  19. 开发人员的需求与零代码解决方案
  20. HDU 4937Lucky Number

热门文章

  1. java从小白到架构师学习路线
  2. 计算器(难度系数:3颗星)
  3. 项目中的风险有哪些?测试人员或者管理者如何控制风险?
  4. Xms、Xmx、MaxMetaspaceSize含义
  5. Linux攻关之基础模块一 系统准备
  6. 为什么用链路聚合_链路聚合技术作用和优点
  7. edge浏览器如何把网页放到桌面_win10系统怎么把Edge浏览器放到桌面?Edge怎么创建桌面快捷方式...
  8. 华擎主板bios设置图解_华擎主板bios设置_华擎主板bios设置图解_asrock主板bios设置...
  9. 【JMeter】总结 jmeter 中各种函数
  10. Excel学习笔记——基础篇