【漫话机器学习系列】113.逻辑回归(Logistic Regression) VS 线性回归(Linear Regression)

news2025/4/8 2:49:57

逻辑回归 vs 线性回归:详解对比

在机器学习和统计学中,逻辑回归(Logistic Regression)线性回归(Linear Regression) 都是非常常见的模型。尽管它们的数学表达式有一定的相似性,但它们的应用场景和目标却完全不同。本篇文章将详细对比两者的区别,并深入解析逻辑回归的数学原理。


1. 线性回归的基本概念

1.1 线性回归的数学表达

线性回归是一种监督学习算法,主要用于回归任务,即预测一个连续值。它的数学表达如下:

y = b_0 + b_1 x_1 + b_2 x_2 + \dots + b_k x_k + \epsilon

其中:

  • y 是目标变量(预测值)。
  • x_1, x_2, ..., x_k​ 是输入特征(自变量)。
  • b_0​ 是截距(bias)。
  • b_1, b_2, ..., b_k​ 是回归系数(权重)。
  • ϵ 是误差项。

1.2 线性回归的应用场景

  • 预测房价(根据面积、位置、房龄等因素)。
  • 预测股票价格(根据市场数据)。
  • 预测员工工资(根据经验、教育背景等)。

1.3 线性回归的目标

线性回归的目标是找到最优参数 b_0, b_1, ..., b_k​,使得预测值 \hat{y} 尽可能接近真实值 y。最常用的方法是最小二乘法(OLS, Ordinary Least Squares),即最小化均方误差(MSE):

MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y_i})^2


2. 逻辑回归的基本概念

逻辑回归主要用于分类任务,特别是二分类问题。它的核心思想是使用Sigmoid 函数(S 形函数)将线性回归的结果映射到 (0,1) 之间,进而输出概率值

2.1 逻辑回归的数学表达

逻辑回归的公式如下:

P(y=1 | x) = \frac{1}{1 + e^{-(b_0 + b_1 x_1 + ... + b_k x_k)}}

其中:

  • P(y=1 | x)代表输入x 属于类别 y=1 的概率
  • e 是自然对数的底数(约 2.718)。
  • b_0, b_1, ..., b_k​ 是模型参数。

这就是 Sigmoid 函数

\sigma(z) = \frac{1}{1 + e^{-z}}

Sigmoid 函数的作用是将输入值压缩到 (0,1) 之间,使其可以解释为概率。如下图所示,Sigmoid 函数的曲线呈现 S 形:

当:

  • z → +∞,σ(z) → 1(高概率)。
  • z → −∞,σ(z) → 0(低概率)。
  • z = 0z = 0,σ(0) = 0.5。

2.2 逻辑回归的目标

逻辑回归的目标是最大化似然函数(Maximum Likelihood Estimation, MLE),即找到最优的参数 b_0, b_1, ..., b_k​,使得训练数据的分类概率最大。

其损失函数为交叉熵损失(Cross Entropy Loss)

L = - \sum_{i=1}^{n} \left[ y_i \log P(y_i | x_i) + (1 - y_i) \log (1 - P(y_i | x_i)) \right]

这个损失函数衡量了模型预测的概率与真实标签之间的差距。


3. 逻辑回归 vs 线性回归

下表总结了两者的主要区别:

对比项线性回归(Linear Regression)逻辑回归(Logistic Regression)
目标任务回归(Regression)分类(Classification)
输出值任何实数(0,1)(0,1)(0,1) 概率
函数形式线性函数 y = b_0 + b_1 xSigmoid 函数 P(y=1) = \frac{1}{1 + e^{-z}}
损失函数均方误差(MSE)交叉熵损失(Cross Entropy)
优化方法最小二乘法(OLS)或梯度下降最大似然估计(MLE)+梯度下降
应用场景预测房价、股票、销量等预测疾病、垃圾邮件、信用违约等
分类能力不能分类可以用于二分类问题

4. 为什么不能用线性回归做分类?

4.1 线性回归的输出不受限制

假设我们使用线性回归来做二分类:

y = b_0 + b_1 x_1 + ... + b_k x_k

然后我们使用一个阈值来分类,例如:

  • y ≥ 0.5y 则预测为 1。
  • y < 0.5y 则预测为 0。

但是,线性回归的输出范围是 (-∞, +∞),没有界限,而概率应该在 (0,1) 之间

4.2 线性回归对异常值敏感

如果数据集中有一个异常值,比如 x 远大于其他样本,线性回归可能会预测 y 远大于 1,这与概率的定义不符。

4.3 线性回归无法拟合 S 形决策边界

许多分类问题的数据分布是非线性的,而逻辑回归的 Sigmoid 函数可以拟合S 形决策边界,但线性回归不能。


5. Python 代码示例

5.1 线性回归示例

from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
import numpy as np

# 生成回归数据
X, y = make_regression(n_samples=100, n_features=1, noise=10, random_state=42)

# 训练线性回归模型
model = LinearRegression()
model.fit(X, y)

# 预测
y_pred = model.predict(X)

5.2 逻辑回归示例

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

# 生成分类数据
X, y = make_classification(n_samples=100, n_features=2, random_state=42)

# 训练逻辑回归模型
model = LogisticRegression()
model.fit(X, y)

# 预测
y_pred = model.predict(X)

6. 结论

  • 线性回归用于回归问题,逻辑回归用于分类问题
  • 逻辑回归通过Sigmoid 函数将输出映射到 (0,1) 之间,使其可以解释为概率。
  • 逻辑回归使用交叉熵损失进行优化,而线性回归使用最小二乘法
  • 在分类任务中,不能使用线性回归,否则会导致结果不可解释。

逻辑回归虽然简单,但在分类问题中仍然是一个强大的基线模型,并且具有很好的可解释性。

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

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

相关文章

Redis---缓存穿透,雪崩,击穿

文章目录 缓存穿透什么是缓存穿透&#xff1f;缓存穿透情况的处理流程是怎样的&#xff1f;缓存穿透的解决办法缓存无效 key布隆过滤器 缓存雪崩什么是缓存雪崩&#xff1f;缓存雪崩的解决办法 缓存击穿什么是缓存击穿&#xff1f;缓存击穿的解决办法 区别对比 在如今的开发中&…

Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking

一.Skywalking介绍 Apache SkyWalking是一个开源的分布式追踪与性能监视平台&#xff0c;特别适用于微服务架构、云原生环境以及基于容器&#xff08;如Docker、Kubernetes&#xff09;的应用部署。该项目由吴晟发起&#xff0c;并已加入Apache软件基金会的孵化器&#xff0c;…

Thonny+MicroPython+ESP32开发环境搭建

1、下载&安装Thonny 安装成功后&#xff0c;会在桌面生成快捷键 双击快捷键&#xff0c;打开程序&#xff0c;界面如下 2、下载MicroPython 下载地址&#xff1a;MicroPython - Python for microcontrollers v1.19版(推荐&#xff0c;此版本稳定)&#xff1a; https://do…

数据结构:反射 和 枚举

目录 一、反射 1、定义 2、反射相关的类 3、Class类 &#xff08;2&#xff09;常用获得类中属性相关的方法&#xff1a; &#xff08;3&#xff09;获得类中注解相关的方法&#xff1a; &#xff08;4&#xff09;获得类中构造器相关的方法&#xff1a; &#xff08;…

前缀和算法 算法4

算法题中帮助复习的知识 vector<int > dp( n ,k); n为数组大小 ,k为初始化 哈希表unordered_map<int ,int > hash; hash.find(k)返回值是迭代器 ,找到k返回其迭代器 没找到返回hash.end() hash.count(k)返回值是数字 ,找到k返回1 ,没找到返回0. C和java中 负数…

USRP7440-通用软件无线电平台

1、产品描述 USRP7440基于第三代XILINX Zynq UltraScale RFSoC架构&#xff0c;它将射频ADC、DAC、ARM、FPGA等集成一体&#xff0c;瞬时带宽可以达到2.5GHz&#xff0c;尤其适合于射频直采应用&#xff0c;比如通信与雷达。 第一代RFSOC高达4GHz • 8x 或 16x 6.554GSPS DAC…

yunedit-post ,api测试比postman更好

postman应该是大家最熟悉的api测试软件了&#xff0c;但是由于它是外国软件&#xff0c;使用它的高端功能注册和缴费都比较麻烦。生成在线文档分享也经常无法访问被拦截掉。 这里可以推荐一下yunedit-post&#xff0c;该有的功能都有。 https://www.yunedit.com/postdetail …

移动零

一 &#xff1a;题目 二&#xff1a;思路 双指针法&#xff1a; 两个指针将数组划分成三个部分&#xff1a; 解释&#xff1a; ①&#xff1a;所以一开始dest要等于-1&#xff0c;因为没有非零的元素&#xff0c;cur0&#xff0c;因为要从头开始遍历数组 ②&#xff1a;cur为…

MySQL整体架构

目录 1 客户端 2 服务端 2.1 Server层 2.1.1 连接器 2.1.2 查询缓存 2.1.3 词法器 2.1.4 优化器 2.1.5 执行器 2.2 存储引擎层 1 客户端 ● 客户端为连接MySQL服务端的工具或者驱动&#xff0c;比如JDCB&#xff0c;ODBC等等 ● 用于连接目前服务器&#xff0c;并且发送需要执行…

Linux之yum详解

—— 小 峰 编 程 目录 1、Linux软件的安装方式 2、什么是yum 3、配置网络yum源 4、yum命令 【语法】 【yum常用命令】 1、Linux软件的安装方式 在CentOS系统中&#xff0c;软件管理方式通常有三种方式&#xff1a; rpm安装 、 yum安装 以及 编译安装 。 2、什么是yum…

鸿蒙启动页开发

鸿蒙启动页开发 1.1 更改应用名称和图标 1.更改应用图标 找到moudle.json5文件&#xff0c;找到应用启动的EntryAbility下面的icon,将原来的图标改成自己设置的即可 2.更改应用名称 3.效果展示 2.1 广告页面开发 3.1 详细介绍 3.1.1 启动页面 import { PrivacyDialog } fr…

记忆化搜索(典型算法思想)—— OJ例题算法解析思路

目录 一、509. 斐波那契数 - 力扣&#xff08;LeetCode&#xff09; 算法代码&#xff1a; 1. 动态规划 (fib 函数) 初始化&#xff1a; 递推计算&#xff1a; 返回结果&#xff1a; 2. 记忆化搜索 (dfs 函数) 备忘录初始化&#xff1a; 递归终止条件&#xff1a; 递…

Day11,Hot100(贪心算法)

贪心 &#xff08;1&#xff09;121. 买卖股票的最佳时机 第 i 天卖出的最大利润&#xff0c;即在前面最低价的时候买入 class Solution:def maxProfit(self, prices: List[int]) -> int:min_price prices[0]ans 0for price in prices:ans max(ans, price - min_price…

翻译: 深入分析LLMs like ChatGPT 一

大家好&#xff0c;我想做这个视频已经有一段时间了。这是一个全面但面向普通观众的介绍&#xff0c;介绍像ChatGPT这样的大型语言模型。我希望通过这个视频让大家对这种工具的工作原理有一些概念性的理解。 首先&#xff0c;我们来谈谈你在这个文本框里输入内容并点击回车后背…

《白帽子讲 Web 安全》之移动 Web 安全

目录 摘要 一、WebView 简介 二、WebView 对外暴露 WebView 对外暴露的接口风险 三、通用型 XSS - Universal XSS 介绍 四、WebView 跨域访问 五、与本地代码交互 js 5.1接口暴露风险&#xff1a; 5.2漏洞利用&#xff1a; 5.3JavaScript 与 Native 代码通信 六、Chr…

解锁 indexOf、substring 和 JSON.stringify:从小程序图片上传看字符串魔法 ✨

&#x1f31f; 解锁 indexOf、substring 和 JSON.stringify&#xff1a;从小程序图片上传看字符串魔法 ✨ 在 JavaScript 中&#xff0c;字符串操作和数据序列化是开发中不可或缺的技能。indexOf、substring 和 JSON.stringify 是三个简单却强大的工具&#xff0c;分别用于定位…

常用的AI文本大语言模型汇总

AI文本【大语言模型】 1、文心一言https://yiyan.baidu.com/ 2、海螺问问https://hailuoai.com/ 3、通义千问https://tongyi.aliyun.com/qianwen/ 4、KimiChat https://kimi.moonshot.cn/ 5、ChatGPThttps://chatgpt.com/ 6、魔塔GPT https://www.modelscope.cn/studios/iic…

DCN讲解

DCN是DeepFM的升级版&#xff0c;后者是只能做二阶交叉特征&#xff0c;随着阶数上升&#xff0c;模型复杂度大幅提高&#xff0c;且FM网络层较浅&#xff0c;表达能力有限。google团队通过构建深度交叉网络来自动进行特征的高阶交叉&#xff0c;且时空复杂度均为线性增长&…

5. Nginx 负载均衡配置案例(附有详细截图说明++)

5. Nginx 负载均衡配置案例(附有详细截图说明) 文章目录 5. Nginx 负载均衡配置案例(附有详细截图说明)1. Nginx 负载均衡 配置实例3. 注意事项和避免的坑4. 文档: Nginx 的 upstream 配置技巧5. 最后&#xff1a; 1. Nginx 负载均衡 配置实例 需求说明/图解 windows 浏览器输…

C++之再识模板template

目录 1.非类型模板参数 2.函数/类模板的特化 3.模板的分离编译 4.总结&#xff1a;模板的优缺点 1. 代码复用性高 2. 类型安全 3. 性能优化 2. 错误信息难以理解 3. 代码膨胀 易错易忽略的语法点&#xff1a; 1. 模板声明和定义分离问题 2. 模板参数推导问题 1.非类…