MCM520 ← 资料站首页 逻辑回归 · 深度手册 打开交互阅读器 →

逻辑回归 · 深度手册

分类:预测类 | 难度:★★☆ 进阶 | 编号:logistic_reg

一、这是什么(一句话用途)

二分类 / 概率预测(是否违约 / 是否获奖)

二、核心思想

逻辑回归虽叫"回归",实为最经典的二分类算法。它沿用线性回归的线性组合 βTx\beta^T x,但套上一层 sigmoid 函数把任意实数压缩到 (0,1)(0,1),解释为"属于正类的概率"。好处是输出有概率语义、系数可解释(正系数表示该特征增大则正类概率上升),且在样本量大、特征线性关系近似时表现稳健。它是分类问题的首选基线模型。

三、数学原理与推导

对样本 ii,正类概率:

pi=P(yi=1∣xi)=11+e−(β0+βTxi) p_i=P(y_i=1\mid x_i)=\frac{1}{1+e^{-(\beta_0+\beta^T x_i)}}

似然函数 L=∏ipiyi(1−pi)1−yiL=\prod_i p_i^{y_i}(1-p_i)^{1-y_i},对数似然:

ℓ(β)=∑i=1n[yi(β0+βTxi)−ln⁡(1+eβ0+βTxi)] \ell(\beta)=\sum_{i=1}^n\Big[y_i(\beta_0+\beta^T x_i)-\ln\big(1+e^{\beta_0+\beta^T x_i}\big)\Big]

对 β\beta 求梯度:

∂ℓ∂β=∑ixi(yi−pi) \frac{\partial \ell}{\partial\beta}=\sum_i x_i(y_i-p_i)

令梯度为 0(无解析解),用牛顿法(Hessian XTWXX^T W X,WW 为对角权)或梯度上升迭代至收敛。分类阈值常取 0.5,但可依代价敏感调整;评估用 AUC、混淆矩阵。

四、建模 / 求解步骤

  1. 特征编码 / 标准化
  2. 构造 Xβ
  3. sigmoid 得概率 p
  4. 设定阈值(0.5)分类
  5. 评估 AUC / 混淆矩阵

五、关键公式速查

p = 1/(1+e^{−(β0+βX)})

六、典型示例

学生特征 → 获奖概率,用于筛选重点队伍。

完整算例(数字演示,照着算一遍)

场景:根据 年龄/收入 预测 是否购买(0/1),训练 20 样本。

拟合:logit(P)=−4.2+0.08·年龄+0.003·收入。某用户(年龄30,收入8000) → logit=−4.2+2.4+2.4=0.6 → P=1/(1+e^{-0.6})=0.65。

结论:该用户购买概率 65%,超过 0.5 阈值判为购买。

七、Python 实现示例

import os, numpy as np
import pandas as pd
HERE = os.path.dirname(os.path.abspath(__file__))
df = pd.read_csv(os.path.join(HERE,"..","datasets","logistic_reg.csv"))
X = df[["x1","x2"]].to_numpy(dtype=float)
y = df["label"].to_numpy(dtype=float)
X = (X-X.mean(0))/X.std(0)
Xb = np.hstack([np.ones((len(X),1)), X]); w = np.zeros(3)
for _ in range(2000):
    z = 1/(1+np.exp(-Xb@w)); g = Xb.T@(z-y)/len(y); w -= 0.3*g
print("系数:", np.round(w,3))
p = 1/(1+np.exp(-(np.array([1,0.5,-0.3])@w)))
print("某样本获奖概率=%.3f"%p)

配套文件:py_logistic_reg.py(需 numpy / pandas;与下方数据集配套练习)

八、MATLAB 实现示例

%% 逻辑回归(梯度上升)示例(MATLAB/Octave)
df = readtable('..\datasets\logistic_reg.csv');
X = table2array(df(:,1:2)); y = table2array(df(:,3));
X = (X-mean(X,1))./std(X,1); Xb=[ones(height(X),1),X];
w=zeros(3,1);
for i=1:2000
  z=1./(1+exp(-Xb*w)); g=Xb'*(z-y)/length(y); w=w-0.3*g;
end
fprintf('系数: '); disp(w');

配套文件:m_logistic_reg.m(基础 MATLAB / Octave 即可运行)

九、练手数据集(可下载)

2 个特征与二分类标签的 40 组样本。用于逻辑回归训练、求系数与获奖概率。

十、常见误区与避坑清单

  • 需线性可分近似
  • 类别不平衡要调权重
  • 特征标准化

十一、结果怎么解读

系数符号表方向;p 为发生概率。

十二、常与谁搭配

多分类用 softmax / 决策树。

十三、论文写作技巧(怎么把它写进论文)

把 逻辑回归 写进论文,核心不是堆公式,而是讲清「为什么用它、结果怎么呈现、如何对比」三件事。

1. 动机怎么写(为什么用它而不是别的)

先说明你的数据具有时间 / 序列依赖,或需要由已知推断未知,因此采用预测类方法。交代输入特征与预测目标,并说明为何选 逻辑回归(如非线性强、含季节性、小样本等),对比朴素法(如移动平均)点出优势。

2. 结果怎么写(图表与指标)

结果必须给「预测值 vs 真实值」对比曲线 + 误差指标表(MAE / RMSE / MAPE),最好附训练 / 验证分段。若有多个模型,用一张表横向对比误差,突出 逻辑回归 更优。

3. 可直接套用的写作话术

  • 中文模板:针对<问题>,本文采用 逻辑回归 进行二分类 / 概率预测(是否违约 / 是否获奖)。该方法能够自动刻画<优势>,在处理<场景>时相较<对比方法>更具<特点>。
  • 英文模板:To address , we adopt 逻辑回归 to 二分类 / 概率预测(是否违约 / 是否获奖). Benefiting from its ability to , it outperforms on .

4. 同类易踩的写作坑

不可只报 R² 不看外推;时间序列要显式说明训练 / 测试切分方式,避免用未来信息泄漏(look-ahead bias)。

5. 典型论文段落范例(可直接参考 / 改写)

下面是一段可直接套用的论文表述,已按本算法定制,填空处(…)替换成你的真实数值即可。

由于日用电量具有明显的时间依赖与周期波动,本文采用 逻辑回归 对未来 30 天负荷进行预测,以 RMSE=…、MAPE=… 的精度优于 ARIMA 基线,验证了模型对非线性趋势的捕捉能力。

Given the strong temporal dependence and periodic fluctuation of daily load, we employ 逻辑回归 to forecast the next 30 days, achieving RMSE=… and MAPE=… and outperforming the ARIMA baseline, which confirms its strength in capturing nonlinear trends.

十四、相关手册(延伸阅读)

十五、本手册导航


本手册由「算法深度手册生成器」自动产出,配套提供 Python / MATLAB 双版本示例与可下载练手数据集。