【算法】逻辑回归虽然名字中有“回归“,但通常用于二分类任务。如何理解学习?

【算法】逻辑回归虽然名字中有"回归",但通常用于二分类任务。如何理解学习?

逻辑回归 = 用"回归"的方法(线性变换)预测"概率"(连续值),然后用概率做"分类"决策。

它叫"回归"是因为核心计算是线性的,但最终目的是分类。这就像"打印机"可以扫描一样------主要功能是打印,但也能做别的事。

一、前言:它输出的是概率 (连续值),但用于分类决策

复制代码
逻辑回归的工作流程:

输入特征 X
    ↓
线性变换: z = w·X + b  ← 这是"回归"部分(输出连续值)
    ↓
Sigmoid函数: p = 1/(1+e^(-z))  ← 将连续值压缩到(0,1)概率区间
    ↓
概率 p ∈ (0,1)  ← 连续值(回归的本质)
    ↓
分类决策: 如果 p > 0.5 则类别1,否则类别0

二、对比理解

模型 输出 用途 为什么叫这个名字
线性回归 任意实数 (-∞, +∞) 预测连续值(房价、温度) 真的是回归
逻辑回归 概率 (0, 1) 二分类(是/否) 用回归方法解决分类问题

三、Sigmoid函数是桥梁

python 复制代码
import numpy as np
import matplotlib.pyplot as plt

def sigmoid(z):
    """Sigmoid函数:将任意实数映射到(0,1)"""
    return 1 / (1 + np.exp(-z))

# 示例
z_values = np.array([-5, -2, 0, 2, 5])
p_values = sigmoid(z_values)

print("线性输出 z → 概率 p")
for z, p in zip(z_values, p_values):
    print(f"z = {z:2d} → p = {p:.4f} → 预测类别: {1 if p > 0.5 else 0}")

输出:

复制代码
z = -5 → p = 0.0067 → 预测类别: 0
z = -2 → p = 0.1192 → 预测类别: 0
z =  0 → p = 0.5000 → 预测类别: 0/1(边界)
z =  2 → p = 0.8808 → 预测类别: 1
z =  5 → p = 0.9933 → 预测类别: 1

四、形象理解

复制代码
线性回归:预测"明天温度是多少度" → 25.3°C(连续值)

逻辑回归:预测"明天会下雨吗" 
         → 先计算"下雨概率" = 0.75(连续值,回归部分)
         → 再决策:0.75 > 0.5 → 会下雨(分类结果)

五、 为什么不用线性回归直接做分类?

python 复制代码
# 问题:线性回归输出范围是(-∞, +∞)
# 但概率必须在(0, 1)之间!

# 错误做法(线性回归直接分类)
def bad_classification(x):
    y = 2 * x - 3  # 线性输出
    # y可能是负数或大于1,无法解释为概率!
    return 1 if y > 0.5 else 0

# 正确做法(逻辑回归)
def good_classification(x):
    z = 2 * x - 3   # 线性部分
    p = sigmoid(z)  # 压缩到(0,1)
    # p一定是有效的概率值!
    return 1 if p > 0.5 else 0

六、损失函数也不同

模型 损失函数 原因
线性回归 MSE (均方误差) 预测值与真实值的差距
逻辑回归 交叉熵损失 (Cross-Entropy) 衡量概率分布的差异
python 复制代码
# 逻辑回归的损失函数
def cross_entropy_loss(y_true, y_pred_prob):
    """
    y_true: 真实标签 (0 或 1)
    y_pred_prob: 预测概率 (0~1之间)
    """
    # 当 y=1 时,希望预测概率接近1
    # 当 y=0 时,希望预测概率接近0
    loss = - (y_true * np.log(y_pred_prob) + 
              (1 - y_true) * np.log(1 - y_pred_prob))
    return loss

# 示例
print(cross_entropy_loss(1, 0.9))   # 预测正确,损失小: 0.105
print(cross_entropy_loss(1, 0.1))   # 预测错误,损失大: 2.303
相关推荐
gCode Teacher 格码致知1 小时前
Python教学:十六进制编码的显示方法-由Deepseek产生
开发语言·python·算法
05候补工程师1 小时前
【408数据结构】核心考点:图(Graph)精炼笔记与算法直觉
数据结构·经验分享·笔记·考研·算法·图论
靠沿1 小时前
【动态规划算法】专题三——简单多状态dp问题
算法·动态规划
吃好睡好便好1 小时前
矩阵秩的计算
人工智能·学习·线性代数·算法·机器学习·matlab·矩阵
计算机安禾1 小时前
【算法分析与设计】第35篇:后缀数据结构:后缀树与后缀数组的构造
大数据·人工智能·算法·机器学习·剪枝
计算机安禾1 小时前
【算法分析与设计】第38篇:最近点对与分治在几何中的应用
java·服务器·网络·数据库·算法
weixin_468466851 小时前
深度学习损失函数新手实战指南
人工智能·python·深度学习·算法·机器学习·ai
yzq1991271 小时前
语言在嵌入式系统中实现面向对象编程的实践与探索
算法
重生之我是Java开发战士1 小时前
【贪心算法】整数替换,俄罗斯套娃信封问题,可被三整除的最大和,距离相等的条形码,重构字符串
算法·贪心算法