当前位置: 首页 > article >正文

Logistic Regression(逻辑回归)、Maximum Likelihood Estimatio(最大似然估计)

Logistic Regression(逻辑回归)、Maximum Likelihood Estimatio(最大似然估计)

  • 逻辑回归(Logistic Regression,LR)
    • 逻辑回归的基本思想
    • 逻辑回归模型
    • 逻辑回归的目标
      • 最大似然估计
      • 优化方法
    • 逻辑回归的损失函数:对数损失
    • 逻辑回归的应用
    • 逻辑回归的优缺点
      • 优点
      • 缺点
    • 逻辑回归的扩展
    • 逻辑回归的实现(Python 示例)
  • 最大似然估计 (Maximum Likelihood Estimation, MLE)
    • 最大似然估计的基本思想
      • 似然函数
      • 对数似然函数
      • 最大化对数似然
    • 通过最大似然估计估计参数
      • 示例 1:估计高斯分布的均值和方差
      • 示例 2:伯努利分布的最大似然估计
    • 最大似然估计的优点和局限
      • 优点
      • 局限
  • 参考资料

逻辑回归(Logistic Regression,LR)

逻辑回归(Logistic Regression) 是一种广泛应用于分类问题的统计方法,尤其用于二分类问题(即预测目标变量有两个类别)。尽管它的名字中带有“回归”二字,但它实际上是一种分类算法。逻辑回归通过对输入特征进行建模,输出一个概率值,表示某个类别的可能性。

逻辑回归的基本思想

逻辑回归试图找出一个合适的数学模型,将输入特征 X = ( x 1 , x 2 , … , x n ) X=(x_1, x_2, …, x_n) X=(x1,x2,,xn) 映射到目标标签 Y Y Y 上。对于二分类问题,目标是根据输入特征预测 Y = 1 Y=1 Y=1 Y = 0 Y=0 Y=0 的概率。

逻辑回归的核心是 逻辑函数(Logistic Function) 或者称为 Sigmoid 函数,它将任何实数映射到 [0, 1] 之间,从而可以解释为概率。

逻辑回归模型

假设输入特征 X = ( x 1 , x 2 , … , x n ) X=(x_1, x_2, …, x_n) X=(x1,x2,,xn) 和权重参数 w = ( w 1 , w 2 , … , w n ) w=(w_1, w_2, …, w_n) w=(w1,w2,,wn),逻辑回归模型的输出是通过一个线性组合加上偏置项,输入到一个 Sigmoid 函数中:
z = w 1 x 1 + w 2 x 2 + ⋯ + w n x n + b z = w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b z=w1x1+w2x2++wnxn+b
然后,将 z z z 通过 Sigmoid 函数 σ ( z ) σ(z) σ(z) 转换为一个概率值:
P ( Y = 1 ∣ X ) = σ ( z ) = 1 1 + e − z P(Y = 1 \mid X) = \sigma(z) = \frac{1}{1 + e^{-z}} P(Y=1X)=σ(z)=1+ez1

其中, σ ( z ) σ(z) σ(z) 是 Sigmoid 函数,它将任何实数 z z z 映射到 (0, 1) 之间,表示一个类别的概率。 P ( Y = 1 ∣ X ) P(Y=1∣X) P(Y=1X) 就是预测样本属于类别1的概率。

  • 如果 P ( Y = 1 ∣ X ) > 0.5 P(Y=1∣X)>0.5 P(Y=1X)>0.5,则预测类别为 1;
  • 如果 P ( Y = 1 ∣ X ) ≤ 0.5 P(Y=1∣X)≤0.5 P(Y=1X)0.5,则预测类别为 0。

在这里插入图片描述

逻辑回归的目标

在逻辑回归中,我们的目标是通过训练数据来学习最优的权重参数 w 1 , w 2 , … , w n w_1, w_2, …, w_n w1,w2,,wn 和偏置项 b b b,使得模型能够准确地预测数据的类别。为此,我们使用最大似然估计(Maximum Likelihood Estimation, MLE)来估计这些参数。

最大似然估计

假设我们有 m m m 个训练样本,每个样本的输入为 X ( i ) X^{(i)} X(i),标签为 Y ( i ) Y^{(i)} Y(i),其中 i = 1 , 2 , … , m i = 1, 2, \dots, m i=1,2,,m

逻辑回归模型的似然函数是基于每个训练样本的预测概率和真实标签的结合。对于每个样本,预测的概率为 P ( Y = 1 ∣ X ( i ) ) P(Y = 1 \mid X^{(i)}) P(Y=1X(i)),因此整个训练集的似然函数为:
L ( w , b ) = ∏ i = 1 m P ( Y ( i ) ∣ X ( i ) ; w , b ) L(w, b) = \prod_{i=1}^{m} P(Y^{(i)} \mid X^{(i)}; w, b) L(w,b)=i=1mP(Y(i)X(i);w,b)

因为 Y ( i ) Y^{(i)} Y(i) 是 0 或 1,所以可以将似然函数写成:
L ( w , b ) = ∏ i = 1 m [ σ ( z ( i ) ) Y ( i ) ⋅ ( 1 − σ ( z ( i ) ) ) 1 − Y ( i ) ] L(w, b) = \prod_{i=1}^{m} \left[\sigma(z^{(i)})^{Y^{(i)}} \cdot (1 - \sigma(z^{(i)}))^{1 - Y^{(i)}} \right] L(w,b)=i=1m[σ(z(i))Y(i)(1σ(z(i)))1Y(i)]

为了方便优化,通常取对数似然函数(Log-Likelihood),得到:
ℓ ( w , b ) = ∑ i = 1 m [ Y ( i ) log ⁡ σ ( z ( i ) ) + ( 1 − Y ( i ) ) log ⁡ ( 1 − σ ( z ( i ) ) ) ] \ell(w, b) = \sum_{i=1}^{m} \left[Y^{(i)} \log \sigma(z^{(i)}) + (1 - Y^{(i)}) \log (1 - \sigma(z^{(i)})) \right] (w,b)=i=1m[Y(i)logσ(z(i))+(1Y(i))log(1σ(z(i)))]

目标是最大化对数似然函数 ℓ ( w , b ) \ell(w, b) (w,b),即找到使对数似然函数最大化的权重 w w w 和偏置项 b b b

优化方法

我们通常使用梯度下降法(Gradient Descent)来优化对数似然函数。梯度下降法通过计算损失函数(对数似然的负数)对模型参数的梯度来更新参数,以减小损失。

梯度下降更新规则为:
w j ← w j − α ∂ ∂ w j ℓ ( w , b ) w_j \leftarrow w_j - \alpha \frac{\partial}{\partial w_j} \ell(w, b) wjwjαwj(w,b)
b ← b − α ∂ ∂ b ℓ ( w , b ) b \leftarrow b - \alpha \frac{\partial}{\partial b} \ell(w, b) bbαb(w,b)

其中, α \alpha α 是学习率。

逻辑回归的损失函数:对数损失

由于逻辑回归是基于最大似然估计的,因此它的损失函数通常称为对数损失(Log-Loss)或交叉熵损失(Cross-Entropy Loss),公式如下:
L ( w , b ) = − 1 m ∑ i = 1 m [ Y ( i ) log ⁡ ( σ ( z ( i ) ) ) + ( 1 − Y ( i ) ) log ⁡ ( 1 − σ ( z ( i ) ) ) ] \mathcal{L}(w, b) = - \frac{1}{m} \sum_{i=1}^{m} \left[Y^{(i)} \log(\sigma(z^{(i)})) + (1 - Y^{(i)}) \log(1 - \sigma(z^{(i)})) \right] L(w,b)=m1i=1m[Y(i)log(σ(z(i)))+(1Y(i))log(1σ(z(i)))]

对数损失衡量的是预测的概率分布与真实标签之间的差距。损失函数的值越小,模型的预测越准确。

逻辑回归的应用

逻辑回归适用于以下场景:

  • 二分类问题:例如,电子邮件分类(垃圾邮件与非垃圾邮件)、医疗诊断(是否患病)、银行贷款申请(是否批准)等。
  • 多分类问题:通过多项式逻辑回归(Multinomial Logistic Regression)扩展,可以处理多类问题,常用于文本分类或图像分类。

逻辑回归的优缺点

优点

  • 简单易懂:逻辑回归是一种线性模型,易于理解和实现。
  • 高效:逻辑回归在训练数据量较小的情况下能表现得很好,计算速度较快。
  • 概率输出:它不仅提供类别预测,还提供每个类别的概率,这对于很多应用场景非常有用。
  • 可解释性强:模型参数(即权重)能够反映特征对预测结果的影响,便于进行模型解释。

缺点

  • 线性假设:逻辑回归假设特征和目标之间的关系是线性的。如果数据呈现非线性关系,逻辑回归可能无法很好地拟合数据。
  • 对异常值敏感:逻辑回归对异常值比较敏感,异常值可能会影响模型的性能。
  • 特征相关性问题:逻辑回归对特征之间的相关性较为敏感,强相关的特征可能会导致多重共线性问题。

逻辑回归的扩展

  • 多项式逻辑回归(Multinomial Logistic Regression):用于多分类问题,模型的输出不是一个概率,而是多个类别的概率分布。
  • 正则化(Regularization):为了防止过拟合,可以在逻辑回归中加入L1或L2正则化项。L1正则化能生成稀疏解,L2正则化可以避免过大权重的出现。

逻辑回归的实现(Python 示例)

使用 scikit-learn 库,可以非常方便地实现逻辑回归模型:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score, classification_report

# 加载鸢尾花数据集
data = load_iris()
X = data.data  # 特征数据
y = data.target  # 标签数据

# 将标签转为二分类问题:1. "Setosa"(类别 0),2. 非 "Setosa"(类别 1)
y_binary = (y == 0).astype(int)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y_binary, test_size=0.3, random_state=42)

# 创建逻辑回归模型
model = LogisticRegression()

# 训练模型
model.fit(X_train, y_train)

# 打印训练后的模型参数
print(f"模型的权重 (w): {model.coef_}")
print(f"模型的偏置 (b): {model.intercept_}")

# 用测试集进行预测
y_pred = model.predict(X_test)

# 计算模型的准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型的准确率: {accuracy * 100:.2f}%")

# 输出分类报告(精确率、召回率、F1分数等)
print("\n分类报告:")
print(classification_report(y_test, y_pred))

最大似然估计 (Maximum Likelihood Estimation, MLE)

最大似然估计(MLE) 是一种常用的统计方法,用于估计模型参数,使得在给定数据下,模型的概率最大化。简单来说,最大似然估计旨在找到最有可能生成观测数据的参数值。

MLE 是一种 参数估计方法,广泛应用于许多机器学习和统计建模中,尤其在 监督学习概率模型 中应用广泛。

主要作用是利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。

当“模型已定,参数未知”时,通过若干次试验,观察其结果,利用试验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。

最大似然估计的基本思想

假设我们有一组观测数据,记为 X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,,xn},这些数据来自某个概率分布,该分布有一个参数 θ \theta θ。我们的目标是通过最大化 似然函数 来估计参数 θ \theta θ

具体来说,假设我们已知数据的分布类型(比如高斯分布、伯努利分布等),但我们并不知道分布的具体参数。最大似然估计就是通过寻找一个参数 θ \theta θ使得给定这个参数下,观测到的数据的概率最大

似然函数

给定数据集 X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,,xn} 和模型的参数 θ \theta θ似然函数(Likelihood Function)表示在给定参数 θ \theta θ 下,观察到数据的概率。假设数据集中的样本独立且同分布(i.i.d.),则似然函数可以表示为:
L ( θ ; X ) = P ( X ∣ θ ) = ∏ i = 1 n P ( x i ∣ θ ) L(\theta; X) = P(X \mid \theta) = \prod_{i=1}^{n} P(x_i \mid \theta) L(θ;X)=P(Xθ)=i=1nP(xiθ)

其中, P ( x i ∣ θ ) P(x_i \mid \theta) P(xiθ) 是在参数 θ \theta θ 下,样本 x i x_i xi 出现的概率。

对数似然函数

由于似然函数通常涉及乘法,计算起来可能会很复杂。为了解决这个问题,我们通常使用 对数似然函数,因为对数函数是单调递增的,因此最大化似然函数和最大化对数似然函数是等价的。对数似然函数为:
ℓ ( θ ; X ) = log ⁡ L ( θ ; X ) = ∑ i = 1 n log ⁡ P ( x i ∣ θ ) \ell(\theta; X) = \log L(\theta; X) = \sum_{i=1}^{n} \log P(x_i \mid \theta) (θ;X)=logL(θ;X)=i=1nlogP(xiθ)

对数似然函数将乘积转化为求和,计算更为简便。

最大化对数似然

最大似然估计的目标是找到一个参数值 θ ^ \hat{\theta} θ^,使得对数似然函数最大化,即:
θ ^ = arg ⁡ max ⁡ θ ℓ ( θ ; X ) \hat{\theta} = \arg\max_\theta \ell(\theta; X) θ^=argθmax(θ;X)

这就是最大似然估计的核心思想:通过找到参数 θ \theta θ 使得在该参数下,数据的对数似然值最大。

通过最大似然估计估计参数

示例 1:估计高斯分布的均值和方差

假设我们有一个来自高斯分布的数据集 X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,,xn},我们想通过最大似然估计来估计其 均值 μ \mu μ方差 σ 2 \sigma^2 σ2

高斯分布的概率密度函数为:
P ( x ∣ μ , σ 2 ) = 1 2 π σ 2 exp ⁡ ( − ( x − μ ) 2 2 σ 2 ) P(x \mid \mu, \sigma^2) = \frac{1}{\sqrt{2\pi \sigma^2}} \exp\left( -\frac{(x - \mu)^2}{2\sigma^2} \right) P(xμ,σ2)=2πσ2 1exp(2σ2(xμ)2)

根据似然函数的定义,数据集的似然函数为:
L ( μ , σ 2 ; X ) = ∏ i = 1 n 1 2 π σ 2 exp ⁡ ( − ( x i − μ ) 2 2 σ 2 ) L(\mu, \sigma^2; X) = \prod_{i=1}^{n} \frac{1}{\sqrt{2\pi \sigma^2}} \exp\left( -\frac{(x_i - \mu)^2}{2\sigma^2} \right) L(μ,σ2;X)=i=1n2πσ2 1exp(2σ2(xiμ)2)

对似然函数取对数得到对数似然函数:
ℓ ( μ , σ 2 ; X ) = ∑ i = 1 n [ − 1 2 log ⁡ ( 2 π σ 2 ) − ( x i − μ ) 2 2 σ 2 ] \ell(\mu, \sigma^2; X) = \sum_{i=1}^{n} \left[ -\frac{1}{2} \log(2\pi \sigma^2) - \frac{(x_i - \mu)^2}{2\sigma^2} \right] (μ,σ2;X)=i=1n[21log(2πσ2)2σ2(xiμ)2]

为了最大化对数似然函数,我们分别对 μ \mu μ σ 2 \sigma^2 σ2 求导,并令其为 0,得到最大似然估计的参数值。

  1. μ \mu μ 求导:
    ∂ ℓ ∂ μ = ∑ i = 1 n x i − μ σ 2 = 0 \frac{\partial \ell}{\partial \mu} = \sum_{i=1}^{n} \frac{x_i - \mu}{\sigma^2} = 0 μ=i=1nσ2xiμ=0
    解得:
    μ ^ = 1 n ∑ i = 1 n x i \hat{\mu} = \frac{1}{n} \sum_{i=1}^{n} x_i μ^=n1i=1nxi
    这就是样本均值的最大似然估计。

  2. σ 2 \sigma^2 σ2 求导:
    ∂ ℓ ∂ σ 2 = − n 2 σ 2 + 1 2 σ 4 ∑ i = 1 n ( x i − μ ) 2 = 0 \frac{\partial \ell}{\partial \sigma^2} = -\frac{n}{2\sigma^2} + \frac{1}{2\sigma^4} \sum_{i=1}^{n} (x_i - \mu)^2 = 0 σ2=2σ2n+2σ41i=1n(xiμ)2=0
    解得:

σ 2 ^ = 1 n ∑ i = 1 n ( x i − μ ^ ) 2 \hat{\sigma^2} = \frac{1}{n} \sum_{i=1}^{n} (x_i - \hat{\mu})^2 σ2^=n1i=1n(xiμ^)2
这就是样本方差的最大似然估计。

示例 2:伯努利分布的最大似然估计

假设我们有一组来自 伯努利分布 的观测数据。伯努利分布的概率质量函数为:
P ( x ∣ p ) = p x ( 1 − p ) 1 − x P(x \mid p) = p^x (1 - p)^{1 - x} P(xp)=px(1p)1x

其中, x ∈ { 0 , 1 } x \in \{0, 1\} x{0,1} p p p 是成功的概率。

假设我们有 n n n 个独立的伯努利试验观测值 X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,,xn},我们要估计参数 p p p。则似然函数为:
L ( p ; X ) = ∏ i = 1 n p x i ( 1 − p ) 1 − x i L(p; X) = \prod_{i=1}^{n} p^{x_i} (1 - p)^{1 - x_i} L(p;X)=i=1npxi(1p)1xi

对其取对数得到对数似然函数:
ℓ ( p ; X ) = ∑ i = 1 n [ x i log ⁡ p + ( 1 − x i ) log ⁡ ( 1 − p ) ] \ell(p; X) = \sum_{i=1}^{n} \left[ x_i \log p + (1 - x_i) \log(1 - p) \right] (p;X)=i=1n[xilogp+(1xi)log(1p)]

最大化对数似然函数,求导并令其为 0:
∂ ℓ ∂ p = ∑ i = 1 n x i p − 1 − x i 1 − p = 0 \frac{\partial \ell}{\partial p} = \sum_{i=1}^{n} \frac{x_i}{p} - \frac{1 - x_i}{1 - p} = 0 p=i=1npxi1p1xi=0

解得:
p ^ = 1 n ∑ i = 1 n x i \hat{p} = \frac{1}{n} \sum_{i=1}^{n} x_i p^=n1i=1nxi

这就是样本中 1 的比例的最大似然估计。

最大似然估计的优点和局限

优点

  • 一致性:随着样本数量 n n n 的增加,最大似然估计趋近于真实的参数值(在大样本下是无偏的)。
  • 有效性:MLE 是在满足正则条件下具有最小方差的估计量(在大样本下)。
  • 广泛适用:最大似然估计可以用于各种类型的概率分布,不仅限于常见的分布(如高斯分布、伯努利分布等)。

局限

  • 计算复杂度高:当样本量大或分布复杂时,最大似然估计的计算可能非常复杂,需要使用数值优化方法。
  • 模型假设的依赖性:MLE 假设我们知道数据的分布类型,如果选择了错误的模型分布,估计结果可能会偏差。
  • 需要大量数据:对于小样本数据,最大似然估计可能会导致过拟合,或者估计不准确。

参考资料

Simplifying Logistic Regression — A Beginner’s Guide with a Real-world Practical Example

【五分钟机器学习】机器分类的基石:逻辑回归Logistic Regression

最大似然估计(通俗讲解)


http://www.kler.cn/a/420942.html

相关文章:

  • 稳定运行的以Azure Synapse Dedicated SQL Pool数据仓库为数据源和目标的ETL性能变差时提高性能方法和步骤
  • Language Translation with TorchText
  • 利用红黑树封装map,和set,实现主要功能
  • STM32 PWM波形详细图解
  • Python实现网站资源批量下载【可转成exe程序运行】
  • 指针(上)
  • 经典图论之道路与航线
  • 【阿来来gis规划师工具箱说明书】b03要素信息写入字段
  • Scala的正则表达式
  • 便携微型充气泵方案开发设计
  • Node.js JWT认证教程
  • 前端如何不引入第三方插件实现pdf预览功能?
  • 开启智能 BI 新纪元:生成式 AI 工具的探索与实践
  • 微信小程序踩坑指南(一)wx:for的坑
  • 【笔记2-1】ESP32:基于vscode的espidf插件的开发环境搭建
  • FPGA设计-基于SJA1000的can控制器设计
  • Mybatis 学习 之 XML 手册
  • debian ubuntu armbian部署asp.net core 项目 开机自启动
  • 贴片式内存卡 ​SD NAND​
  • 【数据结构】队列实现剖析:掌握队列的底层实现
  • 零基础快速掌握——【c语言基础】数组的相关概念及操作
  • 电子应用设计方案-37:智能鼠标系统方案设计
  • re正则通配表达式的详尽/简洁,从来不是一对悖论
  • 二叉树的概念及其在Java中的实现
  • 【第 1 章 初识 C 语言】1.6 C 语言标准:C89/90、C99、C11、C17、C23
  • Java中如何停止一个正在运行的线程