机器学习第八次课

前言

开课了,今天会讲点什么呢,先看看

首先是机器学习的三步走,第一步是确定函数,第二步是损失函数,第三步就是训练,对应到线性回归,就是确定函数,然后就是MSE,第三步是梯度下降法,先问了个问题.

然后问了一个梯度下降的问题,梯度下降是一个用于优化目标函数的算法,常用于机器学习和人工智能中的模型训练。梯度在这里可被理解为导数或者偏导数,它指向了函数值下降最快的方向。在机器学习中,我们经常需要最小化损失函数,而梯度下降就是一种有效的方法。 梯度下降的基本步骤是: 1. 首先,选取一个随机的点(也就是参数),作为开始。 2. 然后,计算此点的梯度,也就是目标函数的导数。 3. 接着,沿着梯度的负方向,也就是函数值下降最快的方向,移动一小步,得到新的点。 4. 重复步骤2和3,直到梯度为0(也就是找到了局部最小值),或者满足其他结束条件(例如,达到预设的迭代次数、梯度变化很小等)。 这是最基本的批量梯度下降法。此外,还有一些变种,例如随机梯度下降(SGD)和小批量梯度下降,它们在更新参数时,不是使用全部的数据,而是采样一部分数据或者一条数据来计算梯度,可以提高计算效率。 需要注意的是,梯度下降法并不能确保找到全局最优解,只能找到局部最优解,因为梯度下降法是一种基于局部信息进行优化的方法,它并不能看到全局的情况。所以初始点的选取或者学习率的设定都可能影响到最后找到的结果。

正文

逻辑斯蒂回归做的是分类任务为什么名字里却有回归

虽然名字中包含“回归”,逻辑斯蒂回归实际上被用于分类任务,这在初次接触时确实可能会引起混淆。这是因为逻辑斯蒂回归的历史和其方法的数学性质。 首先,了解下"回归"这个统计术语的由来有助于理解。"回归"一词最早由英国统计学家Francis Galton在19世纪末提出,他在研究父母身高与孩子身高之间的关系时,发现孩子的平均身高总是“倾向于回归”向平均身高,因此他提出了这个术语。 而在底层的数学模型上,逻辑斯蒂回归是基于线性回归的。逻辑斯蒂回归使用的是对数几率函数(logit function),也就是一种线性回归模型,只是这个函数能将预测值限制在0和1之间,适用于二元或多元分类任务。因此,尽管在应用上,我们用逻辑斯蒂回归做分类,但在模型设定上,它实际上是一种回归模型。 所以,尽管在实际操作中,我们把逻辑斯蒂回归用于分类任务,但是从历史和数学角度看,将其称为"回归"是有一定道理的。

在逻辑回归的时候不能用均方误差,而是要用极大似然估计,那么什么是极大似然估计?

极大似然估计

极大似然估计(Maximum Likelihood Estimation,MLE)是一种用于估计统计模型参数的常用方法。 这种方法的基本思想是:在所有可能的参数值中,选取能使得已知样本数据出现的可能性(即,似然)最大的参数值作为模型参数的估计值。 简单地说,就是找到一组参数,让我们观察到的数据在这个模型下发生的概率尽可能大。 极大似然估计的基本步骤如下: 1. 建立似然函数:这就是数据的概率分布函数,但是参数是未知的。对于给定的样本观测结果,把这个概率函数看作是参数的函数,我们就称之为似然函数。 2. 对似然函数求导,并令其为0:这样可以得到极值。在实际计算中,我们通常对似然函数取对数,并求解对数似然函数的最大值,这样可以简化计算。 3. 解出参数值:这就是MLE的参数估计值。 在逻辑回归中,采用极大似然估计法来找出最优的模型参数。这是因为分类任务的预测值是离散的(如0或1),这种离散值和连续值之间的差异会使均方误差损失函数在某些地方不可导,因此,不能使用梯度下降等优化方法。而似然函数则没有这个问题。

极大似然估计和交叉熵都是判断模型预测准确性的度量方式,二者在很多情境下存在密切的关系。 在深度学习中,逻辑回归模型常常使用交叉熵损失函数。其实,当我们使用交叉熵损失函数进行优化的时候,就相当于在进行极大似然估计。下面我来解释一下这两者的关系。 在二元分类问题中,我们可以将标签设置为0和1。对于单个样本的预测结果,如果使用极大似然估计,其似然函数可以表示为: L = y * log(p) + (1 - y) * log(1 - p) 其中,y是真实标签,p是模型预测为正样本(y=1)的概率。我们的目标是找到最大化似然函数的参数。在实际应用中,通常对似然函数取负对数并求最小值,这样更容易计算。因此,目标函数变为: -log(L) = -y * log(p) - (1 - y) * log(1 - p) 这就是我们常说的二元交叉熵损失函数。 因此,我们可以看到,极大似然估计和交叉熵损失其实在数学上是一致的,只不过是优化的角度不同:一个是最大化似然函数,一个是最小化损失函数。所以,在逻辑回归模型中,优化交叉熵损失函数其实就是在进行参数的极大似然估计。

单独一个逻辑回归做不了太多,但是多个连载一起就形成一个很大的网络了

KNN

k-近邻算法(K-Nearest Neighbors,简称KNN)。 KNN是一种监督学习算法,用于分类和回归问题。其工作原理非常简单:基于训练数据集对新数据进行预测。预测的方式就是找出新数据在训练数据集中的最近邻居,然后根据这些邻居的标签来预测新数据的标签。 举个例子,假设你有一个数据集,其中每个数据都标注了是否喜欢看电影。现在,你有一个新的数据(一个人),你想预测这个人是否喜欢看电影。在KNN中,你会寻找数据集中最接近这个新数据的k(最好是奇数)个数据,然后查看这些数据中有多少个数据喜欢看电影。如果大多数都喜欢,那么你就预测这个人也喜欢看电影;否则,你就预测他不喜欢。 KNN算法的主要优点是简单易懂,容易实现。但此算法也有一些缺点,比如计算成本高(需要计算新数据与所有训练数据的距离),且对于特征数量多或者训练样本数量大的数据不太适用,也可能受到未标记样本的噪声干扰。 总的来说,KNN算法在处理一些简单问题上是一个非常好用的工具。

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

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

相关文章

redis基于Stream类型实现消息队列,命令操作,术语概念,个人总结等

个人大白话总结 1 在Redis Stream中,即使消息被消费者确认(acknowledged, ACK),消息也不会自动从Stream数据结构中删除。这与Kafka或RabbitMQ等传统消息队列系统的做法不同,在那些系统中,一旦消息被消费并…

MyBatisPlus详解(四)通用枚举、JSON类型处理器、配置加密、自动分页插件与工具类

文章目录 前言3 扩展功能3.3 通用枚举3.3.1 使用枚举类3.3.2 功能测试 3.4 JSON类型处理器3.4.1 使用JSON类型处理器3.4.2 功能测试 3.5 配置加密3.5.1 生成密钥3.5.2 修改配置3.5.3 功能测试 4 插件功能4.1 自动分页插件4.1.1 配置分页插件4.1.2 分页API 4.2 通用分页实体4.2.…

递归实现斐波那契数列的空间复杂度的讲解

题目:计算斐波那契数列Fib的空间复杂度 过程图解: 理解要点: 递归的运算顺序和方式不是同时进行图中的所有Fib函数,而是有顺序的! 第一步:单独的一个Fib(N)进行到底Fib&#xff08…

XV6源码阅读——进程地址空间

文章目录 前言页表实际情况 前言 一个本硕双非的小菜鸡,备战24年秋招。打算尝试6.S081,将它的Lab逐一实现,并记录期间心酸历程。 代码下载 官方网站:6.S081官方网站 页表 每个进程都有一个单独的页表,当xv6在进程之…

Linux套接字编程详解

Linux套接字编程 预备知识IP地址和MAC地址套接字结构网络字节序 UDP套接字编程服务端代码客服端代码 TCP 套接字守护进程 计算器模块1 日志头文件序列化和反序列化 预备知识 IP地址和MAC地址 MAC地址用来在局域网中标识唯一主机 Ip地址用于在广域网中标识唯一主机 &#xff0…

Stable Diffusion插件(翻译)

Agent Scheduler(代理调度器):一个用于排队和跟踪任务历史的工具,使得管理生成任务变得井井有条。TemporalKit(时间稳定工具包):这是一个全能解决方案,通过一个自动化扩展&#xff0…

2767. 将字符串分割为最少的美丽子字符串

2767. 将字符串分割为最少的美丽子字符串 Java: class Solution {int cnt;int ans;int[] arr;Set<Integer> set;private void dfs(String s, String s1, int pos, int len) {if (pos len) {ans Math.min(ans, cnt);return;}for(int i pos; i < len; i) {String s2…

接口的概念

Java中的接口&#xff08;Interface&#xff09; 在Java编程语言中&#xff0c;接口是一种引用类型&#xff0c;它是一种特殊的抽象类型&#xff0c;用于定义对象的行为。接口是一组抽象方法的集合&#xff0c;它规定了一组方法&#xff0c;而实现接口的类则负责具体实现这些方…

软件游戏缺失d3dcompiler_43.dll怎么修复?分享多种靠谱的解决方法

在我们日常频繁地操作和使用电脑的过程中&#xff0c;时常会遇到一些突发的技术问题。其中一种常见的情况是&#xff0c;在尝试启动或运行某个应用程序时&#xff0c;系统会弹出一个错误提示窗口&#xff0c;明确指出当前电脑环境中缺少了一个至关重要的动态链接库文件——d3dc…

Linux配置腾讯云yum源(保姆级教学)

1. 备份原有的 yum 源配置文件 例如&#xff1a; mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2. 下载腾讯云的 yum 源配置文件 例如&#xff1a; wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/…

将数字状态码在后台转换为中文状态

这是我们的实体类 可以看出我们的状态status是2如果返回到前端我们根本不知道2代表的是什么&#xff0c;所以我们需要再这里将数字转换成能看懂的中文状态&#xff0c;首先我们创建一个枚举类 先将我们状态码所对应的中文状态枚举出来&#xff0c;然后创建一个静态方法&#…

基于OpenCV+QT的人脸识别打卡项目

1.基本概念 基于OpenCV的人脸识别是一个多步骤的过程&#xff0c;通常涉及以下步骤&#xff1a; 人脸检测&#xff1a;使用Haar级联或深度学习模型来检测图像中的面部区域。OpenCV提供了预训练的Haar级联分类器&#xff0c;可以用于快速检测。 特征提取&#xff1a;一旦检测到…

Java面试之JDK、JRE、JVM区别

1、JDK&#xff08;Java Development Kit&#xff09;&#xff1a; JDK是Java开发工具包&#xff0c;它是开发Java应用程序的核心工具。它包含了编译器&#xff08;javac&#xff09;、运行时库&#xff08;Java标准库&#xff09;、调试器&#xff08;jdb&#xff09;等工具&…

eCharts 折线图 一段是实线,一段是虚线的实现效果

在lineStyle里写了不生效的话&#xff0c;可以尝试数据拼接 option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data: [150, 230, 224,218 ,,,],type: line},{data: [,,, 218, 135, 147, 260],type: line,lineStyl…

【御控工业物联网】JAVA JSON结构转换、JSON结构重构、JSON结构互换(5):对象To对象——转换映射方式

御控官网&#xff1a;https://www.yu-con.com/ 文章目录 御控官网&#xff1a;[https://www.yu-con.com/](https://www.yu-con.com/)一、JSON结构转换是什么&#xff1f;二、术语解释三、案例之《JSON对象 To JSON对象》四、代码实现五、在线转换工具六、技术资料 一、JSON结构…

JavaScript实现代码雨

一、功能描述 使用canvas实现一个代码雨的功能&#xff0c;炫一个~~~ 二、上码 html <canvas id"canvas"></canvas> js let canvas document.querySelector(canvas);let ctx canvas.getContext(2d);// screen.availWidth:可视区域的宽度canvas.width…

深度学习框架pytorch:tensor.data和tensor.detach()的区别

本文重点 本文我们区别一下tensor.data和tensor.detach(),我们所讲解的都是pytorch的1.0版本的情况 官方解释 返回一个新的张量,它与当前图形分离。结果永远不需要梯度。返回的张量与原始张量共享相同的存储空间。将看到对其中任何一个的就地修改,并且可能在正确性检查中…

测试用例设计方法-探索性测试

生活犹如骑单车&#xff0c;唯有前进才能保持平衡。大家好&#xff0c;今天给大家分享一下关于探索性测试的方法&#xff0c;在探索性测试中更加考验测试人员的经验&#xff0c;所以我们在平时的测试工作中一定要多记录、多总结、多复盘&#xff0c;对于经常出现的bug深究其根本…

[Android][JAVA][kotlin] 获取各种语言的星期,月份,长月份,缩写月份

kotlin 写法 import java.text.DateFormatSymbolsprivate fun loadTime() {val calendarInstance Calendar.getInstance()val day calendarInstance.get(Calendar.DAY_OF_MONTH)val month calendarInstance.get(Calendar.MONTH)val weekday calendarInstance.get(Calendar…

【论文解析】笔触渲染生成 前沿工作梳理

最近的一些工作梳理 2023年 Stroke-based Neural Painting and Stylization with Dynamically Predicted Painting Region 2022年Im2Oil: Stroke-Based Oil Painting Rendering with Linearly Controllable Fineness Via Adaptive Sampling 文章目录 1 Stroke-based Neural P…