跳到主要内容

逻辑回归:用可能性画分类的边界

这一章讲三件事: 名字里带「回归」的算法为什么做的是分类;一条直线输出的数, 怎么变成一个名正言顺的概率;以及学出来的系数怎么读成「每个特征在帮哪一边」。 它是全书第一个分类算法,也是「线性家族」的第 2 个成员——和第 02 章只差一道工序。

1. 顶层全景

特征值 x(比如:明天气温 2 ℃)
↓ 老一套:乘权重、加偏置 → 得到一个普通的数 z
↓ 新工序:S 形函数把 z 压进 0~1 → 得到概率 p
↓ 拿 0.5 当分界线:p ≥ 0.5 判「发生」,p < 0.5 判「不发生」
输出:分类结果(穿平时出门的鞋 / 翻雪靴)

图说:与线性回归只差中间那道「压进 0~1」的工序。

先破题:逻辑回归,指的是用于分类的做法——虽然名字里带「回归」,但它通过计算数据属于各类别的可能性来做分类1。名字的历史遗留不碍事,记住输出是概率就行。

2. 主走查:明天下不下雪,翻不翻雪靴

原书给的场景很生活:回家路上发现下雪了,如果明早积雪,就得翻出雪天穿的靴子。今晚气温 2 ℃,明天还能穿平时的鞋出门的概率是多少?2

原书用虚构的 100 天历史数据(气温 + 当天穿没穿雪靴)训练逻辑回归,然后拿三个气温去问模型3:

问:气温 0 ℃ → 模型答:「雪已融化、可穿平时鞋」的概率 12%
问:气温 1 ℃ → 概率 50%
问:气温 2 ℃ → 概率 88%

结论:88% 的把握能穿平时的鞋。(数字均取自原书)

这条走查里藏着一个漂亮的对称:1 ℃ 时概率恰好 50%——这正是「穿与不穿五五开」的气温分界点;每离它 1 ℃,概率就朝确定的一侧推 38 个百分点(50→88,或 50→12)。概率不是凭空来的,下一节拆开看它是怎么算出来的。

3. 机制:把直线的输出压成概率

第一步,和线性回归一模一样

逻辑回归的基本思想与线性回归相同:特征值乘上权重、再加上常数项,算出一个数4。这个加上的常数项有个正式名字——偏置:权重决定特征「使多大劲」,偏置决定「整体往哪边偏」,它俩一起构成模型要学的参数(附录的名词条目里,偏置的定义就是「只在计算输出时相加的学习参数」)5

问题在于,这个数可以是从 −∞ 到 +∞ 的任何值,而概率(0 到 1 之间的数,表示一件事有多大可能发生)必须被压进 0 到 1 之间。直接拿它当概率,算出「120% 的概率」就闹笑话了。

第二步,S 形函数登场

逻辑回归把线性回归的输出喂给 Sigmoid 函数(一条 S 形曲线,记作 σ(z) = 1/[1 + exp(−z)]),它把任何输入都压进 0 和 1 之间6:

概率 p
1.0 ┤ ╭────────
│ ╭────╯
0.5 ┤ ───╯ ← z=0 时 p 恰好 0.5
│ ╭────╯
0.0 ┤────────╯
└────┬───────┬───────┬──── z(加权求和的输出)
−2 0 +2

图说:S 形的两端无限贴近 0 和 1 但永远不到,
中间在 z=0 附近最陡——差一点输入,概率差很多。

拿走查的三个气温反推 z 值(按原书的公式补算,只为演示):p = 0.50 意味着 z = 0;p = 0.12 和 p = 0.88 各对应 z ≈ −2 和 z ≈ +2。也就是说,模型内部其实还是那条线性直线——气温每变化 1 ℃,z 挪 2 格;S 形曲线只是把「挪 2 格」翻译成「概率推 38 个百分点」。直线的骨架,S 形的外衣。

第三步,拿 0.5 当分界线

概率在手,分类只需一条规矩:预测概率 0.5 以上判 1,以下判 07。0.5 不是铁律——原书特别说,根据问题不同,阈值(做判断的那条分界线)可以上调或下调;调了会发生什么,第 11 章的走查会给看具体的数。

4. 怎么学:第一次遇到「解不出解析解」

第 02 章的最小化靠式子变形直接解。这一章行不通了:逻辑回归用逻辑损失当误差函数——分类失败罚大分、分类成功罚小分,和均方误差同一个设计思路;但逻辑损失的最小值没法通过式子变形算出来,只能靠数值计算一点点逼近8

逼近的主力有个名字,叫梯度:想象损失函数是一个碗状曲面(第 02 章的碗),参数是站在碗坡上的位置,梯度指的就是「脚下的坡朝哪个方向最陡」。

整套「朝最陡的下坡反复挪一小步,直到走到谷底」的动作,行话叫梯度下降。原书给这事定了性:「无法通过式子变形严密求解的情况,机器学习中经常通过数值计算来近似求解」9——从逻辑回归开始,「近似」成了常态,不再是不体面的事。

5. 决策边界:分类算法的「分界线」

分类模型对未知数据做判断时,总会以某个位置为界,两边判成不同的类——这个边界就叫决策边界。逻辑回归的决策边界,就是概率正好 50% 的那条线10

决策边界的形状由算法决定,这一句话实际上给第 2 章所有分类算法排了座次:逻辑回归在平面上画的是直线;KNN 和神经网络的决策边界是更复杂的形状11。原书把这句当预告埋在这里——第 07 章神经网络会用「两条直线夹出一块区域」兑现它。

6. 白送的礼物:系数能直接读出「谁在帮谁」

逻辑回归学完后,每个特征都有一个带符号的系数,符号告诉你这个特征把概率往哪边推12。原书拿鸢尾花数据(山鸢尾 setosa 对杂色鸢尾 versicolor 二选一)演示,四个特征学出的权重13:

特征权重怎么读
sepal length(萼片长)−0.407越长越偏向 setosa(推力弱)
sepal width(萼片宽)−1.461越窄越偏向 versicolor
petal length(花瓣长)+2.240越长越偏向 versicolor(推力最强)
petal width(花瓣宽)+1.008越长越偏向 versicolor

对照散点图验证:花瓣长的权重是正的,所以图上方的数据大多判为 versicolor;萼片宽的权重是负的,所以左边偏向 versicolor、右边偏 setosa14这张表是业务方能直接拿走的东西——「花瓣越长越可能是杂色鸢尾」是一句人话,不是黑箱输出。这份可解释性,到第 04 章那一家(行话叫支持向量机)的核方法那里会被主动放弃,届时能看出它多值钱。

7. 作者的判断与证据

说法性质依据
0/1/2 ℃ 对应 12%/50%/88%书内给出代码运行结果(随机数生成数据,每次运行略有差异)原书代码输出 0.12/0.50/0.8815
逻辑损失没有精确公式解,须顺着坡数值逼近作者的陈述,未给证明——数学细节原书明确说不展开书内陈述8
阈值可按问题调整作者提示,未给例子;例子在第 11 章(乳腺癌 0.5→0.1)书内陈述7
「概率」这个词的含义值得警惕:模型输出的「概率」是损失函数压出来的分数,不是频率意义上的概率——第 05 章会把这一点挑明我们的综合判断,见下

判断(我们的,不是书里的): 逻辑回归输出的「88% 概率」应该读作「模型内部的置信分数换算成了 0~1 的刻度」,而不是「历史上 88% 的 2 ℃ 天都穿了平时鞋」。两者多数时候方向一致,但数值不能当频率用。 如果错,会错在: 若把它当真实频率拿去做风险定价这类「把可能性直接进公式」的事,偏差会直接进决策;这类场景应先在自家数据上校准。

8. 边界与局限

  • 决策边界是直线,所以「点围成一圈」这类曲线边界的数据,它和第 02 章的直线一样无能为力——原书把解法留给了支持向量机的核方法(下一章)。
  • 原书没有讲多元分类下逻辑回归怎么落地(一对多策略等),只说「本来是二元分类的算法,但也可以用于三种类别以上」16,细节留白。
  • 系数的「正负=方向」可信,但数值大小不能直接比大小:特征量纲不同时,系数大小不可比(花瓣长 2.24 未必「双倍强于」花瓣宽 1.01)。原书没有提这层坑,这是我们的补充(不在书里,来自通用知识)。
  • 版本提示:原书代码 LogisticRegression() 默认配置即可复现三个概率值;输出 [0.12, 0.50, 0.88]15

9. 可带走的

  1. 逻辑回归 = 线性回归 + S 形压缩 + 0.5 切一刀,输出是概率,任务是分类;
  2. 权重管特征使多大劲,偏置管整体往哪边偏,都是学出来的参数;
  3. S 形曲线中段最陡:决策边界附近,特征差一点、概率差很多——边界上的样本最值得人看;
  4. 阈值默认 0.5,但可以按代价调:漏诊代价高就下调(第 11 章有具体数字);
  5. 逻辑损失没有解析解,梯度下降(朝最陡下坡反复小步挪)从此成为常态;
  6. 决策边界=概率 50% 的位置;逻辑回归的边界是直线,这是它简单也是它的天花板;
  7. 系数带符号可读:「哪个特征在帮哪个类、往哪边推」——可解释性是它至今没被淘汰的原因;
  8. 系数大小别跨特征硬比,量纲不同不可比(书外补充)。

10. 原文地图

主题原书章原文位置
名字带回归、实为分类2.3 算法3:逻辑回归text/08-ch02-03-2-3-3.txt:3(搜「但其实它是用于分类问题的算法」)
学习事件发生概率2.3 算法3:逻辑回归text/08-ch02-03-2-3-3.txt:7(搜「学习某个事件发生概率」)
雪靴场景、100 天数据2.3 算法3:逻辑回归text/08-ch02-03-2-3-3.txt:12(搜「翻出雪天穿的靴子」) · text/08-ch02-03-2-3-3.txt:15(搜「虚构的 100 天的数据」)
12%/50%/88%2.3 算法3:逻辑回归text/08-ch02-03-2-3-3.txt:33(搜「概率为 12%」) · text/08-ch02-03-2-3-3.txt:76(搜「0.50296844」)
同线性回归、偏置2.3 算法3:逻辑回归text/08-ch02-03-2-3-3.txt:41(搜「再加上偏置」) · text/08-ch02-03-2-3-3.txt:43(搜「这一点上是相同的」)
Sigmoid 定义与取值范围2.3 算法3:逻辑回归text/08-ch02-03-2-3-3.txt:45(搜「返回 0 和 1 之间的数值」) · text/08-ch02-03-2-3-3.txt:50(搜「计算标签为 y 的概率」)
阈值 0.52.3 算法3:逻辑回归text/08-ch02-03-2-3-3.txt:51(搜「0.5 作为阈值进行分类」)
逻辑损失、梯度下降2.3 算法3:逻辑回归text/08-ch02-03-2-3-3.txt:54(搜「逻辑损失作为误差函数」) · text/08-ch02-03-2-3-3.txt:56(搜「梯度下降法通过数值计算」) · text/08-ch02-03-2-3-3.txt:58(搜「数值计算来近似求解」)
决策边界=50% 处、形状因算法而异2.3 算法3:逻辑回归text/08-ch02-03-2-3-3.txt:86(搜「就叫作决策边界」) · text/08-ch02-03-2-3-3.txt:88(搜「正好为 50% 的地方」) · text/08-ch02-03-2-3-3.txt:93(搜「决策边界的形状因」)
系数符号=正负影响2.3 算法3:逻辑回归text/08-ch02-03-2-3-3.txt:102(搜「正影响还是负影响」) · text/08-ch02-03-2-3-3.txt:110(搜「2.240 047 24」)
花瓣长/萼片宽的解读2.3 算法3:逻辑回归text/08-ch02-03-2-3-3.txt:122(搜「的比例会变大」) · text/08-ch02-03-2-3-3.txt:124(搜「权重是负值」)
偏置的正式定义附录text/27-apx.txt:400(搜「只在计算输出时相加」)

Footnotes

  1. 出处:「2.3 算法3:逻辑回归」第 3 段(text/08-ch02-03-2-3-3.txt:3,搜「但其实它是用于分类问题的算法」)。

  2. 出处:「2.3 算法3:逻辑回归」第 12 段(text/08-ch02-03-2-3-3.txt:12,搜「翻出雪天穿的靴子」)与第 13 段(搜「穿平时的鞋子出门的概率」)。

  3. 出处:「2.3 算法3:逻辑回归」第 15 段(text/08-ch02-03-2-3-3.txt:15,搜「虚构的 100 天的数据」)与第 33 段(text/08-ch02-03-2-3-3.txt:33,搜「概率为 12%」)。

  4. 出处:「2.3 算法3:逻辑回归」第 41 段(text/08-ch02-03-2-3-3.txt:41,搜「再加上偏置」)与第 43 段(text/08-ch02-03-2-3-3.txt:43,搜「这一点上是相同的」)。

  5. 出处:「附录」第 400 段(text/27-apx.txt:400,搜「只在计算输出时相加」)。原文:「只在计算输出时相加的学习参数。如果有数据 x 和学习参数 w0、w1,输出 y = w0 + w1x,那么其中的 w0 就是偏置」。

  6. 出处:「2.3 算法3:逻辑回归」第 45 段(text/08-ch02-03-2-3-3.txt:45,搜「返回 0 和 1 之间的数值」);计算式 p = σ(w 转置乘 x + w0) 在第 50 段(text/08-ch02-03-2-3-3.txt:50,搜「计算标签为 y 的概率」)。

  7. 出处:「2.3 算法3:逻辑回归」第 51 段(text/08-ch02-03-2-3-3.txt:51,搜「0.5 作为阈值进行分类」)与第 52 段(搜「大于或小于 0.5」)。 2

  8. 出处:「2.3 算法3:逻辑回归」第 54 段(text/08-ch02-03-2-3-3.txt:54,搜「逻辑损失作为误差函数」)与第 56 段(text/08-ch02-03-2-3-3.txt:56,搜「梯度下降法通过数值计算」)。 2

  9. 出处:「2.3 算法3:逻辑回归」第 58 段(text/08-ch02-03-2-3-3.txt:58,搜「数值计算来近似求解」)。

  10. 出处:「2.3 算法3:逻辑回归」第 86 段(text/08-ch02-03-2-3-3.txt:86,搜「就叫作决策边界」)与第 88 段(text/08-ch02-03-2-3-3.txt:88,搜「正好为 50% 的地方」)。

  11. 出处:「2.3 算法3:逻辑回归」第 93 段(text/08-ch02-03-2-3-3.txt:93,搜「决策边界的形状因」)与第 97~98 段(搜「决策边界是直线」)。原书原文:「逻辑回归的决策边界是直线。在其他算法中,比如 KNN 和神经网络,决策边界是更复杂的形式」。

  12. 出处:「2.3 算法3:逻辑回归」第 102 段(text/08-ch02-03-2-3-3.txt:102,搜「正影响还是负影响」)。

  13. 出处:「2.3 算法3:逻辑回归」第 110 段(text/08-ch02-03-2-3-3.txt:110,搜「2.240 047 24」)。四个数值依表列顺序为 sepal length、sepal width、petal length、petal width 的权重。

  14. 出处:「2.3 算法3:逻辑回归」第 122 段(text/08-ch02-03-2-3-3.txt:122,搜「的比例会变大」)与第 124~125 段(text/08-ch02-03-2-3-3.txt:124,搜「权重是负值」)。

  15. 出处:「2.3 算法3:逻辑回归」第 76 段(text/08-ch02-03-2-3-3.txt:76,搜「0.50296844」)。原书注明「数据是使用随机数生成的,所以每次执行时结果都有所不同」(第 62 段)。 2

  16. 出处:「2.3 算法3:逻辑回归」第 9 段(text/08-ch02-03-2-3-3.txt:9,搜「三种类别以上的分类问题」)。