五、Logistic回归

目录

线性回归

定义:

关键:

基本公式:y = w'x + e

逻辑回归

定义

关键点

基本公式:y=σ(f(x))=σ(w^Tx)

模型

代码演示

用Pytorch实现Logistic回归

数据准备

线性方程

特点

损失函数

特点

主要目的

关键作用

回归&分类

线性回归

定义:

线性回归是一种常用的统计方法,用于分析两个或多个变量之间的关系。线性回归的主要目的是建立一个线性方程,通过这个方程可以描述自变量(independent variables)和因变量(dependent variable)之间的线性关系。线性回归是一个强大的工具,它不仅易于理解和实现,而且在许多实际问题中都非常有效。然而,它也有局限性,比如当数据不满足线性假设时,可能需要采用更复杂的非线性模型来进行分析。

关键:

  1. 基本原理:线性回归假设因变量Y与一个或多个自变量X之间存在线性关系,即可以通过一条直线(或者在高维空间中是一个超平面)来描述它们之间的关系。
  2. 模型形式:线性回归模型通常表示为 Y = wx + b,其中Y是因变量,x是自变量,w是权重系数,b是偏置项。在多元线性回归中,有多个自变量,模型会相应地包含多个权重系数。
  3. 损失函数:线性回归模型通过最小化损失函数来估计模型参数,最常用的损失函数是均方误差(Mean Squared Error, MSE),即实际值与预测值之差的平方和的平均值。
  4. 参数估计:模型参数通常通过最小二乘法来估计,这是一种数学优化技术,旨在找到最佳拟合数据的直线。
  5. 模型评估:线性回归模型的性能可以通过计算确定系数(R-squared)来评估,它表示模型解释的数据变异性的比例。
  6. 适用范围:线性回归适用于数据呈现线性关系的情况。在应用线性回归之前,需要对数据进行适当的处理,比如检查数据的线性性、处理异常值和缺失值等。
  7. 假设条件:使用线性回归时,需要满足一些基本假设,例如误差项应该服从正态分布,且误差项之间相互独立并具有相同的方差(称为同方差性)。
  8. 应用领域:线性回归广泛应用于金融、经济学、社会科学、医学研究等领域,用于预测分析、时间序列建模、因果关系研究等多种场景。

基本公式:y = w'x + e

其中,y 是因变量,x 是自变量向量,w 是自变量向量的系数向量,e 是误差项,通常假设服从均值为0的正态分布。
如果模型只包含一个自变量,则称为一元线性回归;如果包含两个或多个自变量,则称为多元线性回归。
在多元线性回归中,线性回归模型的参数可以通过最小二乘法来估计。参数估计的公式可以表示为:

b = (x1y1 + x2y2 + ... + xnyn - nXY) / (x1^2 + x2^2 + ... + xn^2 - nX^2)

其中,b 是斜率参数,x 和 y 分别是自变量和因变量的样本均值,X 和 Y 分别是自变量和因变量的总和,n 是样本量。
另一种表示方式,使用向量和矩阵的表示法,可以写为:

h(w) = w1x1 + w2x2 + ... + wnxn + b = W'X + b

其中,W 是特征权重向量,X 是特征值矩阵,b 是偏置项。在矩阵表示法中,通常将偏置项 b 视为 w0x0。

逻辑回归

定义

逻辑回归(Logistic Regression)是一种用于解决二分类问题的机器学习方法,它虽然在名称中含有“回归”二字,但实际上是一种分类模型。

逻辑回归的核心在于使用逻辑函数(或称为sigmoid函数)将线性回归的输出映射到(0,1)区间内,从而可以用来预测某个事件发生的概率。这种模型特别适用于那些结果可以明确分为两类的情况,例如判断邮件是否为垃圾邮件、诊断病人是否患有某种疾病、预测用户是否会点击广告等场景。

逻辑回归是一个强大的分类工具,尤其在数据科学和机器学习领域,由于其简单性和有效性,它成为了入门级的必学模型。在实际应用中,逻辑回归模型通常需要经过适当的特征工程和超参数调整,以达到最佳的分类效果。

关键点

  1. 线性回归函数:线性回归函数是逻辑回归的基础,其数学表达式通常表示为一组特征的线性组合。
  2. 逻辑函数:逻辑函数是一个S形的曲线,能够将任何实数值映射到(0,1)区间内,这使得它非常适合于表示概率。
  3. 极大似然估计:逻辑回归模型的参数通常通过极大似然估计来确定,即找到一组参数使得观测数据出现的概率最大。
  4. 损失函数:为了求解模型参数,需要构造一个损失函数(如交叉熵损失函数),并通过优化方法(如梯度下降法)来最小化这个损失函数。
  5. 适用性:逻辑回归不仅可以用于二分类问题,还可以通过一定的技术扩展应用到多分类问题中。
  6. 可解释性:逻辑回归模型的输出可以被解释为分类的概率,这使得模型具有较强的可解释性。
  7. 简单性和效率:逻辑回归模型结构简单,计算效率高,容易实现并行化处理,因此在工业界得到广泛应用。

基本公式:y=σ(f(x))=σ(w^Tx)

其中y是logistic函数(Sigmoid函数)的输出,范围在0到1之间,表示概率;x是特征向量;w是模型的参数,即权值向量;b是偏置项。

线性回归模型的输出是一个数值,而不是一个概率值,而逻辑回归模型旨在预测一个概率值,即将线性回归模型的输出通过Sigmoid函数转换到(0,1)之间,Sigmoid函数的表达式为σ(x)=1/(1+e^-x),这个函数将输出映射到(0,1)区间,使得输出值接近0表示类别1的概率,接近1表示类别0的概率,当z=0时,Sigmoid函数输出为0.5,这是决策的边界,逻辑回归模型常用于二分类问题。

模型

代码演示

# 导入torchvision库
import torchvision
# 导入torch库
import torch
# 导入torch.nn.functional模块,用于激活函数等操作
import torch.nn.functional as F
# 导入numpy库  `

import numpy as np
# 导入matplotlib.pyplot库,用于绘图
import matplotlib.pyplot as plt
# 准备数据集
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))  # 使用sigmoid函数进行激活
        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()

# 测试并绘制图像
x = np.linspace(0, 10, 200)
x_t = torch.Tensor(x).view((200, 1))  # 将数据转换为tensor,并调整形状为200行1列
y_t = model(x_t)
y = y_t.data.numpy()  # 将tensor转换为numpy数组
plt.plot(x, y)
plt.plot([0, 10], [0.5, 0.5], c='r')  # 在概率为0.5处画一条红色直线
plt.xlabel('Hours')
plt.ylabel('Probability of Pass')
plt.grid()
plt.show()

 

用Pytorch实现Logistic回归

数据准备

代码演示

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset

# 假设我们有以下数据
X = torch.tensor([[1.0], [2.0], [3.0], [4.0]])
y = torch.tensor([[0.0], [0.0], [1.0], [1.0]])

# 将数据转换为TensorDataset对象
dataset = TensorDataset(X, y)

# 创建DataLoader对象,用于批量加载数据
batch_size = 2
dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True)

# 定义Logistic回归模型
class LogisticRegression(nn.Module):
    def __init__(self, input_size):
        super(LogisticRegression, self).__init__()
        self.linear = nn.Linear(input_size, 1)

    def forward(self, x):
        return torch.sigmoid(self.linear(x))

# 初始化模型、损失函数和优化器
input_size = 1
model = LogisticRegression(input_size)
criterion = nn.BCELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 训练模型
num_epochs = 100
for epoch in range(num_epochs):
    for inputs, targets in dataloader:
        # 前向传播
        outputs = model(inputs)
        loss = criterion(outputs, targets)

        # 反向传播和优化
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

    # 打印损失信息
    print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')

线性方程

线性方程是数学中的一个基础概念,它描述的是未知数都是一次的方程。其一般形式可以表示为 ( ax + by + \dots + cz + d = 0 ),其中 ( a, b, c ) 等是系数,( x, y, z ) 等是变量,而 ( d ) 是常数项。

特点

  1. 一次关系:线性方程中的每个未知数都是一次方的,即变量之间存在一次的关系。
  2. 图形表示:在笛卡尔坐标系中,任何一个一次方程的图形表示都是一条直线。
  3. 解的性质:线性方程的解具有叠加性,即如果 ( x_1 ) 和 ( x_2 ) 是方程的两个解,则它们的任意线性组合 ( \alpha x_1 + \beta x_2 )(其中 ( \alpha ) 和 ( \beta ) 是任意常数)也是该方程的解。
  4. 应用广泛:线性方程组在多个领域都有应用,如物理学、工程学、经济学等,它们用于建模和解决实际问题。

损失函数

损失函数是用来衡量模型预测值与真实值之间差异的函数,它是机器学习中优化过程的核心部分。

损失函数在机器学习和深度学习中扮演着至关重要的角色。它的主要目的是量化模型预测结果与实际数据之间的误差,从而提供一种方式来调整模型参数,使得模型的预测更加准确损失函数的选择和优化是模型训练过程中的关键步骤,它直接影响到模型的学习效果和泛化能力。通过不断优化损失函数,可以使模型更好地拟合数据,从而提高预测的准确性和可靠性。

特点

  1. 均方差损失(Mean Squared Loss):适用于回归问题,通过计算预测值与真实值差的平方来衡量误差。
  2. 平均绝对误差损失(Mean Absolute Error Loss):同样用于回归问题,通过计算预测值与真实值差的绝对值来衡量误差。
  3. Huber Loss:结合了均方差损失和平均绝对误差损失的优点,对于异常值具有较好的鲁棒性。
  4. 分位数损失(Quantile Loss):适用于需要预测不同分位数的问题。
  5. 交叉熵损失函数(Cross Entropy Loss):主要用于分类问题,尤其是当类别之间概率分布重要时。
  6. Hinge损失(Hinge Loss):常用于支持向量机(SVM)中,它可以处理分类问题中的大间隔分类问题。

主要目的

量化模型预测与实际数据之间的差异,并作为优化模型的指导指标。

关键作用

  1. 量化预测误差:损失函数将模型的预测结果与实际数据的差异转化为具体的数值,这使得误差可以被计算和比较。
  2. 优化模型参数:通过最小化损失函数,模型可以调整其参数,以便在未来的预测中减少误差,从而提高模型的预测性能。
  3. 评估模型性能:损失函数的值可以用来评估模型的整体性能,一个较小的损失值通常意味着模型具有较好的泛化能力。
  4. 风险函数的组成部分:在某些模型中,损失函数是结构风险函数的一部分,它与正则化项相结合,以控制模型的复杂性和防止过拟合。

回归&分类

  1. 在之前的回归任务中,我们是预测分值是多少;
  2. 分类任务中就可以变成根据学习时间判断是否能通过考试,即结果分为两类:failpass
  3. 我们的任务就是计算不同学习时间x分别是failpass的概率。(二分类问题其实只需要计算一个概率;另一个概况就是1-算的概率)
  4. 如果预测pass概率为0.6fail概率就是0.4,那么判断为pass

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值