逻辑回归技术路线说明
逻辑回归技术路线说明
表格分类里,逻辑回归常作为可校准的线性基线,与树模型对照。sklearn 默认是 L2 正则(Ridge),交叉验证通常只搜正则强度
C。本文按罚项、估计方式、决策边界把常见路线分开,避免把「换求解器」误当成另一种模型。数字例子为虚构示意,非某次真实训练输出。
目录
- 1. L2(Ridge)的完整名称
- 2. 逻辑回归在做什么
- 3. 常见落地配置
- 4. 通俗对照表
- 5. 按正则罚项划分
- 6. 按估计与小样本处理划分
- 7. 按决策边界与特征映射划分
- 8. 求解器不是第三条模型路线
- 9. 如何选择
- 10. 小结
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=balanced;StandardScaler 标准化(逻辑回归对量纲敏感) |
| 默认未用 | L1、Elastic Net、贝叶斯 LR、Firth、核逻辑回归 |
与树模型(XGBoost / 随机森林)的对比:逻辑回归是线性可加的归纳偏置,系数可直接解读方向与相对大小,但不能表达高阶交互(除非特征工程先造出交叉项)。
4. 通俗对照表
下面用一套与业务无关的虚构数据说明各路线差别。数字是示意,用来对照。
共同设定:预测学员下一次摸底是否及格。特征已标准化(均值 0、标准差 1),系数大小可以直接比。
| 学员 | 周学习时长 (x_1) | 周刷题套数 (x_2) | 鞋码 (x_3) | 是否及格 |
|---|---|---|---|---|
| 甲 | 2.0(很高) | 1.9(很高) | 0.3 | 是 |
| 乙 | 1.6 | 1.5 | −1.0 | 是 |
| 丙 | −0.8(偏低) | −0.7 | 1.2 | 否 |
| 丁 | −1.1 | −1.0 | 0.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 Net | L1 会关灯、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。 |
读表时抓住三件事即可:
- 会不会把系数变成 0:L1、Elastic Net 会;L2 不会。
- 两个很像的字段(学习时长 / 刷题套数):无正则爱打架;L2 / Elastic Net 爱分摊;L1 爱只留一个。
- 正例很少:先靠加权;若再出现「完美分开、概率全是 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 常用
liblinear或saga)。 - 何时评估:业务要「尽量少的有效特征」时,才值得对照 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 | 能 | 常只留一个 | C | penalty='l1' |
| Elastic Net | 能(部分) | 组内可共存 | C + l1_ratio | penalty='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. 求解器不是第三条模型路线
lbfgs、liblinear、newton-cg、sag、saga 只影响怎么优化,不改变「L2 逻辑回归」这一模型定义。约束是:L1 / Elastic Net 不能用 lbfgs。L2 + 默认 lbfgs(LogisticRegressionCV 默认)即可。
9. 如何选择
| 诉求 | 更合适的路线 |
|---|---|
| 稳定、实现简单、特征稠密、要线性对照树模型 | L2 / Ridge + CV 选 C |
| 希望系数自动稀疏、报告「只用了哪些字段」 | 评估 L1 或 Elastic 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 |
| 相邻但不属 LR | LDA、线性 SVM |
| sklearn 默认 | penalty='l2',C 越大惩罚越弱;求解器换了不等于换了模型 |
