KNN分类器、神经网络原理基础与代码实现

急切学习

两步:(1)归纳 (2)演绎

例如:贝叶斯分类器、决策树分类等等。

惰性学习

将训练数据建模过程推迟到需要对样本分类时(直观理解:死记硬背,记住所有的训练数据,仅仅当记录的属性值与一个训练记录完全匹配才与它分类)

实例:knn分类器

最近邻

使用“最近”的k个点(最近邻)进行分类

k-最近邻分类算法

1、令k是最近邻数目,D是训练样例的集合

2、for每个测试样例z=(x',y') do

3、计算z和每个样例(x,y)∈D之间的距离d(x',x)      (此处的计算开销很大)

4、选择离z最近的k个训练样例的集合Dz

5、 y^{'}=argmax \sum_{(x_{i},y_{i})\epsilon D_{z}}^{}I(v=y_{i})

                    v

6、end for

距离加权表决

       

 

 两种特殊的数据结构提前对训练集进行优化存储

  • Kd-Tree
  • Kd-Ball

k值的选择
1、如果k太小,则对噪声点敏感
2、如果k太大,邻域可能包含很多其他类的点

规范化

属性可能需要规范化,防止距离度量被具有很大值域的属性所左右。

 代码实现

 

支持向量机

 

线性不可分的解决方案:核变化将低维空间数据映射到高维空间。

感知机

最简单的神经网络的雏形:感知机

感知机通过有限次训练就能学会正确的行为。属于线性可分的分类器。

感知机没法解决异或这种线性不可分问题。所以为了解决线性不可分问题,我们将多个线性分类器进行组合,然后得到了多层感知机。对多层感知机进行进一步的延伸就获得了多层神经网络。

 

神经网络

神经网络模型比感知机模型更为复杂,输入层与输出层之间包含隐藏层

最经典: 误差反向传播(BP)神经网络

 从下往上会存在一个输入,由权值我们可以正向地获得一个输出值,这个输出又称作预测值, 误差会从上向下进行反向传播,总而言之,存在数据正向传播,误差反向传播。

 

 

 通常在BP神经网络中我们选择的激活函数为Sigmoid函数,其中Sigmoid函数的特点为处处可导。输入为加权求和的值。对于加权求和得到的数值,代入Sigmoid函数进行进一步的计算,假如这个数值大于0.5,那么该数值属于正类,假如小于0.5,则认为他属于负类。

 线性函数的梯度为0,那么在权值调整过程中没法使用上述减去学习率减去偏导数的方式调整权值,因此在线性函数中较少使用上述方法进行调整。

对于Sigmoid函数和双面正切函数均存在梯度消失问题,对此,我们为了解决激活函数中的梯度消失问题,我们还常会使用线性整流函数作为梯度函数。

 假如大于0,那么就会是一个直线,权值每次都可以通过这个常数进行调整,但是,假如输入是负值的话,偏导会是0,就会出现和前面的线性可分一样,没办法对权值进行下一步的调整。也就导致了神经元的死亡。所以当使用线性整流函数时,我们通常要设置一个较小的学习率。

BP神经网络的主要流程

 

 

 

BP神经网络的求解过程

首先使用各个神经元的数值与对应的权值相乘再相加,将数值加上偏置项,最终将对应的数值代入激活函数Sigmoid即可获得输出。 再将获得的第二层神经网络的数值作为第三层神经元的输入进行下一步计算,即可获得最后的结果。

 ​​​​​​误差计算​

预测输出Oj

真实输出Tj

Errj=Oj(1-Oj)(Tj-Oj)

 

 

 得到对应的误差后,再对误差进行下一步的反向传播。求解反向传播误差的公式

 

求解第四个神经元的误差

  

 下一步对权值进行下一步的调整,根据梯度下降法的原理可知

权值调整公式=初始权值+学习率*对应误差*对应y

对于学习率取值大小对迭代过程的影响:

假如学习率过大的话,可能能够很快地跳到收敛点, 但是不一定能够到达最优的收敛点,可能会在收敛点来回进行一个徘徊。没法达到最优的解;假如学习率太小的话,可能到达收敛点的步子很小,到达收敛点的次数要很多次才能够到达。

后向传播算法的推导 

 

后向传播BP网络注意事项

初始值选择

权值向量以及阀值的初始值应设定在一均匀分布的小范围内

初始值不能为零,否则性能曲面会趋向于鞍点

为什么鞍点不好,因为他在一个维度上面是最小值,而在另外一个维度上面又是最大值,不符合我们想要找的在所有维度都是最小值的情况。

初始值不能太大,否则远离优化点,导致性能曲面平坦,学习率很慢

训练样本输入次序

不同,也会造成不一样的学习结果

在每一次的学习循环中,输入向量输入网络的次序应使其不同

BP算法的学习过程的终止条件

权值向量的梯度<给定值
均方误差值<给定误差容限值

若其推广能力达到目标则予终止

可以结合上述各种方式

神经网络的主要特性:

1、普适性较强,精度较高
2、噪声敏感
3、训练非常耗时,但对目标分类较快

代码实现(多层感知机——MLP)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/73677.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins构建自由风格项目发布jar到服务器

前面的文章有介绍 docker安装jenkins 和 dockerjenkins发布spring项目&#xff1b;这里就不做过多的介绍&#xff0c;直接说明构建步骤。 1、选择构建一个自由风格的项目 2、 选择丢弃旧的构建 3、配置Git信息 4、构建触发器 和 构建环境可以直接跳过 5、直接来到Build Step…

大数据课程I4——Kafka的零拷贝技术

文章作者邮箱&#xff1a;yugongshiyesina.cn 地址&#xff1a;广东惠州 ▲ 本章节目的 ⚪ 掌握Kafka的零拷贝技术&#xff1b; ⚪ 了解常规的文件传输过程&#xff1b; 一、常规的网络传输原理 表面上一个很简单的网络文件输出的过程&#xff0c;在OS底层&…

js操作剪贴板讲解

文章目录 复制&#xff08;剪切&#xff09;到剪贴板Document.execCommand()Clipboard复制Clipboard.writeText()Clipboard.write() copy&#xff0c;cut事件 从剪贴板进行粘贴document.execCommand(paste)Clipboard粘贴Clipboard.readText()Clipboard.read() paste 事件 安全性…

科技资讯|苹果手机版Vision Pro头显专利曝光,内嵌苹果手机使用

根据美国商标和专利局&#xff08;USPTO&#xff09;公示的清单&#xff0c;苹果公司近日获得了一项头显相关的技术专利&#xff0c;展示了一款亲民款 Vision Pro 头显&#xff0c;可以将 iPhone 放置在头显内部充当屏幕。 根据patentlyapple 媒体报道&#xff0c;这是苹果公司…

【TI毫米波雷达笔记】IWR6843AOP的CCS工程模板创建(DSS)

【TI毫米波雷达笔记】IWR6843AOP的CCS工程模板创建&#xff08;DSS&#xff09; 如果还不会配置MSS 则看我的文章&#xff1a; blog.csdn.net/weixin_53403301/article/details/132274755大体上与MSS创建也差不多 SDK我用的3.5版本 DSS工程模板&#xff1a; download.csdn.…

JavaScript数据结构【进阶】

注&#xff1a;最后有面试挑战&#xff0c;看看自己掌握了吗 文章目录 使用 splice() 添加元素使用 slice() 复制数组元素使用展开运算符复制数组使用展开运算符合并数组使用 indexOf() 检查元素是否存在使用 for 循环遍历数组中的全部元素创建复杂的多维数组将键值对添加到对象…

Linux mmap系统调用视角看缺页中断

问题 1. mmap具体是怎么实现比read/write少一次内存copy的 2.mmap共享映射和私有映射在内核实现的时候到底有什么区别 3.mmap的文件映射和匿名映射在内核实现的时候到底有什么区别 4.父子进程的COW具体怎么实现的 概述 实际开发过程中经常使用或者看到mmap函数&#xff0…

【MySQL】表的内连和外连

本期我们来谈谈表的连接 目录 一、内连接 二、外连接 2.1 左外连接 2.2 右外连接 一、内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选&#xff0c;我们上期学习的复合查询都是内连接&#xff0c;也是在开发过程中使用的最多的连接查询 使用内连接时…

使用windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】

文章目录 1. 安装IIS必要WebDav组件2. 客户端测试3. 使用cpolar内网穿透&#xff0c;将WebDav服务暴露在公网3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户端4.1 连接WebDav服务器4.2 连接成功4.2 连接成功 1. Linux(centos8…

Qt 文件对话框使用 Deepin风格

当你在Deepin或UOS 上开发 Qt 程序时&#xff0c;如果涉及到文件对话框功能&#xff0c;那么就会遇到调用原生窗口的问题。 如果你使用的是官方的Qt版本&#xff0c;那么在Deepin或者UOS系统上&#xff0c;弹出的文件对话框会是如下这样&#xff1a; 而Deepin或UOS系统提供的默…

考研数据结构:第七章 查找

文章目录 一、查找的基本概念二、顺序查找和折半查找2.1顺序查找2.3折半查找2.3.1算法思想2.3.2代码实现2.3.3查找效率分析2.3.4折半查找判定树的构造2.3.5折半查找效率2.3.6小结 2.4分块查找 三、树形查找3.1二叉排序树3.1.1二叉排序树定义3.1.2查找操作3.1.3插入操作3.1.4二叉…

DVI端口静电防护,如何设计保护电路图?

Digital Visual Interface&#xff0c;简称DVI&#xff0c;中文名&#xff1a;数字视频接口&#xff0c;是一种视频接口标准&#xff0c;用来传输未经压缩的数字化视频&#xff0c;广泛应用于LCD、数字投影机等显示设备上。DVI端口的种类非常多&#xff0c;有DVI-A、DVI-D、DVI…

Rx.NET in Action 第二章学习笔记

2 Hello, Rx 本章节涵盖的内容: 不使用Rx的工作方式向项目中添加Rx创建你的第一个Rx应用程序 Rx 的目标是协调和统筹来自社交网络、传感器、用户界面事件等不同来源的基于事件的异步计算。例如&#xff0c;建筑物周围的监控摄像头和移动传感器会在有人靠近建筑物时触发&#xf…

threejs中gltf模型出现的问题(黑色,颜色不协调,太小)和解决方案

模型一片漆黑 如下图 可能原因&#xff0c;没有灯光&#xff0c;加下以下代码&#xff1a; // 4、加入灯光 const lightness new THREE.HemisphereLight(0xffffff, 0x444444); lightness.position.set(0, 20, 0); scene.add(lightness); const shadowLight new THREE.Direct…

文献综述|NLP领域后门攻击、检测与防御

前言&#xff1a;在信息安全中后门攻击&#xff08;Backdoor Attack&#xff09;是指绕过安全控制而获取对程序或系统访问权的方法。而随着深度学习以及各种神经网络模型的广泛应用&#xff0c;神经网络中存在的后门问题也引起了研究人员的广泛关注。神经网络后门攻击就是使网络…

robotframework+selenium 进行webui页面自动化测试

robotframework其实就是一个自动化的框架&#xff0c;想要进行什么样的自动化测试&#xff0c;就需要在这框架上添加相应的库文件&#xff0c;而用于webui页面自动化测试的就是selenium库. 关于robotframework框架的搭建我这里就不说了&#xff0c;今天就给大家根据一个登录的实…

淘宝API接口的实时数据和缓存数据区别

电商API接口实时数据是指通过API接口获取到的与电商相关的实时数据。这些数据可以包括商品库存、订单状态、销售额、用户活跃度等信息。 通过电商API接口&#xff0c;可以实时获取到电商平台上的各种数据&#xff0c;这些数据可以帮助企业或开发者做出及时的决策和分析。例如&…

web会话跟踪以及JWT响应拦截机制

目录 JWT 会话跟踪 token 响应拦截器 http是无状态的&#xff0c;登录成功后&#xff0c;客户端就与服务器断开连接&#xff0c;之后再向后端发送请求时&#xff0c;后端需要知道前端是哪个用户在进行操作。 JWT Json web token (JWT), 是为了在网络应用环境间传递声明而…

Vue3 大屏数字滚动效果

父组件&#xff1a; <template> <div class"homePage"> <NumRoll v-for"(v, i) in numberList" :key"i" :number"v"></NumRoll> </div> </template> <script setup> import { onMounted, r…

安装elasticsearch

一、docker安装elasticsearch 1、下载镜像 docker pull elasticsearch:6.5.4 2、启动容器 docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \ -e "discovery.typesingle-node" \ -e "cluster.nameelasticsearch" \ -e "ES_JAVA_OPTS-Xm…