目录

1 感知机模型

2 感知机学习策略

2.1 数据集的线性可分性

2.2 感知机学习策略

3 感知机学习算法

3.1 感知机学习算法的原始形式

3.2 感知机算法的对偶形式

4 感知机算法python代码

感知机(perceptron)是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1二值.感知机对应于输入空间(特征空间〉中将实例划分为正负两类的分离超平面,属于判别模型.感知机学习旨在求出将训练数据进行线性划分的分离超平面。为此,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型.感知机学习算法具有简单而易于实现的优点,分为原始形式和对偶形式.感知机预测是用学习得到的感知机模型对新的输入实例进行分类.感知机1957年由Rosenblatt提出,是神经网络与支持向量机的基础.

1 感知机模型

假设输入空间(特征空间)是x是n维列向量,输出空间是y={+1,-1}.输入x表示实例的特征向量,对应于输入空间(特征空间)的点;输出y表示实例的类别.由输入空间到输出空间的如下函数,其中sign是符号函数:

其中是分离超平面,在几何上表示为下图,正类样本是与分离超平面法向量夹角余弦值为正的点,负类样本则是夹角余弦值为负的点。

2 感知机学习策略

2.1 数据集的线性可分性

数据集可以被一个超平面完全正确的分成两个部分,则称数据集是线性可分的。否则是线性不可分的,现实中的数据集往往是线性不可分的。

2.2 感知机学习策略

假设数据集是线性可分的,感知机的目的就是求得一个是正负类样本完全正确分离的超平面。为了找到这个超平面,需要找到感知机模型的参数w和b。同时还要确定一个学习策略,来使损失函数极小化。损失函数一般要可导,这里损失函数的思想是所有误分类的点到超平面的总距离。其中是超平面的模长。

对于误分类的点来说:

假设所有误分类的样本都属于集合M,并且忽略掉超平面的模长,那么就可以得到所有误分类的点到达超平面的总距离为:

损失函数连续可导,并且在正确分类时,损失函数值为0。

3 感知机学习算法

由于损失函数连续可导的性质,梯度下降法就相当NICE了。整体函数的优化目标是使得损失函数最小化。

3.1 感知机学习算法的原始形式

给定一个训练数据集,要使得损失函数最小,其中M是误分类点的集合:

损失函数关于两个参数的梯度为:

李航的书中采用了随机梯度下降的策略对数据集进行学习,即每次只选取一个误分类的点对参数进行学习,避免了运算的复杂度:

其中η为学习率,是超参数,可以自己进行调整。其中在实现这个算法的时候比较关键的一个就确定误分类的点集,只要确定了点集,梯度下降就比较好实现。

同时需要注意算法的收敛性,只有数据集完全线性可分的情况下,才可以在有限次搜索下得到分离超平面,如果数据集不完全线性可分,算法就会震荡。

3.2 感知机算法的对偶形式

对偶问题是将参数w和b表示成关于所有点的增量形式:

那么感知机模型就变成了:

继续采用随机梯度下降算法,那么参数的更新规则就变成了下式:

这个更新规则可以这样理解,首先是误分类点集,只有错误分类了才会体现在损失函数中,因此只有错误分类的点才可以进行乘子的更新,其次是随机梯度下降,每次只拿出一个点来进行学习,因此只更新有问题的那个点的乘子,更新规则好像不是根据梯度求导得出的,求导的结果应该不是1,但是更新规则是直接加上个学习率,就方便很多。对偶思想在后面的支持向量机还会再讲,这里就当个引入把。

4 感知机算法python代码

import numpy as npdef data_set(n, p, seed=20220227):   # 构造数据集,特征矩阵shape=(n, p)np.random.seed(seed)w = np.random.uniform(-3, 3, p)b = np.random.uniform(-3, 3, 1)x = np.random.uniform(-10, 10, (n, p))y = np.apply_along_axis(lambda s: 1 if (s*w).sum()+b >= 0 else -1, axis=1, arr=x)return x, y, np.concatenate((w, b))def perception(x, y, lr=0.6):    # x为特征矩阵,y为label(一维数组)n, p = x.shapew = np.zeros(p)b = np.zeros(1)i = 0while not (np.where(((x*w).sum(axis=1)+b) >= 0, 1, -1) == y).all():row = np.random.randint(0, n, 1)[0]if ((x[row]*w).sum()+b)*y[row] <= 0:w = w+lr*y[row]*x[row]b = b+lr*y[row]i += 1return np.concatenate((w, b)), idef perception_dual(x, y, lr=3):    # x为特征矩阵,y为label(一维数组)n, p = x.shapew = np.zeros(p)b = np.zeros(1)alpha = np.zeros(n)i = 0while not (np.where(((x*w).sum(axis=1)+b) >= 0, 1, -1) == y).all():row = np.random.randint(0, n, 1)[0]if ((x[row]*w).sum()+b)*y[row] <= 0:alpha[row] += lrb = b+lr*y[row]w = x.transpose().dot(alpha)i += 1return np.concatenate((w, b)), iif __name__ == '__main__':feature, label, paras_true = data_set(3000, 2)paras_pred, iterations = perception(feature, label)print('paras_true={}\nparas_pred={}\nparas_pred:paras_true={}\n最后一个数为b,迭代次数为{}'.format(paras_true, paras_pred,paras_pred/paras_true,iterations))# paras_true = [-0.5349794   1.22372565 - 1.88170882]# paras_pred = [-28.20560145  64.38087154 - 99.]# paras_pred: paras_true = [52.72278042 52.61054357 52.61175305]# 最后一个数为b, 迭代次数为1691feature, label, paras_true = data_set(15, 2)paras_pred, iterations = perception_dual(feature, label)print('paras_true={}\nparas_pred={}\nparas_pred:paras_true={}\n最后一个数为b,迭代次数为{}'.format(paras_true, paras_pred,paras_pred/paras_true,iterations))# paras_true = [-0.5349794   1.22372565 - 1.88170882]# paras_pred = [-22.38115122  15.21081373   6.]# paras_pred: paras_true = [41.83553837 12.42992148 - 3.18859109]————————————————
版权声明:本文为CSDN博主「故_kj」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_57494293/article/details/123209704

李航统计学习方法----感知机章节学习笔记以及python代码相关推荐

  1. 统计学习方法 第一章 学习笔记

    假设空间:P5,介绍:监督学习的目的在于找到最好的模型,这个模型即是由输入空间到输出空间的映射的集合,这个集合就是假设空间(hypothesis space).假设空间的确定意味着学习范围的确定. 监 ...

  2. 《统计学习方法》算法学习笔记(四)之 决策树(上)

    决策树 总述 决策树是一种基本的分类与回归方法,本节主要讨论用于分类的决策树.决策树呈树状结构,在分类问题中,表示基于特征对实例进行分类的过程.它可以认为是if-then规则的集合,也可以认为是定义在 ...

  3. 学习笔记:李航统计学习方法

    是关于李航的<统计学习方法>的学习笔记 主要是看七月在线的网课 1 统计学习及监督学习概论 1.1 基础概念 概念:关于计算机基于数据构建概率统计模型.并运用模型对数据进行预测与分析的一门 ...

  4. 【李航统计学习方法】感知机模型

    目录 一.感知机模型 二.感知机的学习策略 三.感知机学习算法 感知机算法的原始形式 感知机模型的对偶形式 参考文献 本章节根据统计学习方法,分为模型.策略.算法三个方面来介绍感知机模型. 首先介绍感 ...

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

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

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

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

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

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

  8. 统计学习方法 第一章 学习心得

    统计学习方法 第一章 学习心得 以下可能有不当之处,请各位朋友停步指正,先谢过各位. 上一帖子说道,统计学习方法的三要素: 模型.策略.算法. 模型:模型的假设空间 策略:模型的选择准则,即:定义最优 ...

  9. 友盟统计+渠道包_学习笔记

    友盟统计+渠道包_学习笔记 资料: 官网:https://developer.umeng.com/docs/66632/detail/66889#h3-u5E38u89C1u95EEu9898 视频资 ...

最新文章

  1. 解决softmax后列和不为1的bug记录 :问题原因为 s为1维的,来除torch.exp(x)(64x10)时候,维数不对应,需要将s也要转换为2维的即维数为(64x1),才可以广播按行对应相除
  2. 北大燕博南:下一代AI芯片— 存内计算的硬核与软着陆 | 报告详解
  3. 里程碑:DTrace 切换到 GPL 许可证
  4. 目标检测评价标准 精准度(precision)、召回率(recall)、准确率(accuracy)、交除并(IoU)【全】
  5. [蓝桥杯2018初赛]乘积尾零-数论
  6. 【转】OData – the best way to REST–实例讲解ASP.NET WebAPI OData (V4) Service Client
  7. pep8 python 编码规范_编码规范的重要性
  8. scrum回顾_[PM]敏捷开发之Scrum总结
  9. python可以在windows运行吗_在Windows中,如何运行这个python脚本呢?
  10. Jrebel激活方法
  11. 合成孔径雷达算法与实现_典型线面目标合成孔径雷达参数化成像
  12. android11代码关机
  13. 谁谋杀了我们的游戏?转自 斗战神制作人-Yocar
  14. 权限提升+权限维持+痕迹清理
  15. java jar加密工具_Java加密流程-防止jar被反编译
  16. android 百度绑定身份证
  17. jasypt 配置文件加解密
  18. 量化交易软件该怎么选择
  19. 计算机教室怎么通电,多媒体电教室系统
  20. 暗影精灵5 设置电池充电阈值

热门文章

  1. rtmp支持h265推流
  2. Browser 浏览器内核
  3. 算法与数据结构学习(46)-B树、B+树和B*树
  4. B树和B+树的查找方式及原因
  5. 前端学习资料 百度云盘
  6. 网络层协议 ——— IP协议
  7. 数据库系统概论 第七章设计数据库
  8. 有这样一个可爱的菇凉,叫TokenClub!
  9. Python Turtle绘图[难度2星]:甜美棒棒糖(基础效果 / 加描边优化)
  10. 怎么用Python批量添加zabbix-host主机