线性回归解决回归,分类世界的两个线性主力是逻辑回归和 SVM。它们都在找一条决策边界,但哲学完全不同:逻辑回归问”属于正类的概率是多少”,SVM 问”哪条边界离两类样本都最远”。理解这个差异,就理解了它们各自的适用场景。
前置阅读:机器学习基础与 Scikit-learn、线性回归(同一套数学语言)。
逻辑回归:把线性输出压成概率
线性模型输出 的实数,sigmoid 函数把它压进 (0,1):
训练目标是对数损失(交叉熵),梯度下降求解。输出是真概率——0.7 的含义是”模型认为七成把握”,这让它在需要置信度的场景(风控评分、疾病风险评估)天然有优势。
系数的可解释性是另一个杀手级特性: 就是特征 每增加一个单位、正类几率(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 或集成 |
练习
- 在 make_moons 数据上对比逻辑回归、LinearSVC、RBF-SVM 的决策边界并画图。
- 扫 RBF 核的 C×gamma 网格,画出验证分热力图,标出过拟合区。
- 在文本分类任务上对比逻辑回归与 LinearSVC 的宏 F1 和训练耗时。
- 用逻辑回归的系数解释 Top 10 特征对正类的贡献方向。
面试常问
Q:逻辑回归和 SVM 的核心区别? 损失与目标不同:逻辑回归优化对数损失、输出概率、所有样本都贡献梯度;SVM 优化合页损失、最大化间隔、只有支持向量决定边界。前者要概率和解释性,后者对远离边界的离群值更稳健。
Q:核技巧的本质? 通过核函数隐式计算高维空间的内积,避免显式映射的计算爆炸,让线性算法获得非线性能力。核矩阵必须半正定(Mercer 条件)。
Q:逻辑回归为什么对特征尺度敏感? 模型本身不敏感(系数自适应),但正则项按系数大小惩罚——尺度大的特征系数天然小、受罚轻,等于被偏袒。所以正则化逻辑回归前必须标准化。
Q:SVM 的支持向量有什么意义? 决策边界完全由支持向量决定,删除非支持向量模型不变。这是 SVM 稀疏性和稳健性的来源,也是它对边界附近样本误标敏感的原因。
💬 评论
这套方案在哪一步卡住了?也欢迎补充你的实现方式或踩坑经验。