文章

逻辑回归技术路线说明

逻辑回归技术路线说明

逻辑回归技术路线说明

表格分类里,逻辑回归常作为可校准的线性基线,与树模型对照。sklearn 默认是 L2 正则(Ridge),交叉验证通常只搜正则强度 C。本文按罚项、估计方式、决策边界把常见路线分开,避免把「换求解器」误当成另一种模型。数字例子为虚构示意,非某次真实训练输出。


目录


1. L2(Ridge)的完整名称

L2 指系数向量的 平方 L2 范数惩罚(squared (\ell_2)-norm penalty):(\lambda |w|_2^2)。

在回归文献里,这一罚项对应的方法全称是:

名称说明
Ridge Regression英文通行名,中文 岭回归(Hoerl & Kennard, 1970)
Tikhonov regularization数学上的完整名称,中文 吉洪诺夫正则化(Тихонов)
L2-regularized logistic regression把同一罚项用在逻辑回归上时的准确说法,可称 L2 正则化逻辑回归 / Ridge 逻辑回归

注意:

  • 「Ridge」原本是对线性回归的称呼;逻辑回归用同一套 L2 罚项,习惯上仍说 Ridge,但模型本身仍是逻辑回归(log-odds 线性、损失函数是对数损失),不是最小二乘岭回归。
  • sklearn 里强度用 C 表示,(C = 1/\lambda):C 越大,惩罚越弱
  • 未显式传 penalty 时,sklearn 默认 penalty='l2',即上述路线。

2. 逻辑回归在做什么

逻辑回归把类别概率写成线性打分再过 sigmoid:

[ P(y=1 \mid x) = \sigma(w^\top x + b), \quad \sigma(z)=\frac{1}{1+e^{-z}} ]

训练时最小化对数损失(负对数似然)。是否加正则、加哪种正则、如何求系数,构成不同技术路线。下面按「罚项 / 估计方式 / 输出形式」分开。各路线的对照与示意数字见第 4 节。


3. 常见落地配置

多标签表格分类里,逻辑回归常按 Binary Relevance(BR) 落地:每个标签一个二分类器,共享同一套特征矩阵。典型配置如下。

取值
模型二分类逻辑回归(多标签时每个标签一个 BR 分类器)
罚项L2 / Ridge(默认 penalty='l2'
选参LogisticRegressionCV,候选如 C ∈ {0.01, 0.1, 1, 10},分层 K 折,评分可用 f1
最终拟合普通 LogisticRegression(C=最优C)
其它class_weight=balancedStandardScaler 标准化(逻辑回归对量纲敏感)
默认未用L1、Elastic Net、贝叶斯 LR、Firth、核逻辑回归

与树模型(XGBoost / 随机森林)的对比:逻辑回归是线性可加的归纳偏置,系数可直接解读方向与相对大小,但不能表达高阶交互(除非特征工程先造出交叉项)。


4. 通俗对照表

下面用一套与业务无关的虚构数据说明各路线差别。数字是示意,用来对照。

共同设定:预测学员下一次摸底是否及格。特征已标准化(均值 0、标准差 1),系数大小可以直接比。

学员周学习时长 (x_1)周刷题套数 (x_2)鞋码 (x_3)是否及格
2.0(很高)1.9(很高)0.3
1.61.5−1.0
−0.8(偏低)−0.71.2
−1.1−1.00.4

学习时长和刷题套数几乎同步(高度共线);鞋码与是否及格基本无关。成对的「同一件事记了两遍」在表格数据里很常见。

4.1 一张表看完区别

技术路线通俗特点对上面 3 个特征会学成什么样(示意系数)直观后果
无正则 MLE只顾把训练集拟合好,系数可以很大学习时长 +5.4,刷题套数 −3.8,鞋码 +1.1两个几乎同一件事的字段互相「抢权重」甚至一正一负;换几个学员系数会跳。鞋码这种无关项也可能被放大。
L2 / Ridge把所有系数往 0 挤一挤,一般挤不到正好为 0学习时长 +1.1,刷题套数 +0.9,鞋码 +0.08时长、刷题都算一点分(本来就是一件事);鞋码几乎没用,但还留着一个很小的数。模型更稳。
L1 / Lasso能把没用的系数直接关掉(变成 0)学习时长 +1.7,刷题套数 0,鞋码 0只留学习时长。报告好看(「只用了 1 个字段」),但刷题被丢掉;下次重训有时会改留刷题、丢掉时长。
Elastic NetL1 会关灯、L2 会让相关字段一起留学习时长 +0.95,刷题套数 +0.80,鞋码 0时长和刷题都保留(成对字段不互斥),鞋码被关掉。表格数据里常常比纯 L1 或纯 L2 更省心。
Firth(偏差缩减)正例极少、几乎能「完美分开」时,不让系数冲向无穷若 20 人里只有甲、乙及格且时长都极高:无正则「学习时长」系数可到 +40 甚至算不完;Firth 大约 +2.3无正则会给甲打出概率 0.999(喊「百分之百」);Firth 大约 0.91,换掉 1 个及格学员也不至于整张表翻脸。
贝叶斯 LR给系数加「先验看法」,点估计常和 L2 很像高斯先验时点估计 ≈ L2:学习时长约 +1.1,刷题约 +0.9;额外能说「时长系数大概在 0.4~1.8」日常打分和 Ridge 差不多;多出来的是不确定区间。一般落地不做后验区间。
类别加权(balanced)不改罚项形状,只让少数类的对错「更值钱」仍是 L2。不加权时及格学员的预测概率常在 0.02~0.08(1000 人里 20 个及格,模型爱全判不及格);加权后可到 0.3~0.6召回会好很多。class_weight=balanced 和 L2 可以同时用
核逻辑回归不在原始字段上画一条直线,能拐弯若其实是「学得久 睡得够」才及格:线性 LR 可能给时长 +0.7、睡眠 −0.5,很多「学得久但睡眠一般」的人被误伤。核方法(或先造交叉项「时长×睡眠」)才能抓住这块这类交互更适合交给树模型,不必硬上核 LR。
多项 Softmax一次分互斥的多类(优 / 中 / 差,三选一)不适用于「同一人可同时挂多个标签」(例如既报钢琴班又报游泳班)多标签场景是每个标签一个二分类(Binary Relevance),不是 Softmax。

读表时抓住三件事即可:

  1. 会不会把系数变成 0:L1、Elastic Net 会;L2 不会。
  2. 两个很像的字段(学习时长 / 刷题套数):无正则爱打架;L2 / Elastic Net 爱分摊;L1 爱只留一个。
  3. 正例很少:先靠加权;若再出现「完美分开、概率全是 0 或 1」,才轮到 Firth。

4.2 用一个人把打分算明白

以甲为例(学习时长 2.0、刷题套数 1.9、鞋码 0.3),忽略截距,线性打分 (\approx w_1 x_1 + w_2 x_2 + w_3 x_3),再过 sigmoid 变成概率:

路线甲的打分(示意)大约概率人话
无正则(5.4\times2.0 + (-3.8)\times1.9 + 1.1\times0.3 \approx 3.8)≈ 0.98看起来很准,其实是「时长、刷题互相拆台」后的巧合,换一批人就不稳。
L2(1.1\times2.0 + 0.9\times1.9 + 0.08\times0.3 \approx 3.9)≈ 0.98两个学习相关特征都在加分,道理清楚。
L1(1.7\times2.0 + 0 + 0 = 3.4)≈ 0.97只看学习时长。甲碰巧时长也高,所以分数仍高;若有人「刷题很多、时长漏填」,L1 可能漏掉。

概率接近并不等于路线相同:分对了甲,不代表 系数可解释、可复现。表格分类默认选 L2,优先的是后两者。


5. 按正则罚项划分

这是「正则逻辑回归」内部的分支,也是和「不加正则」对比时最该先分清的一类。

5.1 无正则(极大似然,MLE)

  • 做法:只最小化对数损失,不惩罚 (|w|)。
  • 特点:特征多、样本少或特征共线时,系数容易很大、不稳定;完全分离(complete separation)时似然无界,求解可能不收敛。
  • 何时用:特征很少、样本充分、且已确认无共线。表格特征较多时,不适合作为默认

5.2 L2 / Ridge

  • 罚项:(\lambda |w|_2^2)。
  • 效果:把系数往 0 均匀收缩,一般不会变成精确 0;共线特征会分摊权重,数值更稳。
  • 优点:凸优化、默认求解器 lbfgs 即可;适合「多数特征都可能有一点用」的稠密表。
  • 缺点:不自动做特征选择,弱特征仍会留下小系数。

5.3 L1 / Lasso

  • 英文:Least Absolute Shrinkage and Selection Operator;罚项是 (\lambda |w|_1)。
  • 效果:部分系数被压成 精确 0,得到稀疏模型。
  • 优点:可解释、可当嵌入式特征选择。
  • 缺点:一组高度相关的特征里往往只留下其中一个(选择不稳定);需要能处理非光滑罚项的求解器(sklearn 常用 liblinearsaga)。
  • 何时评估:业务要「尽量少的有效特征」时,才值得对照 L2。

5.4 Elastic Net(弹性网络,L1 + L2)

  • 罚项:(\lambda \big( \rho |w|_1 + \frac{1-\rho}{2}|w|_2^2 \big)),sklearn 里 (\rho) 对应 l1_ratio
  • 效果:既能稀疏,又能在相关特征组内分摊权重(缓解纯 Lasso 的「只留一个」)。
  • 优点:表格特征、特征相关时,往往比纯 L2 或纯 L1 更稳妥。
  • 缺点:多一个超参 l1_ratio,须与 C 一起做 CV;求解器需 saga

5.5 四种罚项对照

路线系数能否为 0共线特征超参sklearn 要点
无正则不稳定penalty=None(新版)
L2 / Ridge否(只收缩)分摊、较稳C默认
L1 / Lasso常只留一个Cpenalty='l1'
Elastic Net能(部分)组内可共存C + l1_ratiopenalty='elasticnet' + saga

6. 按估计与小样本处理划分

这些仍是逻辑回归(同一似然),但点估计方式不同,适合分离、稀有事件、小样本。

6.1 普通 MLE / 惩罚 MLE

即第 5 节:最大(惩罚)似然。大样本、类别不太极端时足够。

6.2 Firth / 偏差缩减(bias-reduced)逻辑回归

  • 问题:正例极少或特征几乎能完美分开时,普通 MLE 系数趋向无穷。
  • 做法:在得分方程里加 Jeffreys 先验式的修正(Firth, 1993),等价于一种数据依赖的收缩。
  • 区别:不是 L1/L2 那种显式 (\lambda|w|),而是针对小样本偏差与分离;sklearn 无内置,需专用实现。
  • 何时考虑:单标签正例极少、出现完全分离报错或不收敛时。

6.3 贝叶斯逻辑回归

  • 做法:给 (w) 加先验(高斯先验 ≈ L2;Laplace 先验 ≈ L1),推断后验均值或 MAP。
  • MAP + 高斯先验 与 Ridge 逻辑回归在点估计上几乎同一回事。
  • 完整贝叶斯(后验区间、模型平均)能给不确定性,计算更重,一般落地不用。

6.4 加权 / 类别平衡

  • 做法class_weight='balanced' 或按样本加权对数损失。
  • 区别:改的是各类损失的权重,不是罚项形状。它与 L2 正交、可同时使用

7. 按决策边界与特征映射划分

这些是「还叫不叫普通逻辑回归」的边界:有的仍是 GLM,有的已经换模型族。

路线与普通 LR 的关系决策边界说明
线性逻辑回归默认落地形态输入空间中的超平面(w^\top x)
带手工交叉项的 LR仍是 LR在扩维后的空间里线性交互靠特征工程,不是模型自己学树分裂
核逻辑回归(KLR)广义核方法原空间可非线性对偶、核矩阵,规模大时贵;sklearn 无一等公民 API
多项 / Softmax(multinomial)多类互斥多类共用线性层多标签是 Binary Relevance 二分类,不是 softmax 多类
OvR 多类 LR多类拆成多个二分类每类一个超平面与 BR 形式相近,标签语义不同(互斥 vs 可重叠)

线性判别分析(LDA) 不是逻辑回归:它假设各类高斯、共用协方差,得到的也是线性边界,但估计的是类条件分布而不是直接最大化分类似然。可与 Elastic Net LR 并列作「线性侧」选项,不是 LR 的一种正则

线性 SVM:合页损失 + L2,边界类似,但不是概率模型;要概率还需校准。与 LR 视角接近,不必为对照再加一层 SVM。


8. 求解器不是第三条模型路线

lbfgsliblinearnewton-cgsagsaga 只影响怎么优化,不改变「L2 逻辑回归」这一模型定义。约束是:L1 / Elastic Net 不能用 lbfgs。L2 + 默认 lbfgsLogisticRegressionCV 默认)即可。


9. 如何选择

诉求更合适的路线
稳定、实现简单、特征稠密、要线性对照树模型L2 / Ridge + CV 选 C
希望系数自动稀疏、报告「只用了哪些字段」评估 L1Elastic Net
特征相关强、又想稀疏Elastic Net 优先于纯 Lasso
正例极少、出现分离 / 不收敛先检查标准化与 max_iter;仍失败再考虑 Firth
要非线性交互且不愿做交叉特征XGBoost / 随机森林,不必硬上核 LR

多算法并行时,LR 提供可校准的线性基线,与 Boosting、Bagging 形成三种归纳偏置。在未证明纯 L2 不够用之前,不必为了「换技术路线」改罚项。


10. 小结

要点结论
L2 的完整名称岭回归 / 吉洪诺夫正则化;分类上称 L2 正则化逻辑回归
「正则逻辑回归」不是单一算法,而是 L2 / L1 / Elastic Net 等罚项族;表格分类默认落 L2
其它常见分叉无正则 MLE、Firth 小样本修正、贝叶斯 LR、核 LR、多类 softmax
相邻但不属 LRLDA、线性 SVM
sklearn 默认penalty='l2'C 越大惩罚越弱;求解器换了不等于换了模型
本文由作者按照 CC BY 4.0 进行授权