Preceptron感知机

前言

在上一章中,我们讨论了回归问题,主要的任务就是拟合出数据集分布的解析式。而这一次的学习中,我们将关注分类问题。

Classification

classification分类有两种:二元分类和多类分类。

二元分类:预测二值目标,在分类问题属于基本问题。

多类分类:预测离散(>2)值目标的二元分类的示例。

分类在实际生活中有什么意义吗?

很多领域都有分类问题,例如,可以根据是否存在各种症状,医生预测患者是否患有疾病;

管理员将电子邮件分类为垃圾邮件或非垃圾邮件;

预测金融交易是否具有欺诈性等。

Binary Linear Classication

二元分类中基础的为二元线性分类。

它的描述如下:

给定D维输入x\epsilon R^{D}预测离散值目标。

预测二进制目标y\epsilon \left \{ 0,1\right \}y\epsilon \left \{ -1,+1 \right \}

其中y=1的样本称为正样本,y=0或y=-1的样本称为负样本

模型预测\hat{y}是x的线性函数。

我们看下面这样的数据集:

样本有两个维度,y表示样本所属的类别。

在坐标图中绘制出来:

接下来我们的任务就是得到一个预测模型(解析式),对于其他的样本,输入到模型中能够得到它的分类情况。

对于该数据集,我们可以用一条直线将其进行分类,这条直线的解析式可以定义为:

w^{T}{x}'+b=0

然后计算不同的数据样本到直线的距离

d=\frac{w^{T}x+b}{\left \| w \right \|}

在坐标图中:

因此在直线下面的距离d<0,在直线上面的d>0,然后定义一个符号函数

这样我们就能用直线来对数据进行二元分类了。

另外对于上述求距离的公式,其中\left \| w \right \|是一个非负数,而最终我们判断类别仅仅考虑正负号的情况,所以不用精确距离数值,只保留公式中影响正负的式子即可。可以再乘\left \| w \right \|消掉,这样公式就变为了w^{T}x+b

那么我们的预测模型就可以这样定义:

\hat{y}=f(x)=sign(\sum_{i=1}^{D}w_{i}x_{i}+b)=sign(w^{T}x+b)

根据数据集训练获得参数w和b,然后就可以对新的数据进行预测了,预测结果\hat{y}范围为(-1,1)

这个模型我们就可以称之为感知机(Perceptron)

Cost Function

这样损失函数就很简单了,我们可以用w^{T}x+b表示模型预测的距离信息,而实际数据的分类信息是y,我们让预测的\hat{y}与实际的y相乘。

例如这样的示例,其中右下的样本它本身应该属于-1,但是我们的分类线把它划在了上面,即w^{T}x+b>0,那么相乘后结果<0。只有当预测的结果与实际值一致时,相乘后的结果才是非负数。

因此只要出现负数,就表明目前模型参数有损失,可以进行优化。

Optimization

怎么进行优化呢?

首先我们考虑优化的对象,在上面的分析中,预测值与实际值乘积<0表明预测错误,所以我们只对这部分进行优化即可。

不过,这里有一个问题呀,为什么w的优化公式是

w=w-\eta \left ( -y^{\left ( i \right )}x^{\left ( i \right )} \right )   这样的呢?

在上一章《线性回归》中我们也用了这样的梯度下降的优化方法,感觉这样的公式是偏直觉的,好像看着很有道理,但是具体的原理是怎么样的呢?

我们要先明白这里为什么梯度是-y^{\left ( i \right )}x^{\left ( i \right )},前面加负号的原因是什么?

很显然,在该模型中选取的损失函数为

而只有该函数小于0的时候才说明预测结果失败,因此我们选取的都是该损失函数小于0的部分,那么假设损失函数为l(w,b),在优化的时候有l(w,b)<0,一般情况下我们习惯用正数表示损失函数值,所以令L(w,b)=-l(w,b)就有了>0,这样对L函数求w的偏导会得到-y^{\left ( i \right )}x^{\left ( i \right )}

至于整个式子,偏导数表示损失函数在 w方向上的局部变化率,即损失函数在当前点w的增长方向。-偏导数则为当前点w的减少方向,所以w=w-\eta \left ( -y^{\left ( i \right )}x^{\left ( i \right )} \right ) 这样更新w可以不断地减少损失函数值,从而达到优化的效果。

作业

数据集格式样式为:

共50行3列数据,前两列为横纵坐标,最后一列为该样本所属的类别。

文件分享

需要完成的任务如图所示:

文件分享

我们需要在update优化函数中,填写W和J的更新方法。

填写如下:

这里的Z实际上为\hat{y},即预测的类别,然后让Z矩阵中的元素与实际类别y相乘,对于大于0的部分更改为0(说明该部分预测正确)。剩下的就是预测错误的样本,接着就对这部分样本进行优化。

我们选取的优化策略为梯度优化,由于之前的损失为负数,所以这里-X.T@Y有一个-号。

迭代次数,学习率设置如下:

最后的结果为:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【chatgpt】归一化前训练测试集拆分还是归一化后训练测试集拆分

先拆分数据集然后归一化 在进行机器学习建模时&#xff0c;应该先进行训练测试集拆分&#xff08;train-test split&#xff09;&#xff0c;然后对训练集进行归一化&#xff0c;再使用训练集的归一化参数对测试集进行归一化处理。这样可以确保归一化过程不泄露测试集的信息&a…

Laravel+swoole 实现websocket长链接

需要使用 swoole 扩展 我使用的是 swoole 5.x start 方法启动服务 和 定时器 调整 listenQueue 定时器可以降低消息通讯延迟 定时器会自动推送队列里面的消息 testMessage 方法测试给指定用户推送消息 使用 laravel console 启动 <?phpnamespace App\Console\Comman…

华纳云:查看服务器磁盘I/O性能的工具和方法

要查看服务器硬盘的I/O性能&#xff0c;可以使用多种工具和方法。以下是一些常用的命令和工具&#xff1a; 1. 使用 dd 命令 dd 是一个强大的工具&#xff0c;可以用来测试硬盘的读写速度。 测试写性能 dd if/dev/zero of/path/to/testfile bs1M count1024 convfdatasync 测试读…

k8s核心操作_存储抽象_K8S中使用ConfigMap抽取配置_实现配置热更新---分布式云原生部署架构搭建032

现在有个问题,是上面我们利用pv和pvc 就是持久卷 以及 持久卷申请,实现了对存储的,pod删除以后,对其使用的存储空间也进行了删除,那么还有个问题,对于redis这种我们希望,他的配置也管理起来. 比如这个redis的配置文件. 以后其他的配置文件也是这样. 使用配置文件的存储在k8s中…

Spring Boot 中使用 Resilience4j 实现弹性微服务的简单了解

1. 引言 在微服务架构中&#xff0c;服务的弹性是非常重要的。Resilience4j 是一个轻量级的容错库&#xff0c;专为函数式编程设计&#xff0c;提供了断路器、重试、舱壁、限流器和限时器等功能。 这里不做过多演示&#xff0c;只是查看一下官方案例并换成maven构建相关展示&…

【Go系列】Go语言的测试

承上启下 在Go语言中&#xff0c;我们写了代码之后经常就要进行测试。我们可以直接在go函数中调用具体的函数&#xff0c;从而实现测试的目的。但是一旦系统复杂的情况下&#xff0c;我们频繁修改main调用函数就显得不太正常了。那么是不是存在一种方法&#xff0c;让我们可以虚…

代码随想录学习 54day 图论 Bellman_ford 队列优化算法(又名SPFA) 学习

Bellman_ford 队列优化算法&#xff08;又名SPFA&#xff09; 卡码网&#xff1a;94. 城市间货物运输 I 题目描述 某国为促进城市间经济交流&#xff0c;决定对货物运输提供补贴。共有 n 个编号为 1 到 n 的城市&#xff0c;通过道路网络连接&#xff0c;网络中的道路仅允许从…

Hadoop3:RPC通信原理及简单案例实现

一、场景介绍 我们知道&#xff0c;Hadoop中存在多种服务&#xff0c;那么&#xff0c;服务之间是如何通信的了&#xff1f; 比如&#xff0c;DN和NN之间如何通信&#xff1f; 这里&#xff0c;实际上是通过RPC实现进程间通信的了。 RPC属于Java网络编程范畴 需要编写客户端和…

自用自用自用,持续更新,记录部分CPU,显卡,部分跑分软件,游戏帧数参考,自用

自用自用自用&#xff0c;持续更新&#xff0c;记录部分CPU&#xff0c;显卡&#xff0c;部分跑分软件&#xff0c;游戏帧数参考&#xff0c;自用 CPU跑分显卡游戏 CPU跑分 CPUZ单核CPUZ多核R23单核R23多核5800h576.85860.014311270212100f644.43258.31576804313500h763.36658…

AAD Connect自定义同步用户上云

使用场景&#xff1a;我想同步本地AD域的那些用户信息、账号上云端做SSO登录和权限管控&#xff0c;但是不希望使用快速上传一股脑传上去&#xff0c;所以使用自定义同步功能上传&#xff0c;这是一篇对AAD CONNECT这个应用的详解和配置步骤推荐 AD Connect如何自定义配置&…

easyswoole/Hyperf开发的php系统 cpu超负荷定位排查

EasySwoole EasySwoole是一个高性能的PHP协程框架&#xff0c;它利用了协程的特性来提高PHP应用的性能。当使用EasySwoole开发的PHP系统遇到CPU超负荷的问题时&#xff0c;可以从以下几个方面进行全方位排查和优化&#xff1a; 1. 监控系统资源 使用top、htop、vmstat、iost…

隐性行为克隆——机器人的复杂行为模仿学习的新表述

介绍 论文地址&#xff1a;https://arxiv.org/pdf/2109.00137.pdf 源码地址&#xff1a;https://github.com/opendilab/DI-engine.git 近年来&#xff0c;人们对机器人学习进行了大量研究&#xff0c;并取得了许多成果。其中&#xff0c;模仿学习法尤其受到关注。这是一种从人…

iOS ------ 消息传递和消息转发

一&#xff0c;消息传递 在OC中&#xff0c;传递消息就是在对象上调用方法。 相对于C语言的方法就“静态绑定”的函数&#xff0c;在编译器就决定了运行时所要调用的函数。在OC中&#xff0c;如果向某对象传递消息&#xff0c;就会使用动态绑定机制来决定需要调用那个方法。调…

全球风味:红酒中的地域风情与特色

在红酒的世界里&#xff0c;每一滴琼浆玉液都承载着地域的风情与特色。它们不仅仅是葡萄酒&#xff0c;更是大自然的恩赐&#xff0c;是时间的馈赠&#xff0c;是人类智慧的结晶。今天&#xff0c;就让我们一起走进红酒的世界&#xff0c;感受那些来自不同地域的风情与魅力。 …

前端面试题日常练-day91 【Less】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末 在Less中&#xff0c;以下哪种语法适用于创建混合器&#xff08;Mixin&#xff09;&#xff1f; a) mixin b) #mixin c) .mixin d) extend Less中的子元素选择器是用什么符号表示的&#xff1f; a) &…

【Vue】RouterLink的replace属性

1、作用&#xff1a;控制路由跳转时操作浏览器历史记录的模式&#xff1b; 2、浏览器的历史记录有两种写入方式&#xff1a;分别为push和replace&#xff0c;push是追加历史记录&#xff0c;replace是替换当前记录。路由跳转时候默认为push&#xff1b; 3、如何开启replace模式…

ROS2入门到精通—— 2-6 ROS2实战:可调节纯跟踪算法(局部规划)

1 Regulated Pure Pursuit 纯追踪算法变体&#xff1a;调节纯追踪算法 将自适应纯追踪&#xff08;Adaptive Pure Pursuit&#xff09;算法的特性与围绕线性速度的规则相结合&#xff0c;重点关注消费类、工业和服务型机器人的需求。我们还实现了几种常识性的安全机制&#xf…

业务终端动态分配IP-DHCP技术、DHCP中继技术

一、为什么需要DHCP? 1、许多设备(主机、无线WiFi终端等)需要动态地址的分配; 2、人工手工配置任务繁琐、容易出错,比如:IP地址冲突; 3、网络规模扩大、复杂度提高,网络配置越来越复杂,计算机的位置变化和数量超过可分配IP地址的数量,造成IP地址变法频繁以及IP地址…

Monaco 使用 DocumentHighlightProvider

Monaco 中有一个文字高亮的功能&#xff0c;就是选中一个单词&#xff0c;会高亮文字文档中所有出现该单词的位置&#xff0c;效果如下&#xff1a; Monaco 默认就有这个功能&#xff0c;可以根据具体需求进行定制。通过 registerDocumentHighlightProvider 进行注册 实现 pro…

java包装类 及其缓存

Java 包装类&#xff08;Wrapper Class&#xff09;是将基本数据类型转换为对象的方式&#xff0c;每个基本数据类型在 java.lang 包中都有一个相应的包装类&#xff1a; Boolean 对应基本类型 boolean Character 对应基本类型 char Integer 对应基本类型 int Float 对应基本…