【AI学习从零至壹】Pytorch逻辑回归

Pytorch逻辑回归

  • 线性回归
    • 简单线性回归的参数估计
    • 概率和似然的区别
  • 最⼤似然估计
    • 似然函数
      • 对数似然函数
  • 逻辑回归
  • 梯度下降法
    • 下⼭问题
    • 梯度与学习率
      • 学习率
    • 梯度下降法的模拟与可视化
    • 学习率对梯度的影响
      • 学习率的最佳取值
    • 梯度更新
    • 逻辑回归模型构建及训练流程

线性回归

线性回归的⽬标就是找到⼀个线性函数来拟合数据,使得预测值与真实值之间的误差尽可能⼩,⽽参数估计就是确定这个线性函数中参数的过程。

简单线性回归的参数估计

简单线性回归模型的表达式为: y = β0 + β1x + ϵ,其中 是因变量, X是⾃变量, B0是截距, B1是斜率, ϵ是误差项(服从均值为 0 的正态分布)。
斜率 表⽰直线的倾斜程度,它衡量了⾃变量每变动⼀个单位时,因变量的平均变动量。在机器学习和优化算法中,为了更简洁通⽤地表⽰这些参数,常常⽤ 来统⼀表⽰模型的参数向量。
误差真实值和预测值之间肯定是要存在差异的(用ϵ来表示该误差)
对于每个样本:
在这里插入图片描述
在这里插入图片描述

概率和似然的区别

概率(Probably),是在已知⼀些概率分布参数的情况下,预测观测值的结果;
似然(Likelihood),则是⽤于在已知某些观测值所得到的结果时,对观测结果所属的概率分布参数进⾏估计。
在这里插入图片描述
X表⽰某⼀个具体的数据; 表⽰模型的参数。

  • 如果0是已知确定的,X 是变量,这个函数叫做概率函数(probability function),它描述对于不同的样本点 ,其出现概率是多少。
  • 如果X是已知确定的, 0是变量,这个函数叫做似然函数(likelihood function),它描述对于不同的模型参数,出现 这个样本点的概率是多少。

最⼤似然估计

最⼤似然估计(Maximum Likelihood Estimation)就是⼀种可以⽣成拟合数据任何分布的参数的最可能估计的技术。
简单解释就是:最⼤似然估计的⽬的就是找到⼀个最符合当前观测数据的概率分布。

似然函数

在这里插入图片描述

在这里插入图片描述

对数似然函数

我们对似然函数取对数, 就是对数似然函数
在这里插入图片描述
在这里插入图片描述

为什么要取对数?
原始的似然函数是很多条件概率的乘积, 在计算极⼤值的时候需要求似然函
数的导数。 ⽽乘积的导数计算很⿇烦, 所以取对数可以把乘法变成加法。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

逻辑回归

逻辑回归就是将线性回归模型映射为概率的模型
⽽这其中的转换,我们使⽤的就是sigmoid函数
在这里插入图片描述
在这里插入图片描述
回过头来看之前说过的
在这里插入图片描述
在这里插入图片描述

梯度下降法

在机器学习中,梯度下降法的作⽤就是:最⼩化⼀个损失函数。

下⼭问题

  • 梯度下降的思想其实就是⼀个下⼭的过程,假设我们爬到了⼭顶,然后感觉很累想尽快下⼭休息。但是这个时候起雾了,⼭上都是浓雾,能⻅度很低。那么我们下⼭的路径是⽆法确定的,这时候我们要怎么下⼭呢?聪明的你肯定能想到利⽤周围能看⻅的环境去找下⼭的路径,这个时候梯度下降的思想就能体现了,我们⾸先要找到周围最陡峭的地⽅,然后朝着地势往下的⽅向⾛,⾛完⼀段距离发现最陡峭的⽅向变了,那么我们调整⼀下⽅向接着沿地势往下的⽅位⾛。这样不断的进⾏下去,理论上最后⼀定会到达⼭脚
  • 假设这座⼭有的坡特别平缓,那么⼏个⽅向的陡峭程度很接近,我们⽆法⽤⾁眼测量出最陡峭的,假如恰好我们带了⼀个测量仪,然后每⾛⼀段距离我们就会测量⼀次,这时候就会出现⼀个问题,如果我们每⾛⼏步就测量⼀次,那么可能⾛到明天我们都下不去⼭,但是我们如果减少测量次数,那么可能就会偏离下⼭的最快的路径。这⾥我们就会需要⼀个合适的测量频率,保证我们下⼭路径⾜够快,然后⼜不需要太多时间去测量。
  • 因此,我们不断的使⽤这种⽅法,反复的求取梯度,函数就能达到相对的最⼩值。为什么是相对⽽不是绝对呢? 我们下⼭过程中可能会遇到这种情况,根据地势往下⾛,不⼩⼼进⼊了⼀个很深的洼地,这时四周都是地势向上了,⼈是很聪明的,我们可以爬出来继续找个其它地势向下的⽅向,但是计算机可没有那么聪明,它可能会深陷其中⽆论怎么求梯度都爬不出来了。这就是函数可能只能够达到局部的最⼩值,⽽不是全局的最⼩值。

梯度与学习率

梯度
梯度下降的梯度是什么?函数在某⼀点的梯度是这样⼀个向量,它的⽅向与取得最⼤⽅向导数的⽅向⼀致,⽽它的模为⽅向导数的最⼤值。在存在多个变量的函
数中,梯度是⼀个向量,向量有⽅向,梯度的⽅向就指出了函数在给定点的上升最快的⽅向。这就意味着我们需要到达⼭底,那么在我们下⼭测量中,梯度就告诉我们下⼭的⽅向。梯度的⽅向是函数在给定点上升最快的⽅向,那么反⽅向就是函数在给定点下降最快的⽅向,所以我们只要沿着梯度的反⽅向⼀直⾛,就能⾛到局部的最低点!
由于神经⽹络模型中有众多的参数,也称为权重参数(weight parameter)所以我们常常需要处理的是多元复合函数,要想知道某⼀个权重参数对损失函数的影响,那么就要求它的偏导数。因此对于权重参数,我们是可以确定向量的⽅向的,就是求它的导数值就可以了
在这里插入图片描述

学习率

学习率看起来很陌⽣,但结合着下⼭问题来解释就很好理解了。⽐如说,我们说要找⼀个合适的测量频率,保证我们下⼭⼜快,测量次数⼜少。那么这个学习率就是影响我们测量频率的因素。可以将其理解为梯度下降过程中的步⻓。
在我们训练模型的时候,学习率是⾥⾯很重要的⼀个超参数
(Hyperparameters),它决定着我们的损失函数能否收敛到最⼩值,还有需要多⻓时间才能收敛到最⼩值。⼀个合适的学习率能够让我们的损失函数在合适的时间内收敛到局部最⼩值。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
如果学习率过⼤的时候,函数收敛过程如下图所⽰:
在这里插入图片描述

可以看出来,当学习率设定太⼩时,收敛过程将变得⼗分缓慢并且可能不收敛。反⽽学习率设置的过⼤时,梯度可能会在最⼩值附近来回震荡,甚⾄可能⽆法收敛。

梯度下降法的模拟与可视化

在这里插入图片描述
上图描述的是⼀个损失函数在函数不同参数取值的情况下(x轴),对应变化值(y轴)。
对于损失函数,应该有⼀个最⼩值。对于最⼩化损失函数这样⼀个⽬标,实际上就是在上图所⽰的坐标系中,寻找合适的参数,使得损失函数的取值最⼩。
我们⽤代码来绘制⼀张这样的图

import numpy as np
import matplotlib.pyplot as plt
plot_x =np.linspace(-1,6,150)
print(plot_x)
plot_y = (plot_x-2.5)**2 -1
plt.show()

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

学习率对梯度的影响

在这里插入图片描述
在这里插入图片描述
可以看到theta在下降过程中,每⼀步都在逐渐变⼩(逐渐逼近),直到满⾜⼩于epsilon的条件

学习率的最佳取值

在这里插入图片描述

梯度更新

在得到了逻辑回归的损失函数后,我们就可以使⽤梯度下降法来寻找损失函数极⼩值。直⽩的说,就是要求出, 当 0取什么值时, 损失函数可以到达极⼩值。
在这里插入图片描述
在这里插入图片描述

逻辑回归模型构建及训练流程

首先,我们先数据准备,参数初始化
Scikit-learn 是⽤ Python 开发的开源机器学习库,⼴泛⽤于数据挖掘和数据分析。
特点:易⽤、⾼效,具有丰富的⼯具,涵盖分类、回归、聚类等多种机器学习算法。
功能:提供数据预处理、模型选择、评估等功能,便于构建完整的机器学习⼯作流。
优势:有详细⽂档和⽰例,社区活跃,能降低开发成本、提⾼效率。
https://scikit-learn.org/stable/api/index.html

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
import numpy as np
#生成训练数据
X,y = make_classification(n_samples=150,n_features=10) #shape (150,10)
#数据拆分
#局部样本训练模型
#新样本数据模型表现不好
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3)

接着我们开始训练

#权重参数
theta = np.random.randn(1,10) #shape (1,10)
bias = 0
#超参数
lr = 0.01
epochs = 3000 #训练次数
#模型计算参数
def forward(theta,X_train):Z = np.dot(theta,X_train.T) + bias
#将预测值转化为概率y_hat= 1/(1 + np.exp(-Z))return y_hat
#损失函数
def loss(y,y_hat):return -y * np.log(y_hat + 1e-8) - (1-y) * np.log(1 - y_hat + 1e-8)
#计算梯度
def cal_gradient(y_hat,y,X):m = X.shape[-1]delta_theta = np.dot((y_hat - y),X)/mdelta_bias = np.mean(y_hat - y)/mreturn delta_theta, delta_bias
#模型训练
for i in range(epochs):#前向计算y_hat = forward(theta , X_train)#计算损失loss_value = loss(y_train,y_hat)#计算梯度delta_theta, delta_bias = cal_gradient(y_hat,y_train,X_train)#更新梯度theta = theta - lr * delta_thetabias = bias - lr * delta_biasif i % 100 == 0:# 计算准确率acc = np.mean(np.round(y_hat) == y_train)  # [False,True,...,False] -> [0,1,...,0]print(f"epoch: {i}, loss: {np.mean(loss_value)}, acc: {acc}")

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

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

相关文章

mybatisplus 开发流程

目录 什么是mybatisplus? 创建项目 先创建一个简单的Java项目​编辑 引入依赖 1.引入父依赖 2.引入其他依赖 springboot配置 application.yml qppication-dev.yml 创建包 实体类 映射(创建一个接口) 构建测试环境 进行方法的实…

使用 uniapp 开发标准体重计算小程序

引言 在现代生活中,健康管理越来越受到重视,而体重是衡量健康状况的重要指标之一。为了方便用户快速计算自己的标准体重并了解体重状态,我使用 uniapp 开发了一款简单的标准体重计算小程序。本文将详细介绍开发过程,并分享核心代…

如何使用SSH命令安全连接并转发端口到远程服务器

ssh -p 22546 rootconnect.westc.gpuhub.com d6IS/mQKq/iG ssh -CNgv -L 6006:127.0.0.1:6006 rootconnect.westc.gpuhub.com -p 22546 第一条命令:用于登录远程服务器,进行交互式操作。第二条命令:用于建立 SSH 隧道,进行端口转…

File文件和目录

一、文件和目录相关概念 计算机文件(File):以计算机硬盘为载体存储在计算机上的信息集合,可以是文本(.txt)、图片(.jpg、.png、.jpeg)、视频(.mp4)、程序(.exe)等,文件一般有拓展名,表示文件的类型。 文件…

Linux部署java项目

前言 Xshell下载地址 点击连接 常见命令 ls ls:显示当前目录下的文件 ll:可以显示隐藏文件和非隐藏文件与ls -l一样 ls -a -l这两个掌握就可以了 ls --help就可以知道这个后面可以跟什么 ls -al还可以这样 cd cd:进入文件夹 cd后面可以跟相对路径&#xff0…

如何使用 Python+Flask+win32print 实现简易网络打印服务1

Python 实现网络打印机:Flask win32print 在工作场景中,我们可能需要一个简单的网页接口,供他人上传文档并自动打印到指定打印机。 本文将演示如何使用 Python Flask win32print 库来实现这一需求。 代码详见:https://github.…

Java接口(3)与图书管理系统

抽象类与接口的区别 1.抽象类包含普通类和抽象方法,子类可以直接调用普通类方法不用重写。接口包含抽象方法和全局变量。 2.抽象类有各种权限,接口只有pubilc。 3.子类使用抽象类用extend,使用接口用implement。 4.一个抽象类可以实现若干…

基于Matlab的多目标粒子群优化

在复杂系统的设计、决策与优化问题中,常常需要同时兼顾多个相互冲突的目标,多目标粒子群优化(MOPSO)算法应运而生,作为群体智能优化算法家族中的重要成员,它为解决此类棘手难题提供了高效且富有创新性的解决…

Python 爬取唐诗宋词三百首

你可以使用 requests 和 BeautifulSoup 来爬取《唐诗三百首》和《宋词三百首》的数据。以下是一个基本的 Python 爬虫示例,它从 中华诗词网 或类似的网站获取数据并保存为 JSON 文件。 import requests from bs4 import BeautifulSoup import json import time# 爬取…

美股回测:历史高频分钟数据的分享下载与策略解析20250305

美股回测:历史高频分钟数据的分享下载与策略解析20250305 在金融分析和投资决策的精细化过程中,美股历史分钟高频数据发挥着至关重要的作用。这些数据以其详尽性和精确性,记录了股票每分钟的价格波动和成交量变化,为投资者提供了…

辛格迪客户案例 | 深圳善康医药科技GMP培训管理(TMS)项目

01 善康医药:创新药领域的探索者 深圳善康医药科技股份有限公司自2017年创立以来,便扎根于创新药研发领域,专注于成瘾治疗药物的研究、生产与销售。公司坐落于深圳,凭借自身独特的技术优势与研发实力,在行业内逐渐崭露…

【长安大学】苹果手机/平板自动连接认证CHD-WIFI脚本(快捷指令)

背景: 已经用这个脚本的记得设置Wifi时候,关闭“自动登录” 前几天实在忍受不了CHD-WIFI动不动就断开,一天要重新连接,点登陆好几次。试了下在网上搜有没有CHD-WIFI的自动连接WIFI自动认证脚本,那样我就可以解放双手&…

Vue+el-upload配置minIO实现大文件的切片并发上传、上传进度展示、失败重试功能

vue3el-upload实现切片上传 效果图 初始界面 上传中的界面 上传完成的界面 上传失败的界面 <template><div><el-uploadclass"BigFileUpload"ref"uploadRef"action"#"drag:show-file-list"false":on-change"…

Kubespray部署企业级高可用K8S指南

目录 前言1 K8S集群节点准备1.1 主机列表1.2 kubespray节点python3及pip3准备1.2.1. 更新系统1.2.2. 安装依赖1.2.3. 下载Python 3.12源码1.2.4. 解压源码包1.2.5. 编译和安装Python1.2.6. 验证安装1.2.7. 设置Python 3.12为默认版本&#xff08;可选&#xff09;1.2.8. 安装pi…

无人机端部署 AI 模型,实现实时数据处理和决策

在无人机端部署 AI 模型&#xff0c;实现实时数据处理和决策&#xff0c;是提升无人机智能化水平的关键技术之一。通过将 AI 模型部署到无人机上&#xff0c;可以实现实时目标检测、路径规划、避障等功能。以下是实现这一目标的详细方案和代码示例。 一、实现方案 1. 硬件选择…

审批流AntV框架蚂蚁数据可视化X6饼图(注释详尽)

大家好&#xff0c;这次使用的是AntV的蚂蚁数据可视化X6框架&#xff0c;类似于审批流的场景等&#xff0c;代码如下&#xff1a; X6框架参考网址&#xff1a;https://x6.antv.vision/zh/examples/showcase/practices#bpmn 可以进入该网址&#xff0c;直接复制下方代码进行调试…

用于管理 Elasticsearch Serverless 项目的 AI Agent

作者&#xff1a;来自 Elastic Fram Souza 由自然语言驱动的 AI 代理&#xff0c;可轻松管理 Elasticsearch Serverless 项目 - 支持项目创建、删除和状态检查。 这个小型命令行工具让你可以用简单的英语管理你的无服务器 Elasticsearch 项目。它通过AI&#xff08;这里是 Ope…

通过计费集成和警报监控 Elasticsearch Service 成本

作者&#xff1a;来自 Elastic Alexis Charveriat 使用 Elasticsearch 服务计费集成来跟踪、定制和提醒 Elasticsearch 服务费用。 监控和管理你的Elasticsearch服务&#xff08;ESS&#xff09;使用情况和成本对高效运营至关重要。 Elasticsearch服务计费集成提供了一种简化的…

【第12节】C++设计模式(结构型模式)-Proxy(代理)模式

一、问题背景 使用 Proxy 模式优化对象访问 在某些情况下&#xff0c;直接访问对象可能会导致性能问题或安全性问题。Proxy 模式&#xff08;代理模式&#xff09;通过引入一个代理对象来控制对原始对象的访问&#xff0c;从而解决这些问题。以下是几种典型的应用场景&#xf…

​DeepSeek:如何通过自然语言生成HTML文件与原型图?

在当今快节奏的开发与设计环境中&#xff0c;快速生成HTML文件或原型图是每个开发者与设计师的迫切需求。虽然DeepSeek无法直接生成图片&#xff0c;但它却能够通过自然语言生成流程图、原型图以及交互式页面&#xff0c;甚至可以直接输出HTML代码。本文将详细介绍如何与DeepSe…