逻辑回归
先计算线性分数,再用 Sigmoid 或 Softmax 得到类别概率。
学习前需要掌握
背景与问题
二分类需要的不只是一个任意实数,还需要能把分数与事件概率联系起来。逻辑回归以少量线性参数建模 log-odds,适合作为可检查的概率基线。
概念定义
二元逻辑回归先计算线性分数 z,再以 sigmoid 得到正类概率 p。它对输入特征的 log-odds 线性,而概率本身是非线性曲线;名字中有回归,常见任务却是分类。
直观理解
线性分数把证据相加,sigmoid 把无限的证据尺度压到 0 到 1。概率描述模型估计,阈值再把估计转成行动。
核心原理
由 p/(1−p)=exp(z) 可知,一个特征增加一单位时,其他特征固定,odds 乘以 exp(w_j)。这不是“概率增加 w_j”;同一个分数变化在 p 接近 0.5 和接近 1 时,对概率的影响不同。
训练通常最小化二元交叉熵并加入正则。连续特征的标准化既影响优化条件,也改变同一惩罚对各权重的相对作用;应在训练折内拟合预处理。在常见 scikit-learn 接口中 C 越小正则越强,solver 与惩罚形式也需兼容。
概率输出不保证校准,类别不平衡、采样方式和分布变化都会影响解释。0.5 阈值只是一个规则,业务误报漏报代价不对称时应在验证集另选阈值;测试集不能参与这个选择。
固定线性分数如何变成概率与决策
- w=1,b=-2,输入 x 为 0、2、4
- 比较阈值 0.5 与 0.9
阈值 0.5 时预测为 0、1、1;阈值 0.9 时均为 0。
参数不变时,改变阈值只改变决策,不改变模型估计的概率。中间样本 z=0 的概率恰好为 0.5,是否判正还取决于使用大于还是大于等于的约定。
本例权重人为指定,未做训练或性能比较。真实应用还应检查 predict_proba 的列与 classes_ 对应,避免把负类列当成正类概率。
数学表达
核心表达
计算与实现步骤
- 按独立性划分训练验证数据,在训练折拟合必要预处理。
- 用交叉熵与合适正则训练模型,核对类别顺序。
- 在验证集选择 C、阈值并检查校准,锁定后评估测试集。
代码实现
示例 1
固定线性分数如何变成概率与决策的最小验证
example_01.py用途:使用完整构造输入核对固定线性分数如何变成概率与决策,输出只表示本例计算。
import math
x = [0., 2., 4.]
probabilities = [1 / (1 + math.exp(-(value - 2))) for value in x]
print("probabilities:", [round(p, 6) for p in probabilities])
for threshold in [0.5, 0.9]:
print(f"threshold={threshold:.1f}", [int(p >= threshold) for p in probabilities])代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
使用完整构造输入核对固定线性分数如何变成概率与决策,输出只表示本例计算。
Step 1 · 1–6 行
导入当前步骤需要的数值计算、预处理、模型或评价工具。依赖集中写在代码开头,便于复现。
import math
x = [0., 2., 4.]
probabilities = [1 / (1 + math.exp(-(value - 2))) for value in x]
print("probabilities:", [round(p, 6) for p in probabilities])
for threshold in [0.5, 0.9]:
print(f"threshold={threshold:.1f}", [int(p >= threshold) for p in probabilities])预期输出或运行结果
probabilities: [0.119203, 0.5, 0.880797] threshold=0.5 [0, 1, 1] threshold=0.9 [0, 0, 0]
实际应用
- 高维稀疏文本分类基线
- 需要概率与阈值分离的二分类决策
常见错误
- C 方向理解反
- 未缩放就比较权重
- 概率等同可信度