逻辑回归是分类算法(尽管名字含”回归”),通过 Sigmoid 函数将线性输出映射到概率。
σ(z)=1+e−z1=1+ezez
性质:
- 输出范围 (0,1),可解释为概率
- σ(−z)=1−σ(z)
- 导数:σ′(z)=σ(z)(1−σ(z))
P(y=1∣x)=σ(wTx+b)=1+e−(wTx+b)1
P(y=0∣x)=1−P(y=1∣x)
对数几率(Log-Odds):
lnP(y=0∣x)P(y=1∣x)=wTx+b
逻辑回归本质是对对数几率进行线性建模。
wTx+b=0
- wTx+b>0 → 预测为正类
- wTx+b<0 → 预测为负类
决策边界是特征空间中的线性超平面。
对于二分类问题,使用二元交叉熵(Binary Cross-Entropy):
J(w)=−n1∑i=1n[yilny^i+(1−yi)ln(1−y^i)]
其中 y^i=σ(wTxi+b)。
直觉理解:
| 真实标签 | 预测概率 | 损失 |
|---|
| y=1 | y^=0.99 | −ln(0.99)=0.01(小) |
| y=1 | y^=0.01 | −ln(0.01)=4.61(大) |
| y=0 | y^=0.01 | −ln(0.99)=0.01(小) |
| y=0 | y^=0.99 | −ln(0.01)=4.61(大) |
∂w∂J=n1∑i=1n(y^i−yi)xi
注意:逻辑回归的梯度形式与线性回归完全相同(hw(x)−y),但 y^i 的计算方式不同。
交叉熵损失等价于极大似然估计的对数似然取负:
J(w)=−n1lnL(w)
其中似然函数:
L(w)=∏i=1ny^iyi(1−y^i)1−yi
将 K 分类问题转化为 K 个二分类问题:
类别1 vs 非类别1 → 分类器1
类别2 vs 非类别2 → 分类器2
类别3 vs 非类别3 → 分类器3
...
预测时选择置信度最高的类别。
直接建模多类概率分布:
P(y=k∣x)=∑j=1KewjTx+bjewkTx+bk
多类交叉熵损失:
J(W)=−n1∑i=1n∑k=1KyiklnP(yi=k∣xi)
其中 yik 为 one-hot 编码。
Softmax梯度:
∂wk∂J=n1∑i=1n(P(yi=k∣xi)−yik)xi
| 维度 | OvR | Softmax |
|---|
| 分类器数 | K个 | 1个 |
| 概率校准 | 不可靠 | 天然归一化 |
| 训练效率 | 可并行 | 需同时优化 |
| 适用场景 | 类别数多 | 类别数适中 |
L1正则化:
JL1=J(w)+λ∥w∥1
L2正则化:
JL2=J(w)+2λ∥w∥2
Elastic Net:
JEN=J(w)+λ1∥w∥1+2λ2∥w∥2
| 算法 | 说明 | 适用场景 |
|---|
| 梯度下降 | 通用 | 大规模数据 |
| IRLS | 迭代重加权最小二乘 | 小规模数据 |
| L-BFGS | 拟牛顿法 | 中等规模 |
| SGD/Adam | 随机优化 | 大规模在线学习 |
| 坐标下降 | L1正则化专用 | 高维稀疏数据 |
| 指标 | 公式 | 说明 |
|---|
| 准确率 | TP+TN+FP+FNTP+TN | 整体正确率 |
| 精确率 | TP+FPTP | 预测为正的准确率 |
| 召回率 | TP+FNTP | 正样本被识别率 |
| F1 | P+R2⋅P⋅R | 精确率与召回率的调和平均 |
默认阈值为0.5,但可根据业务需求调整:
- 提高召回率:降低阈值(如0.3),适用于疾病筛查
- 提高精确率:提高阈值(如0.7),适用于垃圾邮件过滤
ROC曲线:绘制不同阈值下的TPR vs FPR
AUC:ROC曲线下面积,衡量分类器整体性能
AUC=P(score(x+)>score(x−))
| 方法 | 说明 |
|---|
| 过采样 | SMOTE生成少数类样本 |
| 欠采样 | 减少多数类样本 |
| 类别权重 | 代价敏感学习,class_weight='balanced' |
| 阈值调整 | 根据类别比例调整决策阈值 |