逻辑回归与 SVM:分类算法的双子星——线性边界的两种哲学

· 约 4 分钟 ·
本文目录(7 节)

线性回归解决回归,分类世界的两个线性主力是逻辑回归和 SVM。它们都在找一条决策边界,但哲学完全不同:逻辑回归问”属于正类的概率是多少”,SVM 问”哪条边界离两类样本都最远”。理解这个差异,就理解了它们各自的适用场景。

前置阅读:机器学习基础与 Scikit-learn、线性回归(同一套数学语言)。

逻辑回归:把线性输出压成概率

线性模型输出 (−∞,+∞)(-\infty, +\infty) 的实数,sigmoid 函数把它压进 (0,1):

p(y=1∣x)=σ(wTx+b)=11+e−(wTx+b)p(y=1|x) = \sigma(w^Tx + b) = \frac{1}{1 + e^{-(w^Tx + b)}}

训练目标是对数损失(交叉熵),梯度下降求解。输出是真概率——0.7 的含义是”模型认为七成把握”,这让它在需要置信度的场景(风控评分、疾病风险评估)天然有优势。

系数的可解释性是另一个杀手级特性:ewje^{w_j} 就是特征 xjx_j 每增加一个单位、正类几率(odds)翻的倍数。给业务方解释”年龄每大 10 岁风险翻 1.3 倍”,逻辑回归一句话的事。

from sklearn.linear_model import LogisticRegression

lr = LogisticRegression(C=1.0, class_weight="balanced", max_iter=1000)
lr.fit(X_train, y_train)
proba = lr.predict_proba(X_test)[:, 1]     # 真概率,可调阈值

C 是正则强度的倒数:C 小约束强(防过拟合),C 大更信任数据。多分类时逻辑回归用 softmax 自然推广(multinomial),不需要额外技巧。

SVM:只关心最难分的那几个样本

SVM 的目标:找到间隔(margin)最大的分界线——离边界最近的那几个样本叫支持向量,边界完全由它们决定,其余样本怎么动都不影响。这是一个漂亮的性质:模型只被”最难分的样本”定义,对远离边界的离群值天然稳健。

损失是合页损失(hinge loss):分对了且离边界够远就零损失,否则线性惩罚。软间隔参数 C 控制”多容忍误分”:C 大硬(过拟合风险),C 小软(允许一些误分换更宽的间隔)。

from sklearn.svm import SVC, LinearSVC

# 线性 SVM:大数据/高维首选
lin = LinearSVC(C=1.0)
# 核 SVM:中小数据、非线性边界
rbf = SVC(kernel="rbf", C=1.0, gamma="scale", probability=True)

注意 probability=True:SVM 原生不输出概率,开启后用 Platt 缩放额外拟合概率(训练变慢)。要概率的场景,校准包装或直接用逻辑回归更划算。

核技巧:低维不可分,高维可分

数据在原始空间线性不可分时,核技巧把样本隐式映射到高维空间找线性边界——“隐式”意味着不用真的算出高维坐标,只用核函数算内积,计算量不变:

  • RBF(高斯核):默认选择,能逼近任意边界。gamma 控制影响范围:大则每个样本只影响附近(边界弯弯曲曲,易过拟合),小则影响全局(接近线性)。
  • 多项式核:适合特征交互有明确意义的场景,现在用得少。
  • 线性核:就是 LinearSVC,高维稀疏数据(文本)的最优解。

核 SVM 的复杂度随样本数平方增长——几万样本是舒适区上限,百万级别想了,用线性模型或树模型。

怎么选:决策速查

表里的倾向只适合作为起点。同一份数据先固定预处理与验证划分,再比较误差、训练成本和概率输出需求。SVM 的决策分数不是天然校准的概率;需要概率时,应把校准过程也纳入训练数据内部的验证。

场景选择
需要概率输出/可解释系数逻辑回归
高维稀疏文本(TF-IDF)逻辑回归或 LinearSVC,都试
中小数据 + 明显非线性边界RBF 核 SVM
大数据 + 非线性换树模型(集成学习),别硬上核 SVM
类别极不均衡两者都配 class_weight,评估看 PR 曲线

踩坑排查

症状原因处理
SVM 训练几小时没完样本量超核方法上限换 LinearSVC/逻辑回归/树模型
逻辑回归系数巨大没标准化 + 正则弱标准化 + 调 C
RBF-SVM 全预测一类gamma 太小/C 不当网格扫 C 和 gamma(对数刻度)
predict_proba 报错SVM 默认无概率probability=True 或 CalibratedCV
边界对离群点敏感逻辑回归特性清洗离群值;或换 SVM
多分类效果差LinearSVC 用 OvR 策略欠佳逻辑回归 multinomial 或集成

练习

  1. 在 make_moons 数据上对比逻辑回归、LinearSVC、RBF-SVM 的决策边界并画图。
  2. 扫 RBF 核的 C×gamma 网格,画出验证分热力图,标出过拟合区。
  3. 在文本分类任务上对比逻辑回归与 LinearSVC 的宏 F1 和训练耗时。
  4. 用逻辑回归的系数解释 Top 10 特征对正类的贡献方向。

面试常问

Q:逻辑回归和 SVM 的核心区别? 损失与目标不同:逻辑回归优化对数损失、输出概率、所有样本都贡献梯度;SVM 优化合页损失、最大化间隔、只有支持向量决定边界。前者要概率和解释性,后者对远离边界的离群值更稳健。

Q:核技巧的本质? 通过核函数隐式计算高维空间的内积,避免显式映射的计算爆炸,让线性算法获得非线性能力。核矩阵必须半正定(Mercer 条件)。

Q:逻辑回归为什么对特征尺度敏感? 模型本身不敏感(系数自适应),但正则项按系数大小惩罚——尺度大的特征系数天然小、受罚轻,等于被偏袒。所以正则化逻辑回归前必须标准化。

Q:SVM 的支持向量有什么意义? 决策边界完全由支持向量决定,删除非支持向量模型不变。这是 SVM 稀疏性和稳健性的来源,也是它对边界附近样本误标敏感的原因。


相关阅读:线性回归、集成学习(非线性边界的另一条路)。

💬 评论

这套方案在哪一步卡住了?也欢迎补充你的实现方式或踩坑经验。

正在连接评论服务,首次访问可能需要几秒…