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

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

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

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

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

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

输入特征 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
相关推荐
HugoStudio_SWAN1 小时前
洛谷 P1420 / P1179 / B4262 最长连号、数字统计与词频统计——统计的三种面孔
c++·学习·程序人生·算法
青 春 记 忆2 小时前
LeetCode 350. 两个数组的交集 II|Python 解法详解
python·算法·leetcode
阳明山水3 小时前
销量预测2025—2026:从模型竞赛到系统融合的范式转型
人工智能·深度学习·算法·机器学习·架构
桐盛科技3 小时前
拒绝“漂绿”风险:基于边缘计算的碳排放数据清洗算法与实时校验逻辑
人工智能·算法·边缘计算
Tongzhi20264 小时前
通芝科技考勤软件三大发展趋势:AI大模型、无感识别与数据底座
大数据·科技·算法·爬山算法
eBest数字化转型方案4 小时前
Route Optimization for FMCG:多目标排线算法的工程实现
大数据·人工智能·算法
residual_fan5 小时前
持续对比强化学习(Continual Contrastive Reinforcement Learning)论文分享
人工智能·算法·数据挖掘·数据分析
s_w.h5 小时前
【 计网 】序列化与反序列化
linux·服务器·网络·算法·bash
信奥卷王5 小时前
2025年09月GESPC++五级真题解析(含视频)
算法
白狐_7985 小时前
408 数据结构|外部排序:流程与 k 路归并
数据结构·算法