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

逻辑回归 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)(0,1)(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)代表输入xx 属于类别 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) 之间,使其可以解释为概率。
  • 逻辑回归使用交叉熵损失进行优化,而线性回归使用最小二乘法
  • 在分类任务中,不能使用线性回归,否则会导致结果不可解释。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

构建智能 SQL 查询代理agent,把整个查询过程模块化,既能自动判断使用哪些表,又能自动生成 SQL 语句,最终返回查询结果

示例代码&#xff1a; import os import getpass from dotenv import load_dotenv from pyprojroot import here from typing import List from pprint import pprint from pydantic import BaseModel from langchain_core.tools import tool from langchain_core.runnables i…

fastapi中的patch请求

目录 示例测试使用 curl 访问&#xff1a;使用 requests 访问&#xff1a;预期返回&#xff1a; 浏览器访问 示例 下面是一个使用 app.patch("") 的 FastAPI 示例&#xff0c;该示例实现了一个简单的用户信息更新 API。我们使用 pydantic 定义数据模型&#xff0c;并…

【文献阅读】Collective Decision for Open Set Recognition

基本信息 文献名称&#xff1a;Collective Decision for Open Set Recognition 出版期刊&#xff1a;IEEE TRANSACTIONS ON KNOWLEDGE AND DATA ENGINEERING 发表日期&#xff1a;04 March 2020 作者&#xff1a;Chuanxing Geng and Songcan Chen 摘要 在开集识别&#xff0…

Hadoop之02:MR-图解

1、不是所有的MR都适合combine 1.1、map端统计出了不同班级的每个学生的年龄 如&#xff1a;(class1, 14)表示class1班的一个学生的年龄是14岁。 第一个map任务&#xff1a; class1 14 class1 15 class1 16 class2 10第二个map任务&#xff1a; class1 16 class2 10 class…

代码随想录Day23 | 39.组合总和、40.组合总和II、131.分割回文串

39.组合总和 自己写的代码&#xff1a; class Solution { public:vector<int> path;vector<vector<int>> res;int sum0;void backtracking(vector<int>& candidates,int target,int startIndex){if(sum>target) return;if(sumtarget){res.pus…

【MySQL】索引(页目录、B+树)

文章目录 1. 引入索引2. MySQL与磁盘交互的基本单位3. 索引的理解3.1 页目录3.2 B树 4. 聚簇索引、非聚簇索引5. 索引的操作5.1 索引的创建5.1.1 创建主键索引5.1.2 创建唯一索引5.1.3 普通索引的创建5.1.4 全文索引的创建 5.2 索引的查询5.3 删除索引 1. 引入索引 索引&#…

132. 分割回文串 II

简单分析 输入的参数是字符串s&#xff0c;返回值是最小的切割次数。那这个问题的典型解法应该是动态规划&#xff0c;因为我们需要找最优解&#xff0c;而每一步的选择可能会影响后面的结果&#xff0c;但可以通过子问题的最优解来构建整体最优解。 那么动态规划的状态如何定…

CSS定位详解

1. 相对定位 1.1 如何设置相对定位&#xff1f; 给元素设置 position:relative 即可实现相对定位。 可以使用 left 、 right 、 top 、 bottom 四个属性调整位置。 1.2 相对定位的参考点在哪里&#xff1f; 相对自己原来的位置 1.3 相对定位的特点&#xff1…

NLP11-命名实体识别(NER)概述

目录 一、序列标注任务 常见子任务 二、 命名实体识别&#xff08;NER&#xff09; &#xff08;一&#xff09;简介 &#xff08;二&#xff09;目标 &#xff08;三&#xff09;应用场景 &#xff08;四&#xff09;基本方法 &#xff08;五&#xff09;工具与资源 一…

基于SQL数据库的酒店管理系统

一、数据库设计 1&#xff0e;需求分析 客房的预定&#xff1a;可以通过网络进行预定&#xff0c;预定修改&#xff0c;取消预订。 客房管理&#xff1a;预定管理、客房查询、设置房态、开房、换房、续住、退房等管理。 员工管理: 员工修改信息、人员调配。 账务管理&…

2024年中国城市统计年鉴(PDF+excel)

2024年中国城市统计年鉴&#xff08;PDFexcel&#xff09; 说明&#xff1a;包括地级县级市 格式&#xff1a;PDFEXCEL 《中国城市统计年鉴》是一部全面反映中国城市发展状况的官方统计出版物&#xff0c;包括各级城市的详细统计数据。这部年鉴自1985年开始出版&#xff0c;…

1.C语言初识

C语言初识 C语言初识基础知识hello world数据类型变量、常量变量命名变量分类变量的使用变量的作用域 常量字符字符串转义字符 选择语句循环语句 函数&#xff1b;数组函数数组数组下标 操作符操作符算术操作符移位操作符、位操作符赋值操作符单目操作符关系操作符逻辑操作符条…

LINUX基础 - 网络基础 [一]

前言 在当今的数字化世界中&#xff0c;网络已成为计算机系统和应用的核心组成部分。Linux&#xff0c;作为一个开放源代码的操作系统&#xff0c;在服务器、嵌入式设备、以及开发环境中被广泛使用&#xff0c;而其强大的网络能力使其在网络管理和网络编程领域占据了重要地位。…

苹果廉价机型 iPhone 16e 影像系统深度解析

【人像拍摄差异】 尽管iPhone 16e支持后期焦点调整功能&#xff0c;但用户无法像iPhone 16系列那样通过点击屏幕实时切换拍摄主体。前置摄像头同样缺失人像深度控制功能&#xff0c;不过TrueTone原彩闪光灯系统在前后摄均有保留。 很多人都高估了 iPhone 的安全性&#xff0c;查…

游戏引擎学习第128天

开始 然而&#xff0c;我们仍然有一些工作要做&#xff0c;渲染部分并没有完全完成。虽然现在已经能够运行游戏&#xff0c;而且帧率已经可以接受&#xff0c;但仍然有一些东西需要进一步完善。正在使用调试构建编译版本&#xff0c;虽然调试版本的性能不如优化版本&#xff0…

几个api

几个api 原型链 可以阅读此文 Function instanceof Object // true Object instanceof Function // true Object.prototype.isPrototypeOf(Function) // true Function.prototype.isPrototypeOf(Object) // true Object.__proto__ Function.prototype // true Function.pro…

用DeepSeeker + AI app工具自动生成 APP代码

作为上海嘉冰信息技术有限公司创始人&#xff0c;我想做一个AI美食点评类APP&#xff0c;用户可以上传自己的美食图片并生成相应的AI美食点评&#xff0c;可以帮我详细描述一下这个APP&#xff0c;用于方便我的企业B端客户开拓本地生活的内容市场。 AI美食点评APP&#xff1a;开…

布署elfk-准备工作

建议申请5台机器部署elfk&#xff1a; filebeat(每台app)--> logstash(2台keepalived)--> elasticsearch(3台)--> kibana(部署es上)采集输出 处理转发 分布式存储 展示 ELK中文社区: 搜索客&#xff0c;搜索人自己的社区 官方…

利用PyQt简单的实现一个机器人的关节JOG界面

在上一篇文章中如何在Python用Plot画出一个简单的机器人模型&#xff0c;我们介绍了如何在Python中画出一个简单的机器人3D模型&#xff0c;但是有的时候我们需要通过界面去控制机器人每一个轴的转动&#xff0c;并实时的显示出当前机器人的关节位置和末端笛卡尔位姿。 那么要实…

制造业中的“大数据”:如何实现精准决策?

在当今全球经济竞争日趋激烈、技术变革周期不断缩短的环境下&#xff0c;制造业面临着全新的挑战和机遇。随着信息技术的飞速发展&#xff0c;“大数据”正以前所未有的速度渗透到制造业的各个环节&#xff0c;帮助企业实现更精准的决策、更灵活的生产组织以及更敏捷的市场响应…