6 逻辑斯蒂回归

news2024/9/21 0:49:38

文章目录

    • 回归问题和分类问题
    • 问题提出
    • 逻辑回归
      • 二分类问题
      • 逻辑函数
    • 与线性回归方程的不同
      • 模型变化
      • loss函数不同
      • BCEloss函数的介绍
    • 课程代码

课程来源: 链接
课程文本来源借鉴: 链接
以及(强烈推荐) Birandaの

回归问题和分类问题

有监督学习:

  1. 回归问题
  2. 分类问题
    二分类
    多分类

回归问题:如果我们预测的结果是以连续数字进行表示,即我们将在连续函数中对多个输入变量建立映射关系时,则这样的问题称之为回归问题。
分类问题:如果我们预测的结果是以离散形式表示的,即我们将多个输入变量与多个不同的类别建立映射关系时,则这样的问题称之为分类问题。

在这里插入图片描述

问题提出

在之前提到的耗时效益的问题,是回归问题,也就是输入和输出间又数值上的关系。

xy
12
24
36
4

但如果,将 y y y的值记为是否合格,此问题变变换成一个(二)分类问题。

xy
1fail(0)
2fail(0)
3pass(1)
4pass

实际上是计算在4工时下是否合格的概率,即对概率的计算与比较,而非类别之间的数值比较。

分类问题中,实际上是对概率的计算与比较,而非类别之间的数值比较.(也即离散问题时)

逻辑回归

二分类问题

二分类问题是非0即1的问题,由于隐藏条件的限制
P ( y ^ = 1 ) + P ( y ^ = 0 ) = 1 P(\widehat y=1)+P(\widehat y=0) = 1 P(y =1)+P(y =0)=1
对于二分类问题结果的预测,仅需要计算在0或1的条件下即可得到答案。
通常计算 P ( y ^ = 1 ) P(\widehat y=1) P(y =1)

逻辑函数

在原先的回归问题中,所利用的模型为
y ^ = ω x + b \widehat y = \omega x+b y =ωx+b
此时的 y ^ ∈ R \widehat y \in R y R,但当问题为分类问题时,所求结果的值域应当发生改变,变为一个概率即 y ^ ∈ [ 0 , 1 ] \widehat y \in [0,1] y [0,1]
因此,需要引入逻辑函数(sigmod)来实现。
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1+e^{-x}} σ(x)=1+ex1
本函数原名为logistics函数,属于sigmod类函数,由于其特性优异,代码中的sigmod函数就指的是本函数。其函数图像为

在这里插入图片描述

以及其他的sigmod函数:(但现在指向sigmod函数常指上面的那个函数)
在这里插入图片描述
sigmod函数的特点:

  1. 函数值在0到1之间变化明显(导数大)
  2. 在趋近于0和1处函数逐渐平滑(导数小)
  3. 函数为饱和函数
  4. 单调增函数

与线性回归方程的不同

模型变化

线性函数后加上了sigmod函数

在这里插入图片描述

loss函数不同

损失函数由线性回归的MSE到BCE LossFunction
在这里插入图片描述

BCEloss函数的介绍

原先是计算两个标量数值间的差距,也就是数轴上的距离。

现在为了计算两个概率之间的差异,需要利用到交叉熵的理论。

在这里插入图片描述
交叉熵具体理解

简单的理解上,我们仅仅需要了解这个结论:

如下图所示, y ^ \widehat y y y y y越接近,BCE Loss越小
在这里插入图片描述

课程代码

import torch.nn.functional as F
import torch

x_data = torch.Tensor([[1.0],[2.0],[3.0]])
y_data = torch.Tensor([[0.0],[0.0],[1.0]])

#改用LogisticRegressionModel 同样继承于Module
class LogisticRegressionModel(torch.nn.Module):
    def __init__(self):
        super(LogisticRegressionModel, self).__init__()
        self.linear = torch.nn.Linear(1,1)

    def forward(self, x):
        #对原先的linear结果进行sigmod激活
        y_pred = F.sigmoid(self.linear(x))
        return y_pred
model = LogisticRegressionModel()

#构造的criterion对象所接受的参数为(y',y) 改用BCE
criterion = torch.nn.BCELoss(size_average=False)
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

for epoch in range(1000):
    y_pred = model(x_data)
    loss = criterion(y_pred,y_data)
    print(epoch,loss)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

print('w = ', model.linear.weight.item())
print('b = ', model.linear.bias.item())

x_test = torch.Tensor([[4.0]])
y_test = model(x_test)

print('y_pred = ',y_test.data)

需要关注的是,此处的Tensor无法写成tensor,具体的区别:链接

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

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

相关文章

Docker安装Tomcat服务器

Docker安装Tomcat服务器查看tomcat镜像下载 tomcat镜像启动tomcat容器浏览器访问容器中的tomcat1 查看ip2 查看容器是否启动3 进入容器重启容器浏览器访问查看tomcat镜像 docker search tomcat下载 tomcat镜像 咱直接下载最近版本的tomcat镜像 docker pull tomcat查看一下本…

芯片验证系列——激励(stimulus)

对于芯片验证,主要的挑战在于:1.如何打出所有可能的激励灌给DUT;2.如何在各种可能得激励情况下,判断出不符合硬件描述的行为。本文单单聚焦于一些关于构造stimulus方面的想法吧,结合了红皮书, writing testbench和项目…

储殷黄日涵教授《丁香花》唐磊推荐杨语莲,意味拜师赵本山有望吗

熟悉娱乐圈的人都知道,这个圈子包含有很多潜规则,尤其是一些女艺人,想要有所成就,不是有才华就可以的。就拿音乐人杨语莲来说,她是一个非常有才华的歌手,然而就因为不接受潜规则,至今仍是歌红人…

设计模式:单例模式

1、单例模式 单例模式是指在整个系统生命周期内,保证一个类只能产生一个实例,确保该类的唯一性。 为什么需要单例模式 单例模式是为了保证程序的线程安全。 线程安全: 在拥有共享数据的多条线程并行执行的程序中,线程安全的代…

cuda和pytarch的安装-参考官网的安装-较为通用

文章目录cuda 安装PyTorch 1.x版本安装cuda 安装 官网:cuda各个版本安装教程 选择相应版本点击版本前方链接就可以进入安装教程页面 例如:我想要为ubuntu系统安装一个11.7版本的cuda,则选择11.7版本的连接,然后进入安装教程页面…

深度学习之优化算法

入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 目录 一、优化算法与深度学习 1、优化算法对于深度学习的意义 2、优化算法与深度学习的关系 3、优化算法在深度学习中的主要挑…

如何用Spring整合MyBatis和Junit

Spring整合MyBatis和Junit一. 整合MyBatis1. 目录:2. pom.xml:3. domain层:4. dao层:5. service层:AccountService接口类:AccountServiceImpl实现类:6. jdbc.properties配置文件:7. …

HBase基于HDFS上是如何完成增删改查功能的

HDFS只支持文件append操作, 而依赖HDFS的HBase如何完成增删改查功能? 1.如何理解? 1.这句话有个更专业的说法:HDFS 采用数据流方式来访问文件,只支持单个客户端向一个文件追加数据. 2 上半句话,访问文件不外乎读和写&#xff0…

SecureCRT for mac的坑

最新macOS升级到13(原来是11,一直没升),升级之后输入法和SecureCRT挂了。 记录一下SecureCRT,备忘 1、第一个坑居然是下载 网上找破解版,想找个新一点的版本,发现都是收费的 收费也就罢了&…

三、优惠卷秒杀

文章目录优惠卷秒杀1.redis实现分布式ID2.优惠券秒杀下单3.超卖问题4.lua脚本5.分布式锁6.redis stream消息队列实现异步秒杀7.redis消息队列list实现消息队列PubSub实现消息队列stream实现消息队列stream的消息队列-消费者组学习黑马点评项目整理总结:https://www.bilibili.co…

腾达Tenda路由器中继wifi步骤

前提: 你有一个信号比较弱,但能上网的wifi(暂时叫它1号wifi),并知道其密码你有一个有中继功能的路由器,比如Tenda某型号路由器,插上电,这个路由器的wifi暂时叫它2号wifi 长按下拉菜…

数据库面试题总结

文章目录一、索引相关(1)什么是索引?(2)索引是个什么样的数据结构呢?(3)为什么使用索引?(4)主键和索引的区别?(5)说一说索引的底层实现&#x…

educoder数据结构 排序 第2关:实现快速排序

本文已收录于专栏 🌲《educoder数据结构与算法》🌲 任务描述 本关要求通过补全快速排序私有函数QSort__来供函数QuickSort调用,以此来实现快速排序的功能。 相关知识 快速排序的基本过程是:从待排序记录中任选一个记录&#…

MS-Model【2】:nnFormer

文章目录前言1. Abstract & Introduction1.1. Abstract1.2. Introduction1.3. Related work2. Method2.1. Overview2.2. Encoder2.2.1. Components2.2.2. The embedding layer2.2.3. Local Volume-based Multi-head Self-attention (LV-MSA)2.2.4. The down-sampling layer…

【通信原理(含matlab程序)】实验五:二进制数字调制与解调

💥💥💞💞欢迎来到本博客❤️❤️💥💥 本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识,如果大家喜欢,别忘点个赞加个关注哦,让我们一起共同进步~ &#x…

Arduino的45种传感器测试(初级)

前言 说是Arduino的传感器,实际只要明白接口通信方式,其他开发板也可以使用。这一篇的测试是对一些开关和led等的测试,只使用了3.3v / 5v电源和万用表就可完成。 震动开关 实物图和原理图如下 原理:中心有一个金属线的空心黑…

Java多线程-Thread的Object类介绍【wait】【notify】【sleep】

Thread和Object类详解 方法概览 Thread wait、notify、notifyAll方法详解 作用 阻塞阶段 使用了wait方法之后,线程就会进入阻塞阶段,只有发生以下四种情况中的其中一个,线程才会被唤醒 另一个线程调用了这个线程的notify方法&#xff0…

Python数据可视化之直方图和密度图

Python数据可视化之直方图和密度图 提示:前言 Python数据可视化之直方图和密度图 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录Python数据可视化之直方图和密度图前言一、导入包二、选择数据集三、直…

k8s之平滑升级

写在前面 通过POD 应用就有了存在的形式,通过deployment 保证了POD在一定的数量,通过service 可以实现一定数量的POD以负载均衡的方式对外提供服务。但,如果是程序开发了新功能,需要上线,该怎么办呢?对此k…

jvm相关,jvm内存模型,java程序运行流程及jvm各个分区的作用、对象的组成(针对hotspot虚拟机)--学习笔记

java程序运行时的运行模型 在jdk1.8之前的元空间,称为永久代并将元空间挪到了堆直接使用本地内存,不再占用堆空间 jvm内存结构划分 堆(方法区)和元空间是线程共有的,其他部分是线程私有的 每创建一个线程都会创建一个…