Logistic回归

线性回归:研究自变量和因变量之间的线性关系。当只有一个自变量时,称为简单线性回归;有多个自变量时,称为多元线性回归。

线性回归简介

线性回归是一种用于确定变量间相互依赖关系的统计分析方法。它基于数理统计中的回归分析原理,通过构建一个或多个自变量与因变量之间的线性关系模型,来预测或估计因变量的值。以下是对线性回归的详细介绍:

1.基本含义:线性回归的核心是建立一个线性方程,通常形式为 ( y = w'x + e ),其中 ( y ) 是因变量,( x ) 是自变量(可以是多个),( w ) 是权重系数,( e ) 是误差项,假设服从均值为0的正态分布。

线性回归是用于预测连续值,做预测;而逻辑回归是预测离散值,即是用来分类的。

2.拟合方程:在拟合线性回归模型时,常用的方法是最小二乘法,该方法旨在找到最佳的回归系数,使得预测值与实际值之间的残差平方和最小

3.误差分析:线性回归模型中,误差项代表了模型预测值与实际值之间的差异,理想情况下,这些误差应该是随机的,并且服从正态分布。

4.适用条件:使用线性回归前,需要满足一定的条件,如变量间的线性关系、误差的正态性等。如果数据不满足这些条件,可能需要考虑其他类型的回归分析或数据转换。

plt.plot() 是Matplotlib库中用于==绘制线图(折线图)==的主要函数之一。它的作用是将一组数据点连接起来,以可视化数据的趋势、关系或模式。以下是一些常用的参数和用法:

Logistic回归简介

Logistic回归是一种用于解决二分类问题的统计方法。

它通过使用logit函数(也称为逻辑函数或sigmoid函数)将线性回归的输出映射到一个介于0和1之间的概率值,这使得它非常适合于估计某个事件发生的概率。以下是关于Logistic回归的详细介绍:

  • 原理与应用:Logistic回归基于Logistic分布,通过计算条件概率来进行类别预测。在二分类问题中,模型会输出一个概率值,通常选择概率大的一方作为预测结果。这种模型在多个领域都有广泛应用,如数据挖掘、疾病诊断和经济预测等。
  • 模型形式:Logistic回归模型以参数估计、优化算法和分类规则为基础。模型参数通常采用极大似然估计来估计,而优化过程由于无法直接求得解析解,因此常用梯度上升法等数值优化方法来最大化似然函数。
  • 性能与优势:Logistic回归作为一种线性模型,其预测时的计算简单快速,特别适用于要求高速预测的大规模分类问题,例如广告点击率预估(CTR)。同时,它的输出是概率,这为解释模型提供了直观的意义。
  • 实现细节:在实际应用中,Logistic回归可以通过扩充权值向量和偏置向量以及利用sigmoid函数来计算概率,进而进行分类决策。

在线性回归中,我们假设随机变量𝑥1, ⋯ , 𝑥𝑛与𝑦之间的关系是线性的。但在实际中,我 们通常会遇到非线性关系。这个时候,我们可以使用一个非线性变换𝑔(⋅),使得线性 回归模型𝑓(⋅)实际上对𝑔(𝑦)而非𝑦进行拟合,即: 𝑦 = 𝑔 −1 𝑓 𝒙 • 其中𝑓(⋅)仍为: f 𝒙 = 𝒘⊤𝒙 + 𝑏 • 因此这样的回归模型称为广义线性回归模型。广义线性回归模型使用非常广泛。例如在二元分类任务中,我们的目标是拟合这样一 个分离超平面𝑓(𝒙) = 𝒘⊤𝒙 + 𝑏,使得目标分类𝑦可表示为以下阶跃函数: 𝑦 = ቊ 0, 𝑓(𝒙) < 0 1, 𝑓(𝒙) > 0 • 但是在分类问题中,由于𝑦取离散值,这个阶跃判别函数是不可导的。不可导的性质 使得许多数学方法不能使用。我们考虑使用一个函数 𝜎(⋅) 来近似这个离散的阶跃函数, 通常可以使用logistic函数。

损失函数:机器学习和深度学习中用于衡量模型预测值与真实值之间差异的指标。

• MSE loss:计算数值之间的差异

• BCE loss:计算分布之间的差异

梯度下降算法和随机梯度下降算法

如何才能找到使得cost最小的参数w 呢?是该往哪个方向走呢?

这就需要去计算每个点的梯度,梯度即微分(导数) • >0:函数上升,损失值在增大,w应该减小(梯度的反方向运动); • <0:函数在下降,损失值在减小(目标方向),w应该增大(梯度的反方向运动)。 • 所以参数w的更新方向应该是梯度的负方向!注意:梯度下降算法是一种贪心算法,得到的解不一定是全局最优。所以我们可以通过多次运行,随机化初始点来解决问题,梯度下降法的初始点也是一个超参数。

梯度下降算法:用所有样本的平均损失值cost来更新参数;

随机梯度下降算法:随机选取N个样本中的一个样本的loss来更新参数! 随机梯度下降算法能够更好的解决鞍点问题,因为是随机选取一个样本的 loss,可能会跨过鞍点继续更新。(鞍点即梯度为0的点,会导致梯度无法继续更新)这是一个用了梯度下降算法的代码及运行结果:

import matplotlib.pyplot as plt

x_data = [1.0, 2.0, 3.0]
y_data = [4.5, 7.5, 10.5]

# 初始化参数
w = 10
b = 0
def forward(x):
    return x * w + b
def loss(x, y):
    y_pred = forward(x)
    return (y_pred - y)**2
def gradient(x, y):
    return 2 * x * (x * w + b - y)
epoch_list = []
loss_list = []
print('prefict(before training)', 4, forward(4))

for epoch in range(100):
    for x, y in zip(x_data, y_data):
        grad = gradient(x, y)
        w = w - 0.01 * grad
        b = b - 0.01 * grad
        print("\tgrad:", x, y, grad)
        i = loss(x, y)
    print('epoch:', epoch, 'w=', w, 'loss=', i)
    epoch_list.append(epoch)
    loss_list.append(i)

print('w=', w)
print('predict(after training)', 4, forward(4))
plt.plot(epoch_list, loss_list)
plt.ylabel('cost')
plt.xlabel('epoch')
plt.show()

梯度下降与随机梯度下降的比较:

回归VS分类

在之前的回归任务中,我们是预测 分值是多少 ; • 在分类任务中就可以变成根据学习 时间判断是否能通过考试,即结果 分为两类:fail 、pass 。 • 我们的任务就是计算不同学习时间 x分别是fail、pass的概率。(二分 类问题其实只需要计算一个概率; 另一个概况就是 1 -算的概率) • 如果预测pass概率为0.6 ,fail概率 就是0.4,那么判断为pass 。sigmoid函数在x无限趋近于正无穷、 负无穷时,y无线趋近于1、0; 可以看到当x非常大或者非常小的时 候,函数梯度变化就非常小了。这 种函数称为饱和函数

逻辑回归模型:只是在线性回归之后加了一个sigmoid激活函数!将值映射在【0,1】之间。

用PyTorch实现Logistic回归

1.数据准备

import numpy as np
import torch
from torch import nn
from  matplotlib import pyplot as plt


from  torch.distributions import MultivariateNormal
#设置两组不同的均值向量和协方差矩阵
mu1 = -3 * torch.ones(2)
mu2 = 3 * torch.ones(2)
sigma1 = torch.eye(2) * 0.5
sigma2 = torch.eye(2) * 2

#各从两个多元高斯分布中生成100个样本
m1 = MultivariateNormal(mu1,sigma1)
m2 = MultivariateNormal(mu2,sigma2)
x1 = m1.sample((100,))
x2 = m2.sample((100,))

#设置正负样本的标签
y = torch.zeros((200,1))
y[100:] = 1

#组合,打乱样本
x = torch.cat([x1,x2],dim=0)
idx = np.random.permutation(len(x))
x = x[idx]
y = y[idx]

#绘制样本
plt.scatter(x1.numpy()[:,0],x1.numpy()[:,1])
plt.scatter(x2.numpy()[:,0],x2.numpy()[:,1])
plt.show()

上述代码的倒数第3~1行将生成的样本用plt.scatter绘制出来,绘制的结果如图所示,可以很明显地看出多元高斯分布生成的样本聚成了两个簇,并且簇的中心分别处于不同的位置(多元高斯分布的均值向量决定了其位置)。右上角簇的样本分布比较稀疏,而左下角簇的样本分布紧凑(多元高斯分布的协方差矩阵决定了分布形状)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值