共计 2050 个字符,预计需要花费 6 分钟才能阅读完成。
为什么选择逻辑回归?
逻辑回归作为机器学习中最经典的分类算法之一,在二分类问题中表现尤为突出。相比于 SVM 和决策树,逻辑回归最大的优势在于其出色的可解释性——我们可以直接通过权重系数的大小和正负来判断特征对结果的影响程度。同时,逻辑回归的训练效率很高,特别适合处理大规模数据集。

当然,每种算法都有其适用场景。当数据线性可分时,SVM 可能表现更好;当特征与目标之间存在复杂非线性关系时,决策树可能更合适。但逻辑回归凭借其简单、高效和易于实现的特性,成为了工业界最常用的分类算法之一。
数学原理:从线性回归到逻辑回归
逻辑回归的核心是 sigmoid 函数,它的作用是将线性回归的输出映射到 (0,1) 区间,可以理解为概率:
$$
\sigma(z) = \frac{1}{1+e^{-z}}
$$
其中 $z=w^Tx+b$ 就是线性回归的输出。当 z 趋近于正无穷时,sigmoid 值趋近于 1;当 z 趋近于负无穷时,sigmoid 值趋近于 0。
这个特性使得逻辑回归非常适合处理二分类问题——我们可以设定一个阈值(通常为 0.5),当预测概率大于阈值时判断为正类,否则为负类。
特征工程:为模型准备优质数据
好的特征工程可以显著提升模型性能。对于数值型特征,我们通常需要标准化:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
对于类别型特征,我们需要进行独热编码:
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(handle_unknown='ignore')
X_train_encoded = encoder.fit_transform(X_train_categorical)
X_test_encoded = encoder.transform(X_test_categorical)
模型训练:加入正则化防止过拟合
在 sklearn 中训练一个带 L2 正则化的逻辑回归模型非常简单:
from sklearn.linear_model import LogisticRegression
# C 是正则化强度的倒数,越小表示正则化越强
model = LogisticRegression(penalty='l2', C=1.0, class_weight=None, solver='lbfgs', max_iter=1000)
model.fit(X_train, y_train)
其中 penalty 参数指定正则化类型,C 参数控制正则化强度。建议开始时使用较大的 C 值(如 1.0),然后根据验证集表现进行调整。
实战建议:提升模型业务价值
调整分类阈值优化业务指标
默认 0.5 的阈值不一定是最佳选择,特别是当正负样本分布不均衡时。我们可以通过 P - R 曲线来寻找最佳阈值:
from sklearn.metrics import precision_recall_curve
import matplotlib.pyplot as plt
probs = model.predict_proba(X_test)[:, 1]
precisions, recalls, thresholds = precision_recall_curve(y_test, probs)
plt.plot(thresholds, precisions[:-1], label='Precision')
plt.plot(thresholds, recalls[:-1], label='Recall')
plt.xlabel('Threshold')
plt.legend()
plt.show()
处理样本不均衡问题
当正负样本比例严重失衡时,可以通过 class_weight 参数进行调整:
# 自动根据类别频率调整权重
model = LogisticRegression(class_weight='balanced')
# 或手动指定权重
model = LogisticRegression(class_weight={0:1, 1:10}) # 正样本权重是负样本的 10 倍
生产环境监控要点
- 定期检查特征稳定性:确保特征分布没有发生显著偏移
- 监控预测结果的分布变化:突然的变化可能意味着数据或业务逻辑发生了变化
- 建立自动化评估流程:定期在最新数据上评估模型性能
思考题
当特征维度远大于样本量时,逻辑回归可能会遇到什么问题?如何解决?
这种情况下模型容易过拟合。解决方案包括:
1. 使用更强的正则化(减小 C 值)
2. 进行特征选择,降低维度
3. 使用 L1 正则化(penalty=’l1′),它可以自动进行特征选择
4. 考虑使用 PCA 等降维方法
逻辑回归看似简单,但要真正用好它,需要深入理解其数学原理并掌握各种实战技巧。希望这篇文章能帮助你在实际项目中更好地应用这一强大工具。
