Lecture6 逻辑斯蒂回归(Logistic Regression)

article/2025/10/14 0:22:01

目录

1 常用数据集

1.1 MNIST数据集

1.2 CIFAR-10数据集

2 课堂内容

2.1 回归任务和分类任务的区别

2.2 为什么使用逻辑斯蒂回归

2.3 什么是逻辑斯蒂回归

2.4 Sigmoid函数和饱和函数的概念

2.5 逻辑斯蒂回归模型

2.6 逻辑斯蒂回归损失函数

2.6.1 二分类损失函数

2.6.2 小批量二分类损失函数

3 代码实现


1 常用数据集

1.1 MNIST数据集

MNIST是一个手写数字图像数据集,主要用于训练和测试机器学习模型。它由60,000个训练图像和10,000个测试图像组成,每个图像都是28x28像素的灰度图像,表示一个手写数字。MNIST数据集已成为许多机器学习算法的基准数据集之一,尤其是用于图像分类任务和数字识别任务。

图1 MNIST数据集

下载方式

import torchvision
train_set = torchvision.datasets.MNIST(root='../dataset/mnist', train=True,  download=True)
test_set  = torchvision.datasets.MNIST(root='../dataset/mnist', train=False, download=True)

这段代码中,包括两个参数:root和train,download为可选参数。root指定数据集下载的根目录,train指定要加载的数据集类型,train=True表示加载训练集,train=False表示加载测试集。download=True表示如果本地不存在则进行该数据集的下载,最后将训练集和测试集分别保存在train_set和test_set两个变量中。

1.2 CIFAR-10数据集

图2 CIFAR-10数据集

 CIFAR-10是一个常用的图像分类数据集,由10个不同类别的60000个32x32彩色图像组成。这些类别包括:飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船和卡车。数据集被分为训练集和测试集,其中训练集包含50000个图像,测试集包含10000个图像。CIFAR-10数据集被广泛用于计算机视觉和深度学习研究领域,特别是用于图像分类算法的开发和测试。

import torchvision
train_set = torchvision.datasets.CIFAR10(…)
test_set  = torchvision.datasets.CIFAR10(…)

2 课堂内容

2.1 回归任务和分类任务的区别

  回归任务和分类任务是机器学习中两个重要的任务类型,其主要区别在于预测目标的不同。分类任务的目标是将输入数据分到预定义的类别中。例如,手写数字分类任务中,目标是将手写数字图像分到0-9十个数字中的一个类别中。回归任务的目标是预测连续的数值。例如,房价预测任务中,目标是预测房屋的售价,这是一个连续的数值。

  因此,回归任务和分类任务的主要区别在于预测目标的类型:分类任务的目标是预测一个离散的类别,而回归任务的目标是预测一个连续的数值。

2.2 为什么使用逻辑斯蒂回归

  对于分类问题,由于值是离散的,所以用逻辑斯蒂回归(logistic regression)。二分类问题中,我们需要求得结果 是 输入数据 所属的类别。例如下图,结果要么通过要么不通过,属于典型的二分类(binary classification)问题。

图3 二分类问题

  二分类问题是机器学习中最常见的问题之一,应用广泛,例如判断一封邮件是否是垃圾邮件、判断一个人是否患有某种疾病等。

2.3 什么是逻辑斯蒂回归

  在二分类问题中,我们衡量输入的数据运算过后的所属类别的方法,一般是通过概率来表示,我们得到对应类别的概率值,哪个概率值大,就认为它是属于哪个类别。

  Logistic回归是一种用于二分类问题的线性分类模型。它的基本思想是,将输入特征和对应的类别之间的关系建模为一个线性函数,并通过Sigmoid函数将其映射到[0,1]的区间上,以得到对应于正例的概率,所以可以说sigmoid函数的作用是使数据映射到[0,1]区间上。

2.4 Sigmoid函数和饱和函数的概念

  在数学中,饱和函数(Saturated Function)是一类函数,当输入值接近正或负无穷时,函数的输出值趋向于一个有限的上下限。饱和函数通常用于神经网络的激活函数,例如Sigmoid函数

  当输入值x的绝对值很大时,Sigmoid函数的输出值会趋近于0或1,因此称为“饱和函数”。

图4 Sigmoid函数

图5 Sigmoid函数图像

  Sigmoid 函数在输入为负无穷时,输出为 0,在输入为正无穷时,输出为 1,因此可以将预测结果解释为概率值,并进行阈值分类。

  在神经网络中,饱和函数作为激活函数具有平滑、可导的性质,并能够将输出值限制在一定范围内,使神经网络的训练更加稳定。但是,由于饱和函数在梯度计算时可能会出现梯度消失的问题,因此在深度神经网络中,更常使用一些非饱和函数作为激活函数,例如ReLU函数。

常见的Sigmoid函数还有:

图6 常见的Sigmoid函数

2.5 逻辑斯蒂回归模型

添加完logistic函数后的模型相较于普通的线性回归模型的变化:

图7 线性回归与逻辑斯蒂回归的模型区别

2.6 逻辑斯蒂回归损失函数

2.6.1 二分类交叉熵损失函数

  二分类交叉熵损失函数(Binary Cross Entropy, BCE)较线性回归的损失函数也发生了些许变化,主要是引入了交叉熵(Cross Entropy)这个概念。交叉熵是在给定一组真实标签和一组预测标签的情况下,衡量这两组标签之间的差异的一种方法。

  二分类交叉熵是指特定于二元分类任务而设计的交叉熵损失函数。对于二元分类问题,二分类交叉熵损失函数可以表示为:

图8 二分类损失函数

  其中,y表示样本的真实标签(0或1),\hat{y}表示样本的预测标签(取值范围为[0, 1])。

  交叉熵损失函数的基本思想是:将真实标签和预测标签的概率分布进行比较,计算它们之间的差距,用来衡量预测标签和真实标签之间的相似度。当预测标签与真实标签越相似时,损失函数的值越小,反之,损失函数的值越大。

  对于二分类问题而言,交叉熵损失函数可以解释为:如果样本的真实标签为1,那么我们希望模型预测标签\hat{y}的值越接近1越好;如果样本的真实标签为0,那么我们希望模型预测标签\hat{y}的值越接近0越好。因此,交叉熵损失函数可以作为衡量二分类模型预测效果的重要指标。

BCE和MSE的区别?

  BCE主要应用于二元分类问题,它的损失函数形式简单,可以直接衡量模型对于每个样本预测出的概率值和真实标签之间的差距。而 MSE 更适合用于回归问题,它可以衡量模型对于每个样本预测出的数值和真实值之间的差距。 

2.6.2 小批量二分类损失函数

  在实际应用中,我们通常需要对大规模数据集进行训练。如果使用全量数据计算梯度,会占用过多的内存和计算资源,从而导致训练速度缓慢或者无法完成训练。而使用小批量的BCELoss,可以将数据集分批次读入内存,逐个小批量地计算损失函数,进而计算梯度,从而加快训练速度,同时还能够有效降低内存使用和计算复杂度。

图9 小批量二分类损失函数

图10 小批量二分类损失函数的应用

  如果模型的预测值越接近真实值,交叉熵的损失就越小。因此,通过最小化交叉熵损失,我们可以训练一个能够准确分类数据的模型。

3 代码实现

1、这段代码定义了一个 logistic 回归模型类 LogisticRegressionModel,继承了 Module 类。该模型使用单个线性层(Linear)来预测输入 x 的输出。

class LogisticRegressionModel(torch.nn.Module):def __init__(self):super(LogisticRegressionModel, self).__init__()self.linear = torch.nn.Linear(1, 1)def forward(self, x):y_pred = F.sigmoid(self.linear(x)) # sigmoid 函数将输入值压缩到 [0,1] 的区间内,可以将线性层的输出转换为概率值,用于二分类问题的预测。return y_pred

2、定义一个二分类交叉熵损失函数对象,并将其赋值给变量criterion:

criterion = torch.nn.BCELoss (size_average=False)

在PyTorch中,torch.nn.BCELoss是二分类交叉熵损失函数的实现,它用于度量模型输出与真实标签之间的差异,其返回值即为模型的损失值。size_average参数表示是否对每个batch的损失值求平均,默认为True,如果设为False,则不求平均,返回的是每个batch的总和。因为我们一般在训练神经网络时,采用小批量梯度下降法,因此需要对每个小批量的损失值求平均。

输出图像

import numpy as np
import matplotlib.pyplot as plt'''这里使用NumPy的linspace函数在0到10之间生成了200个等间距的数字,
并将其转换为PyTorch张量,方便后续计算。'''
x = np.linspace(0, 10, 200)
x_t = torch.Tensor(x).view((200, 1))y_t = model(x_t)'''这里使用PyTorch张量的data属性将其转换为NumPy数组,
并使用matplotlib库的plot函数绘制出曲线。'''
y = y_t.data.numpy()
plt.plot(x, y)plt.plot([0, 10], [0.5, 0.5], c='r') # 这里绘制了红色的水平分界线,表示y值为0.5时的x轴取值范围
plt.xlabel('Hours')
plt.ylabel('Probability of Pass')
plt.grid()
plt.show()

完整代码

x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[0], [0], [1]])
#-------------------------------------------------------#
class LogisticRegressionModel(torch.nn.Module):
def __init__(self):
super(LogisticRegressionModel, self).__init__()
self.linear = torch.nn.Linear(1, 1)
def forward(self, x):
y_pred = F.sigmoid(self.linear(x))
return y_pred
model = LogisticRegressionModel()
#-------------------------------------------------------#
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.item())
optimizer.zero_grad()
loss.backward()
optimizer.step()

使用逻辑斯蒂回归处理二分类问题的整个过程:

图11 流程图

官方文档链接:https://pytorch.org/docs/stable/nn.html?highlight=bceloss#torch.nn.BCELoss


http://chatgpt.dhexx.cn/article/SxIWHZDd.shtml

相关文章

机器学习之逻辑斯蒂回归

目录 一、分类与回归 二、逻辑回归不是回归 三、生成式逻辑回归 四、判别式逻辑回归 五、逻辑回归为什么不用均方误差做损失函数 六、判别模型与生成模型的比较 七、写在最后 一、分类与回归 回归与分类是机器学习的基本问题。回归是预测连续值,分类是预测…

逻辑斯蒂回归算法

目录 逻辑斯蒂分布 二元逻辑斯蒂回归模型 二元逻辑斯蒂回归的损失函数及优化方法 二元逻辑斯蒂回归的正则化 多元逻辑斯蒂回归 逻辑斯蒂回归小结 LR的优点 LR的缺点 LR将连续特征离散化的原因 逻辑回归和线性回归的区别和联系 LR和SVM的关系 scikit-learn 逻辑回归…

逻辑斯蒂回归以及它的梯度下降法

文章目录 前言逻辑斯蒂分布 模型二项逻辑斯蒂回归模型多项逻辑斯蒂回归模型 策略算法如何求对数似然函数的最大值梯度下降法算法思想推导公式 注意 前言 预测任务分为: 回归问题:输入、输出变量为连续变量。分类问题:输出变量为有限个离散变…

逻辑斯蒂回归分类算法

逻辑斯蒂回归分类算法 首先来看一个线性回归来进行分类的问题: 怎样判断肿瘤是否恶性? 很明显线性回归用于分类问题无法处理边界点的位置。 同时,线性回归健壮性不够,一旦有噪声,立刻“投降” 使用逻辑斯蒂回归 ——…

逻辑斯蒂回归(二分类算法)理论+Python代码实现

逻辑斯蒂回归(二分类算法)理论Python代码实现 文章目录 逻辑斯蒂回归(二分类算法)理论Python代码实现一、理论基础(一) 基于 Logistic 回归和 Sigmoid 函数的分类(二) 模型训练与代价…

逻辑斯蒂回归 逻辑回归_逻辑回归简介

逻辑斯蒂回归 逻辑回归 Logistic regression is a classification algorithm, which is pretty popular in some communities especially in the field of biostatistics, bioinformatics and credit scoring. It’s used to assign observations a discrete set of classes(ta…

Logistic Regression 逻辑斯蒂回归

文章目录 5、Logistic Regression 逻辑斯蒂回归5.1 回归任务5.1.1 MNIST Dataset5.1.2 CIFAR-10 Dataset 5.2 Regression vs Classification 回归 vs 分类5.3 Sigmoid functions5.3.1 Logistic Function [0, 1]5.3.2 Other Functions [-1, 1] 5.4 Model 模型5.5.1 torch.sigmoi…

机器学习-逻辑斯蒂回归(Logistic Regression)

注:内容转自https://github.com/NLP-LOVE/ML-NLP/tree/master/Machine%20Learning,略有修改。 目录 逻辑 1. 什么是逻辑斯蒂回归 2. 什么是Sigmoid函数 3. 损失函数是什么 4.可以进行多分类吗? 5.逻辑斯蒂回归有什么优缺点 6. 逻辑斯…

逻辑斯蒂回归

一:二元逻辑回归模型 二项逻辑斯蒂回归模型是如下的条件概率分布: 其中,Y为输出,w称为权值向量,b称为偏置。逻辑斯蒂回归比较两个条件概率值的大小,将实例x分到概率值较大的那一类。 一个事件的几率是指该…

【笔记】逻辑斯蒂回归

一、逻辑斯蒂回归概述 (1)逻辑斯蒂回归的目的:分类。 逻辑斯蒂回归常常解决分类问题,特别是二分类问题。 (2)逻辑斯蒂回归的过程:回归。 计算结果是0~1之间的连续值,代表发生的可…

逻辑斯蒂回归java_逻辑斯蒂回归模型

http://blog.csdn.net/hechenghai/article/details/46817031 主要参照统计学习方法、机器学习实战来学习。下文作为参考。 第一节中说了,logistic 回归和线性回归的区别是:线性回归是根据样本X各个维度的Xi的线性叠加(线性叠加的权重系数wi就是模型的参数…

逻辑斯蒂回归算法详解

逻辑斯蒂回归算法可用于分类问题,其本质是在线性回归的算法上用sigmoid函数进行模型变换,使得目标值介于0-1之间。本文用于对逻辑斯蒂回归算法(Logistics Regression)进行详细讲述。 逻辑斯蒂回归基本假设 我们知道线性回归的基…

【机器学习实验五】逻辑斯蒂回归

目录 一、逻辑斯蒂回归基本概念 1.1、基本概念 1.2、特点 1.3、Logistic分布 1.4、逻辑斯蒂回归模型 二、利用逻辑斯蒂模型进行分类测试 2.1、数据准备 2.2、编写代码查看数据集的分布情况 2.3、训练分类算法 2.4、绘制决策边界 三、从疝气病症状预测病马的死亡率 …

Logistic regression(逻辑斯蒂)回归分析

Logistic regression (逻辑回归)是当前业界比较常用的机器学习方法,用于估计某种事物的可能性。比如某用户购买某商品的可能性,某病人患有某种疾病的可能性,以及某广告被用户点击的可能性等。(注意这里是&a…

逻辑斯谛回归(Logistic回归)最详解

Logistic回归学习思路 一.逻辑回归模型的原理与定义(主要思想) 逻辑斯谛回归是经典的分类方法,它属于对数线性模型,原理是根据现有的数据对分类边界线建立回归公式,以此进行分类。(主要思想) …

常用服务器型号整理

转载于:https://www.cnblogs.com/quzq/p/11285548.html

查看linux cpu 内存 服务器型号 序列号 磁盘 raid信息

安装dmidecode:yum -y install dmidecode 查看cpu的型号: 查看cpu的颗数: dmidecode -t processor |grep "Version" dmidecode -t processor |grep "Socket" 查看内存最大容量: 查看内存插槽数量: 查看内存大…

浪潮官网服务器型号,浪潮服务器有哪些型号,哪位了解?

NF8520系列市场价格:¥152000-175000 浪潮英信NF8520采用全新QPI架构高速互联技术的四路服务器,支持最新英特尔至强处理器E7系列,成四个具备IOAT2VMDQ技术的高性能千兆网卡,在全面提升网络IO能力的同时,对虚…

服务器内存怎么看型号,怎么查看服务器内存的型号

怎么查看服务器内存的型号 内容精选 换一换 设备实时状态查询是检测设备在运行过程中的状态信息。用户可任选以下指令之一查看设备实时状态查询命令的可用参数。ascend-dmi -i -hascend-dmi -i --help各参数解释如表1所示。以查看芯片的详细信息为例。ascend-dmi -i -dt若推理服…

阿里云服务器型号大全及机型如何选择(建议收藏)

不同的阿里云实例规格可以提供的计算能力不同,适用于不同的业务场景和使用场景。 1、根据使用场景来选择 下图显示了阿里云ECS的部分通用计算和异构计算实例规格族及其对应的业务场景 简单来看,g6e和g6型能够满足一般的通用需求,对于比如金…