逻辑回归是一种用于二元分类的模型。它先把输入特征组合成一个线性得分,再将这个得分送入 Sigmoid 函数,输出一个介于 和 之间的数;在拟合后的模型下,这个数可解释为正类的估计概率。
虽然名字里有“回归”,但逻辑回归通常用于在两个类别之间做判断,比如通过/未通过、垃圾邮件/非垃圾邮件,或违约/不违约。“回归”这个词指的是模型内部的线性公式,而不是预测连续型输出。
逻辑回归公式速览
二元逻辑回归使用
其中 Sigmoid 函数为
线性部分 可以取任意实数。Sigmoid 会把这个值压缩到 区间内,这就是为什么输出可以作为概率估计。
为什么 Sigmoid 函数很重要
如果直接把原始线性得分 当作概率,就可能得到不可能的值,比如 或 。Sigmoid 通过映射解决了这个问题:很大的负得分会接近 ,很大的正得分会接近 ,而接近 的得分会对应接近 的概率。
这给出了一个很实用的理解方式:
- 如果 非常负,模型更倾向于类别
- 如果 接近 ,模型不太确定
- 如果 非常正,模型更倾向于类别
这条曲线在 附近最陡。因此,在概率接近 时,得分的微小变化可能会让概率变化很大;但当概率已经接近 或 时,同样的得分变化带来的影响会小得多。
逻辑回归计算示例
假设一个模型只使用一个特征 ,并且有
你可以把 看作考试分数,把 看作“通过”。这里的系数只是为了演示计算过程而设定的示例值。
如果 ,那么
因此预测概率为
如果 ,那么
并且
所以,同一个模型在 时给出大约 的通过概率,而在 时给出大约 的通过概率。虽然得分增加了 ,但最终输出仍然保持在 到 之间,因为 Sigmoid 会把结果弯曲成一个概率。
如果现在选择阈值 ,第一个样本会被分为类别 ,第二个样本会被分为类别 。最后这一步取决于阈值,而概率估计本身并不取决于阈值。
一个有用的快捷结论是:当阈值为 时,类别恰好会在 时发生切换,因为 。
逻辑回归如何变成分类器
模型输出本身是一个概率估计。分类规则是在这之后再加上的。
例如,当阈值为 时:
- 如果 ,预测为类别
- 如果 ,预测为类别
但 并不总是合适的阈值。如果假阳性和假阴性的代价不同,或者类别分布严重不平衡,那么其他阈值可能效果更好。
系数意味着什么
系数的符号告诉你它对线性得分 的影响方向:
- 如果 ,增大 会提高 ,并倾向于增大
- 如果 ,增大 会降低 ,并倾向于减小
这一点比较直接。更细微之处在于:概率并不会随着特征线性变化,因为 Sigmoid 曲线不是一条直线。
在标准逻辑回归中,线性模型建立在对数几率(log-odds)尺度上:
这意味着,在其他特征保持不变时,某个特征每增加一个单位,会使对数几率发生线性变化。这样的表述比“概率会固定增加多少”更准确。
逻辑回归中的常见错误
把输出当成确定无疑的类别
像 这样的预测并不意味着事件一定会发生。它表示对于这个输入,模型给正类分配了大约 的估计概率。
认为阈值必须是
很常见,但它是一种选择,不是硬性规定。最佳阈值取决于具体应用场景。
认为概率是线性变化的
得分 对输入是线性的,但概率不是。某个特征增加一个单位,在 附近产生的影响,可能与在 附近完全不同。
忘记模型默认是二分类,除非做了扩展
基础逻辑回归处理的是两个类别。虽然也存在多分类版本,但那是扩展形式,不是把同一个二分类设定换种写法而已。
逻辑回归在什么时候使用
当目标变量是“是/否”类型时,逻辑回归经常会被使用,例如垃圾邮件检测、疾病是否存在、客户流失、贷款违约,或通过/未通过这类结果。
它一直很受欢迎,因为它简单、快速,而且具有一定的可解释性。尤其是在你需要一个基线分类器、数据集不算很大,或者你需要的是概率估计而不只是硬标签时,它会非常有用。
一个简单的直观理解方式
可以把逻辑回归看成一个两步机器:
- 用线性得分汇总证据。
- 用 Sigmoid 把这个得分转换成概率。
这个图景已经足够帮助你理解大多数入门例子,也能看出为什么逻辑回归处在线性模型与分类任务之间。
试着做一道类似的逻辑回归题
取一个简单的得分,例如
对几个 的取值计算 ,比如 、 和 。观察线性得分如何稳定变化,而概率如何沿着一条 S 形曲线弯曲变化。然后再尝试换一个阈值,看看预测类别会在什么时候发生改变。