news 2026/5/21 18:56:07

下面是一篇偏技术博客风格、但尽量通俗、好懂的逻辑回归讲解文章,你可以直接当作学习笔记或发布用草稿 ✅一文搞懂逻辑回归(Logistic Regression)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
下面是一篇偏技术博客风格、但尽量通俗、好懂的逻辑回归讲解文章,你可以直接当作学习笔记或发布用草稿 ✅一文搞懂逻辑回归(Logistic Regression)

关键词:分类算法、Sigmoid、概率、线性决策边界


一、为什么会有逻辑回归?

我们先从直觉说起。

假如你想用程序判断:

  • 这封邮件是不是垃圾邮件?

  • 这个用户会不会流失?

  • 这笔交易有没有欺诈风险?

这些问题都有一个共同点:

👉结果只有两类:是 / 否

你可能第一反应是:

用线性回归行不行?

答案是:不太行

因为线性回归的输出是:

y=wTx+b

它的范围是负无穷到正无穷

而我们想要的是一个0~1 之间的概率值

于是,逻辑回归就登场了。


二、逻辑回归的核心思想

逻辑回归的思路非常简单,只有两步:

1️⃣ 先用线性回归算一个“分数”

2️⃣ 再用一个函数把这个分数“压扁”到 0~1

这个函数就是——Sigmoid 函数


三、Sigmoid:把一切变成概率

Sigmoid 函数的公式是:

σ(z)=1+e−z1​

它的图像长这样(想象一下):

1 ──────────────╮ │ 0.5 │ │ 0 ──────────────╯

特点很关键:

  • 输入越大,输出越接近 1

  • 输入越小,输出越接近 0

  • 中间是平滑的 S 形曲线


四、逻辑回归的完整公式

设:

z=w1​x1​+w2​x2​+⋯+wn​xn​+b

那么逻辑回归模型就是:

这里的含义是:

在给定特征 x 的情况下,样本属于“正类”的概率

例如:

  • y^​=0.92→ 92% 可能是垃圾邮件

  • y^​=0.03→ 几乎不是垃圾邮件


五、怎么分类?

逻辑回归本身输出的是概率,

分类规则通常是人为设定的

如果 ŷ ≥ 0.5 → 类别 1 如果 ŷ < 0.5 → 类别 0

对应回 z:

wᵀx + b ≥ 0 → 类别 1 wᵀx + b < 0 → 类别 0

👉 这说明:逻辑回归的决策边界是线性的

(这是面试和考试高频点)


六、逻辑回归是怎么学习的?

逻辑回归不用“最小二乘法”,

而是用极大似然估计​ 或交叉熵损失

直观理解就是:

  • 预测对了 → 惩罚很小

  • 预测错了 → 惩罚很大

  • 错得离谱 → 惩罚爆炸式增长

然后通过梯度下降不断调整参数。


七、逻辑回归有什么优点?

输出概率,可解释性强

训练速度快,计算简单

不容易过拟合(参数少)

工业界非常常用

很多真实系统中:

  • 信用评分

  • 广告点击率预估

  • 风控系统

底层都有逻辑回归的身影。


八、逻辑回归的局限性

❌ 只能处理线性可分问题

❌ 对特征工程依赖较大

❌ 多分类需要扩展(Softmax)

但话说回来:

在工业界,“简单可靠”往往比“复杂炫酷”更重要


九、一句话总结

逻辑回归 = 线性回归 + Sigmoid,用来解决二分类问题,输出概率,用 0.5 作为分类阈值,决策边界是线性的。


十、从零实现一个逻辑回归(NumPy 版)

不调 sklearn,从 0 手写一个逻辑回归,并真正理解它在做什么

关键词:Sigmoid、交叉熵、梯度下降、纯 NumPy


10.1 我们要做什么?

我们要用Python + NumPy​ 实现:

  • Sigmoid 函数

  • 损失函数(交叉熵)

  • 梯度下降

  • 预测函数

最终能用它来做二分类任务

⚠️ 全程不依赖 sklearn 的LogisticRegression


10.2 逻辑回归的数学回顾(极简版)

逻辑回归的核心公式:

y^​=σ(wTx+b)

其中:

σ(z)=1+e−z1​

损失函数(交叉熵):

L=−N1​∑[ylog(y^​)+(1−y)log(1−y^​)]

梯度(记住结论即可):

∂w∂L​=N1​XT(y^​−y)
∂b∂L​=N1​∑(y^​−y)

10.3 准备数据(造一点简单数据)

我们用一个线性可分的小数据集

import numpy as np # 特征 X = np.array([ [1.0, 2.0], [2.0, 1.0], [2.0, 3.0], [3.0, 2.0], ]) # 标签(0 或 1) y = np.array([0, 0, 1, 1])

10.4 Step 1:实现 Sigmoid

def sigmoid(z): return 1 / (1 + np.exp(-z))

✅ 把任意实数压缩到 (0, 1)

✅ 这就是“概率”的来源


10.5 Step 2:初始化参数

def initialize_parameters(n_features): w = np.zeros(n_features) b = 0.0 return w, b

一开始什么都不懂,权重全设为 0。


10.6 Step 3:前向传播(预测概率)

def forward(X, w, b): z = np.dot(X, w) + b y_hat = sigmoid(z) return y_hat

这里得到的y_hat就是:

每个样本属于类别 1 的概率


10.7 Step 4:计算损失(交叉熵)

def compute_loss(y, y_hat): m = y.shape[0] loss = -np.mean( y * np.log(y_hat + 1e-8) + (1 - y) * np.log(1 - y_hat + 1e-8) ) return loss

✅ 加1e-8是为了防止 log(0)

✅ 损失越小,说明预测越准


10.8 Step 5:反向传播(算梯度)

def backward(X, y, y_hat): m = X.shape[0] dw = (1/m) * np.dot(X.T, (y_hat - y)) db = (1/m) * np.sum(y_hat - y) return dw, db

这一步是逻辑回归的灵魂 👑

👉梯度告诉参数该怎么改


10.9 Step 6:梯度下降更新参数

def update_parameters(w, b, dw, db, lr=0.1): w = w - lr * dw b = b - lr * db return w, b
  • lr是学习率

  • 梯度下降的本质就是:

    沿着损失下降最快的方向走一步


10.10 Step 7:训练逻辑回归

def train(X, y, epochs=1000, lr=0.1): w, b = initialize_parameters(X.shape[1]) for i in range(epochs): y_hat = forward(X, w, b) loss = compute_loss(y, y_hat) dw, db = backward(X, y, y_hat) w, b = update_parameters(w, b, dw, db, lr) if i % 200 == 0: print(f"Epoch {i}, Loss: {loss:.4f}") return w, b

10.11 Step 8:用训练好的模型做预测

def predict(X, w, b, threshold=0.5): y_hat = forward(X, w, b) return (y_hat >= threshold).astype(int)

10.12 跑起来!

w, b = train(X, y) y_pred = predict(X, w, b) print("预测结果:", y_pred) print("真实标签:", y)

你会看到:

✅ 损失在不断下降

✅ 预测结果越来越准


10.13 这段代码说明了什么?

  • 逻辑回归并不神秘

  • 本质就是:

    • 线性加权

    • Sigmoid

    • 交叉熵

    • 梯度下降

所谓“算法工程师”,很多时候就是在写这些循环。

最终总结:逻辑回归 = 线性模型 + Sigmoid + 交叉熵 + 梯度下降

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/21 18:54:06

新手教程使用Python和Taotoken调用GPT模型生成内容

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 新手教程使用Python和Taotoken调用GPT模型生成内容 本文面向刚开始接触AI应用开发的程序员&#xff0c;介绍如何通过Taotoken平台&…

作者头像 李华
网站建设 2026/5/21 18:51:38

移动端开发(iOS/Android)简历:上架项目 + 性能优化亮点

前言:为什么你的简历石沉大海?—— 移动端开发者的血泪真相 “投了30家,回复0条”“明明会iOS和Android,却连面试都拿不到”“项目写了3页,HR说没看到亮点”—— 如果你是移动端开发者,大概率踩过这些坑。 真相扎心但实用:HR筛选简历平均只用6秒,ATS系统(自动筛选工…

作者头像 李华
网站建设 2026/5/21 18:50:02

奖励分数越高,模型越烂?斯坦福这篇论文找到了破解之法

一篇刚刚挂在arXiv上的论文&#xff0c;正在悄悄戳破大模型对齐领域一个心照不宣的痛点。这篇论文来自斯坦福大学&#xff0c;题为《General Preference Reinforcement Learning》&#xff08;通用偏好强化学习&#xff0c;简称GPRL&#xff09;&#xff0c;作者包括斯坦福大学…

作者头像 李华
网站建设 2026/5/21 18:49:00

【CS336导言】nanoGPT

Andrej Karpathy 的 nanoGPT&#xff0c;本质上是&#xff1a; 一个“极简版 GPT 训练框架”。 项目目标非常直接&#xff1a; 用最少代码&#xff0c;教会你 GPT 到底怎么训练。官方 GitHub&#xff1a; nanoGPT Github 为什么 nanoGPT 很出名 因为以前很多 GPT 教程都有问…

作者头像 李华
网站建设 2026/5/21 18:44:47

【专升本】2026专升本备考资料汇总|各学科资料+必刷2000题+网课+各省真题PDF+模拟卷

【专升本】2026专升本备考资料汇总&#xff5c;各学科资料必刷2000题网课各省真题PDF模拟卷关键词&#xff1a;专升本、2026专升本、专升本备考资料、专升本真题PDF、专升本模拟卷、专升本语文英语高数、各省专升本资料、专升本网课、夸克网盘分享 资料说明&#xff1a;内容由网…

作者头像 李华