【机器学习:八、逻辑回归】

逻辑回归(Logistic Regression)

1. 逻辑回归的引出

在现实世界中,许多问题都涉及到分类任务。例如:

  • 判断一封邮件是否为垃圾邮件;
  • 预测某人是否会患某种疾病;
  • 确定图片中是否包含某种特定物体。

这些问题的输出通常是离散的(例如“是/否”或“0/1”)。传统的线性回归虽然适合连续输出的任务,但无法直接处理分类问题。因此,我们需要一种适合分类任务的模型,这便引出了逻辑回归(Logistic Regression)。

逻辑回归是一种适用于二分类和扩展到多分类任务的模型,其核心思想是通过引入逻辑函数(Logistic Function),将线性模型的输出映射到概率空间,使模型能够解决分类问题。

2. 逻辑回归的背景与意义

背景

逻辑回归最初起源于生物统计学领域,用于描述事件的发生概率。例如:

  • 一种药物的有效性(有效/无效);
  • 生物体存活的概率。

随着机器学习的普及,逻辑回归成为了分类任务中的经典算法之一,被广泛应用于各个领域。

意义

  1. 简单易实现:逻辑回归模型具有明确的数学定义,训练过程高效,易于实现。
  2. 可解释性强:逻辑回归的系数能够直观解释特征对分类的影响。
  3. 广泛适用性:适用于许多需要概率输出的分类任务,如医学诊断、信用评分等。
  4. 构造基础模型:逻辑回归常作为复杂模型的基石,例如神经网络。

3. 逻辑回归的定义

逻辑回归是一种概率模型,用于预测某事件发生的概率 P ( y = 1 ∣ x ) P(y=1|x) P(y=1∣x) 。其核心思想是将输入特征通过线性模型映射到一个实数值,再通过Sigmoid函数将其压缩到 [ 0 , 1 ] [0, 1] [0,1] 区间,表示为概率。

模型公式

  1. 线性模型

z = θ T x = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n z = \theta^T x = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \dots + \theta_n x_n z=θTx=θ0+θ1x1+θ2x2++θnxn

其中:

  • x x x 是输入特征向量;
  • θ \theta θ 是模型参数(权重和偏置)。
  1. Sigmoid函数

h θ ( x ) = 1 1 + e − z h_\theta(x) = \frac{1}{1 + e^{-z}} hθ(x)=1+ez1

Sigmoid函数的性质:

  • z → + ∞ z \to +\infty z+ h θ ( x ) → 1 h_\theta(x) \to 1 hθ(x)1
  • z → − ∞ z \to -\infty z h θ ( x ) → 0 h_\theta(x) \to 0 hθ(x)0
  1. 预测概率

P ( y = 1 ∣ x ) = h θ ( x ) , P ( y = 0 ∣ x ) = 1 − h θ ( x ) P(y=1|x) = h_\theta(x), \quad P(y=0|x) = 1 - h_\theta(x) P(y=1∣x)=hθ(x),P(y=0∣x)=1hθ(x)

  1. 分类决策: 设定阈值 α \alpha α ,一般取 α = 0.5 \alpha = 0.5 α=0.5

y = { 1 if  h θ ( x ) ≥ α 0 if  h θ ( x ) < α y = \begin{cases} 1 & \text{if } h_\theta(x) \geq \alpha \\ 0 & \text{if } h_\theta(x) < \alpha \end{cases} y={10if hθ(x)αif hθ(x)<α

可视化图示

  • Sigmoid函数图:展示输入 z z z 映射到概率 h θ ( x ) h_\theta(x) hθ(x) 的曲线(从 -6 到 6 的 S 型函数)。

4. 逻辑回归的代价函数

4.1 为什么不能直接使用均方误差作为代价函数?

在线性回归中,我们使用均方误差(MSE)作为代价函数:

J ( θ ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta) = \frac{1}{m} \sum_{i=1}^m \left( h_\theta(x^{(i)}) - y^{(i)} \right)^2 J(θ)=m1i=1m(hθ(x(i))y(i))2

但是,在逻辑回归中,使用 MSE 存在两个问题:

  1. 非凸性问题:MSE 会导致代价函数变为非凸函数,梯度下降可能无法找到全局最优解。
  2. 不符合概率模型的假设:逻辑回归是基于最大似然估计的,而 MSE 不满足这种统计假设。

4.2 交叉熵损失函数(Cross-Entropy Loss)

逻辑回归采用交叉熵作为代价函数,它基于最大似然估计:

J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] J(\theta) = -\frac{1}{m} \sum_{i=1}^m \left[ y^{(i)} \log h_\theta(x^{(i)}) + \left(1 - y^{(i)}\right) \log \left(1 - h_\theta(x^{(i)})\right) \right] J(θ)=m1i=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]

  • y = 1 y = 1 y=1 :代价为 − log ⁡ h θ ( x ) -\log h_\theta(x) loghθ(x) ,即模型预测的概率 h θ ( x ) h_\theta(x) hθ(x) 越接近 1,损失越小;
  • y = 0 y = 0 y=0 :代价为 − log ⁡ ( 1 − h θ ( x ) ) -\log \left(1 - h_\theta(x)\right) log(1hθ(x)) ,即模型预测的概率 h θ ( x ) h_\theta(x) hθ(x) 越接近 0,损失越小。
可视化图示
  • 损失函数曲线:分别展示 y = 1 y=1 y=1 y = 0 y=0 y=0 的损失随 h θ ( x ) h_\theta(x) hθ(x) 变化的曲线。

4.3 代价函数的性质

  1. 凸函数:交叉熵损失是一个凸函数,便于梯度下降找到全局最优解。
  2. 偏导数公式

∂ J ( θ ) ∂ θ j = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial J(\theta)}{\partial \theta_j} = \frac{1}{m} \sum_{i=1}^m \left( h_\theta(x^{(i)}) - y^{(i)} \right) x_j^{(i)} θjJ(θ)=m1i=1m(hθ(x(i))y(i))xj(i)

这与线性回归的梯度更新公式形式类似,只是误差的定义不同。

5.逻辑回归的梯度下降法

梯度下降是逻辑回归模型训练中常用的优化算法,用于通过最小化代价函数来寻找模型参数 θ \theta θ 。以下是逻辑回归中梯度下降的具体过程:

5.1 梯度下降的目标

逻辑回归的目标是最小化代价函数 J ( θ ) J(\theta) J(θ) ,通常使用交叉熵损失函数

J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] J(\theta) = -\frac{1}{m} \sum_{i=1}^m \left[ y^{(i)} \log h_\theta(x^{(i)}) + (1 - y^{(i)}) \log \left(1 - h_\theta(x^{(i)})\right) \right] J(θ)=m1i=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]

其中:

  • m m m 是样本数量;
  • h θ ( x ) = 1 1 + e − θ T x h_\theta(x) = \frac{1}{1 + e^{-\theta^T x}} hθ(x)=1+eθTx1 是 Sigmoid 函数的输出;
  • y ( i ) ∈ { 0 , 1 } y^{(i)} \in \{0, 1\} y(i){0,1} 是样本的真实标签。

梯度下降通过迭代更新参数 θ \theta θ 来逐步减小代价函数值。

5.2 梯度下降公式

2.1 代价函数的梯度

代价函数对参数 θ j \theta_j θj 的偏导数为:

∂ J ( θ ) ∂ θ j = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial J(\theta)}{\partial \theta_j} = \frac{1}{m} \sum_{i=1}^m \left( h_\theta(x^{(i)}) - y^{(i)} \right) x_j^{(i)} θjJ(θ)=m1i=1m(hθ(x(i))y(i))xj(i)

  • h θ ( x ( i ) ) − y ( i ) h_\theta(x^{(i)}) - y^{(i)} hθ(x(i))y(i) 是预测值与真实值的误差;
  • x j ( i ) x_j^{(i)} xj(i) 是第 i i i 个样本的第 j j j 个特征值。
2.2 参数更新公式

梯度下降的更新公式为:

θ j : = θ j − α ⋅ ∂ J ( θ ) ∂ θ j \theta_j := \theta_j - \alpha \cdot \frac{\partial J(\theta)}{\partial \theta_j} θj:=θjαθjJ(θ)

  • α \alpha α 是学习率(控制更新步伐的大小);
  • θ j \theta_j θj 是模型的参数。

将偏导数代入更新公式,得到:

θ j : = θ j − α m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j := \theta_j - \frac{\alpha}{m} \sum_{i=1}^m \left( h_\theta(x^{(i)}) - y^{(i)} \right) x_j^{(i)} θj:=θjmαi=1m(hθ(x(i))y(i))xj(i)

这个公式表明,梯度下降的每次更新都依赖于样本预测值与真实值的误差。

5.3 梯度下降的具体步骤

  1. 初始化参数: 通常将所有参数 θ j \theta_j θj 初始化为零或随机小值。

  2. 计算预测值: 使用当前参数计算每个样本的预测值:

    h θ ( x ( i ) ) = 1 1 + e − θ T x ( i ) h_\theta(x^{(i)}) = \frac{1}{1 + e^{-\theta^T x^{(i)}}} hθ(x(i))=1+eθTx(i)1

  3. 计算代价函数: 计算当前参数下的代价函数值 J ( θ ) J(\theta) J(θ) ,以评估模型性能。

  4. 更新参数: 根据梯度下降公式更新参数 θ j \theta_j θj

  5. 检查收敛条件: 如果代价函数的值不再显著下降(或变化量小于某个阈值),或达到最大迭代次数,则停止迭代。

5.4 梯度下降的几种变体

  1. 批量梯度下降(Batch Gradient Descent)

    • 每次迭代使用所有样本计算梯度。
    • 优点:梯度估计准确。
    • 缺点:当数据量很大时,计算代价较高。
  2. 随机梯度下降(Stochastic Gradient Descent, SGD)

    • 每次迭代仅使用一个样本计算梯度。
    • 优点:计算效率高,适合大规模数据。
    • 缺点:更新过程不稳定,可能震荡于最优解附近。
  3. 小批量梯度下降(Mini-batch Gradient Descent)

    • 每次迭代使用一个小批量(例如 32 个样本)计算梯度。
    • 优点:结合了批量梯度下降和随机梯度下降的优点,更新稳定且效率较高。

5.5 学习率的影响

  • 学习率 α \alpha α 的大小对梯度下降的效果至关重要:
    • 学习率过大:更新步伐过快,可能导致错过最优解甚至发散。
    • 学习率过小:更新步伐过慢,收敛速度过慢。
学习率影响的可视化图示
  1. 学习率过大:代价函数的值震荡,甚至发散。
  2. 学习率适中:代价函数值平稳下降,快速收敛。
  3. 学习率过小:代价函数值下降缓慢。

5.6 梯度下降的优缺点

优点
  1. 简单易实现;
  2. 可扩展到大规模数据集;
  3. 支持在线学习。
缺点
  1. 对学习率敏感,需仔细调节;
  2. 容易陷入局部最优(对于非凸问题);
  3. 可能收敛到平坦区域(即梯度很小但未达到最优解)。

5.7 梯度下降的改进方法

  1. 自适应学习率

    • AdaGradRMSProp:自动调整学习率,适应不同梯度大小。
    • Adam:结合动量法和 RMSProp,收敛更快且稳定。
  2. 加动量(Momentum)

    • 在每次更新中加入历史梯度的动量,加速收敛过程。
  3. 正则化

    • 添加正则化项(如 L 1 L1 L1 L 2 L2 L2 ),以防止过拟合。

5.8 总结

逻辑回归的梯度下降法通过不断更新模型参数,优化交叉熵损失函数,是一种高效且经典的优化算法。结合不同的梯度下降变体和改进方法,可以提升训练效率和模型性能,使其适应各种规模和复杂度的数据集。

6. 逻辑回归的扩展

  1. 多分类问题:通过 Softmax 函数扩展逻辑回归至多分类任务。
  2. 正则化:加入 L 1 L1 L1 L 2 L2 L2 正则化项,防止过拟合。
  3. 模型评估:使用准确率、精确率、召回率、F1分数等指标评估模型性能。

7. 逻辑回归的总结

逻辑回归是机器学习中经典的分类算法,因其简单、可解释性强而被广泛应用。尽管随着深度学习的兴起,复杂模型逐渐成为主流,但逻辑回归仍然是理解分类问题的基础模型,是许多复杂模型的重要组成部分。

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

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

相关文章

UI自动化测试保姆级教程①

欢迎来到阿妮莫的学习小屋慢也好&#xff0c;步子小也好&#xff0c;在往前走就好 目录 自动化测试 简介 作用 分类 优缺点 优点 缺点(误区) UI自动化测试 自动化测试使用场景 自动化测试实现时间 Selenium框架 特点 Web自动化测试环境部署 Selenium包安装 浏览…

【2024年华为OD机试】 (A卷,100分)- 总最快检测效率(Java JS PythonC/C++)

一、问题描述 题目描述 在系统、网络均正常的情况下组织核酸采样员和志愿者对人群进行核酸检测筛查。 每名采样员的效率不同&#xff0c;采样效率为 N 人/小时。由于外界变化&#xff0c;采样员的效率会以 M 人/小时为粒度发生变化&#xff0c;M 为采样效率浮动粒度&#xf…

离线录制激光雷达数据进行建图

目前有一个2D激光雷达&#xff0c;自己控制小车运行一段时间&#xff0c;离线获取到激光雷达数据后运行如下代码进行离线建图。 roslaunch cartographer_ros demo_revo_lds.launch bag_filename:/home/firefly/AutoCar/data/rplidar_s2/2025-01-08-02-08-33.bag实际效果如下 d…

蓝桥杯嵌入式速通(1)

1.工程准备 创建一文件夹存放自己的代码&#xff0c;并在mdk中include上文件夹地址 把所有自身代码的头文件都放在headfile头文件中&#xff0c;之后只需要在新的文件中引用headfile即可 headfile中先提前可加入 #include "stdio.h" #include "string.h"…

QT跨平台应用程序开发框架(1)—— 环境搭建

目录 一&#xff0c;关于QT 二&#xff0c;关于应用程序框架 三&#xff0c;环境搭建 3.1 预备 3.2 下载Qt SDK 3.3 安装Qt SDK 3.4 配置环境变量 3.5 认识一些重要工具 四&#xff0c;Qt Creator 的基本使用 4.1 创建项目 4.2 代码解释 一&#xff0c;关于QT 互联网…

Open FPV VTX开源之第一次出图

Open FPV VTX开源之第一次出图 1. 源由2. 连线2.1 飞控2.2 调试 3. serial3.1 启动log - uboot3.2 登录版本 - linux3.3 获取有线IP 4. ssh - linux5. PixelPilot出图6. 总结7. 参考资料 1. 源由 在《Open FPV VTX开源之硬件规格及组成》章节中&#xff0c;已经基本介绍了产品…

基于高斯混合模型的数据分析及其延伸应用(具体代码分析)

一、代码分析 &#xff08;一&#xff09;清除工作区和命令行窗口 clear; clc;clear;&#xff1a;该命令用于清除 MATLAB 工作区中的所有变量&#xff0c;确保代码运行环境的清洁&#xff0c;避免之前遗留的变量对当前代码运行产生干扰。例如&#xff0c;如果之前运行的代码中…

PostgreSQL技术内幕22:vacuum full 和 vacuum

文章目录 0.简介1.概念及使用方式2.工作原理2.1 主要功能2.2 清理流程2.3 防止事务id环绕说明 3.使用建议 0.简介 在之前介绍MVCC文章中介绍过常见的MVCC实现的两种方式&#xff0c;一种是将旧数据放到回滚段&#xff0c;一种是直接生成一条新数据&#xff08;对于删除是不删除…

【面试】程序员 简历

一、简历整体结构 完整简历包含基本信息、教育背景、求职意向、工作经历、职业技能、项目经历、个人优势和个人荣誉八个部分。编写时&#xff0c;前几部分在保证真实的基础上可适当美化&#xff1b;个人优势和荣誉描述要突出难点亮点且避免夸张&#xff0c;可写入如马拉松参赛、…

WebGIS在应急灾害中对村庄、风景区、机场的影响范围应用-以日喀则市定日县地震为例

目录 前言 一、关于影响范围 1、震中距离5公里 2、震中20公里范围 3、20到80公里范围 二、空间查询知识 1、相关数据介绍 2、空间数据查询 三、前后端数据查询以及web可视化实现 1、后台API实现 2、WebGIS前端实现 四、Web成果展示 1、空间位置分析 2、包含风景区…

【UE5 C++课程系列笔记】27——多线程基础——ControlFlow插件的基本使用

目录 步骤 一、搭建基本同步框架 二、添加委托 三、添加蓝图互动框架 四、修改为异步框架 完整代码 通过一个游戏初始化流程的示例来介绍“ControlFlows”的基本使用。 步骤 一、搭建基本同步框架 1. 勾选“ControlFlows”插件 2. 新建一个空白C类&#xff0c;这里…

JavaEE之定时器及自我实现

在生活当中&#xff0c;有很多事情&#xff0c;我们不是立马就去做&#xff0c;而是在规定了时间之后&#xff0c;在到该时间时&#xff0c;再去执行&#xff0c;比如&#xff1a;闹钟、定时关机等等&#xff0c;在程序的世界中&#xff0c;有些代码也不是立刻执行&#xff0c;…

国产3D CAD将逐步取代国外软件

在工业软件的关键领域&#xff0c;计算机辅助设计&#xff08;CAD&#xff09;软件对于制造业的重要性不言而喻。近年来&#xff0c;国产 CAD 的发展态势迅猛&#xff0c;展现出巨大的潜力与机遇&#xff0c;正逐步改变着 CAD 市场长期由国外软件主导的格局。 国产CAD发展现状 …

linux:文件的创建/删除/复制/移动/查看/查找/权限/类型/压缩/打包

关于文件的关键词 创建 touch 删除 rm 复制 cp 权限 chmod 移动 mv 查看内容 cat(全部); head(前10行); tail(末尾10行); more,less 查找 find 压缩 gzip ; bzip 打包 tar 编辑 sed 创建文件 格式&#xff1a; touch 文件名 删除文件 复制文件 移动文件 查看文…

数据结构C语言描述11(图文结合)--二叉搜索树(BST树)的实现(数据采用KV存储形式进行封装)

前言 这个专栏将会用纯C实现常用的数据结构和简单的算法&#xff1b;有C基础即可跟着学习&#xff0c;代码均可运行&#xff1b;准备考研的也可跟着写&#xff0c;个人感觉&#xff0c;如果时间充裕&#xff0c;手写一遍比看书、刷题管用很多&#xff0c;这也是本人采用纯C语言…

Chrome_60.0.3112.113_x64 单文件版 下载

单文件&#xff0c;免安装&#xff0c;直接用~ Google Chrome, 免費下載. Google Chrome 60.0.3112.113: Chrome 是 Google 開發的網路瀏覽器。它的特點是速度快,功能多。 下载地址: https://blog.s3.sh.cn/thread-150-1-1.htmlhttps://blog.s3.sh.cn/thread-150-1-1.html

概率论与数理统计总复习

复习课本&#xff1a;中科大使用的教辅《概率论和数理统计》缪柏其、张伟平版本 目录 0.部分积分公式 1.容斥原理 2.条件概率 3.全概率公式 4.贝叶斯公式 5.独立性 6.伯努利分布&#xff08;两点分布&#xff09; 7.二项分布 8.帕斯卡分布&#xff08;负二项分布&am…

【线性代数】通俗理解特征向量与特征值

这一块在线性代数中属于重点且较难理解的内容&#xff0c;下面仅个人学习过程中的体会&#xff0c;错误之处欢迎指出&#xff0c;有更简洁易懂的理解方式也欢迎留言学习。 文章目录 概念计算几何直观理解意义PS.适用 概念 矩阵本身就是一个线性变换&#xff0c;对一个空间中的…

IDEA中创建maven项目

1. IDEA中创建maven项目 在IDEA中创建Maven项目&#xff0c;前提是已经安装配置好Maven环境。如还未配置安装Maven的&#xff0c;请先下载安装。如何下载安装&#xff0c;可参考我另外篇文章&#xff1a;maven的下载与安装教程本篇教程是以创建基于servlet的JavaWeb项目为例子&…

windows记事本不显示下划线

问题已解决 问题复现 解决方法 原因特定情况下默认的字体大小会导致下划线不可见&#xff0c;只需crtl加号的快捷键或者ctrl前或者后滚动鼠标滚轮以改变字体大小即可