基线模型构建与评估:快速搭建逻辑回归基线、记录初始指标、识别优化起点
任何评分模型的迭代优化都必须基于一个稳定、可复现的基线。本章的核心任务是:用逻辑回归搭建最简单的概率评分模型,记录全面的初始指标,并通过诊断手段找到模型的第一批优化方向。基线不是最终方案,而是后续所有改进的刻度尺。
1 基线建模核心原则
逻辑回归作为广义线性模型,天然适用于二分类评分任务。其输出值可直接解释为概率分数,满足“机会评分”的业务语义。搭建基线时应遵循三条原则:
- 最小特征集:仅使用原始数值特征,不做交叉、不做非线性变换,保持模型可解释性。
- 默认正则化:逻辑回归默认带 L2 正则化,参数
C=1.0,防止过拟合但又不过度限制。 - 固定随机种子:确保每次跑分结果一致,记录实验环境。
基线的价值在于“低方差、可复现”。一个随机种子混乱的基线会污染后续所有对比实验的结论。务必在代码中设置全局随机种子:
random_state=42。2 实现流程(Python / scikit-learn)
下面的代码片段展示了从数据准备到模型训练、预测评分、记录指标的完整基线流程。请逐行理解后再复制运行。
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import (
roc_auc_score, average_precision_score,
brier_score_loss, log_loss,
precision_recall_curve, accuracy_score
)
# 1. 加载预清洗数据(假设已处理缺失值和异常值)
df = pd.read_csv('cleaned_opportunity_data.csv')
X = df.drop(columns=['target', 'id'])
y = df['target']
# 2. 划分训练集/验证集(66% / 34%)
X_train, X_val, y_train, y_val = train_test_split(
X, y, test_size=0.34, random_state=42, stratify=y
)
# 3. 构建基线逻辑回归(L2正则化,默认C=1.0)
baseline_model = LogisticRegression(
penalty='l2',
C=1.0,
solver='lbfgs',
max_iter=500,
random_state=42
)
baseline_model.fit(X_train, y_train)
# 4. 预测概率分数(评分)
y_prob = baseline_model.predict_proba(X_val)[:, 1]
# 5. 计算核心指标
metrics = {
'AUC': roc_auc_score(y_val, y_prob),
'AP': average_precision_score(y_val, y_prob),
'Brier': brier_score_loss(y_val, y_prob),
'LogLoss': log_loss(y_val, y_prob),
'Accuracy@0.5': accuracy_score(y_val, (y_prob >= 0.5).astype(int))
}
for name, val in metrics.items():
print(f"{name:>15} : {val:.4f}")
注意:当样本严重不平衡(正样本比例低于5%)时,Accuracy 指标会产生误导。此时应以 AUC、AP、Brier 为主要评判标准。后续章节会专门处理不平衡问题。
3 初始指标记录表
运行上述代码后,应立即将结果填入固定的记录表。下列数据来自一个典型的企业机会评分任务(正样本占比约 10%):
| 指标 | 基线值 | 解释 |
|---|---|---|
| AUC | 0.7412 | 排序能力中等,有提升空间 |
| Average Precision (AP) | 0.3150 | 正样本召回精度较低,需关注 |
| Brier Score | 0.1361 | 概率校准偏差较大 |
| LogLoss | 0.3780 | 预测概率与真实分布的交叉熵偏高 |
| Accuracy@0.5 | 0.8550 | 受负样本多影响,参考价值有限 |
记录时要附带实验配置:数据版本、特征数量(本例为 24 个原始特征)、训练集大小(12500 条)、验证集大小(6800 条)。这些元数据在后续迭代中能帮助快速定位回归。
4 识别优化起点:从基线诊断入手
基线输出不应止步于指标值。必须通过可视化诊断表来识别具体的失效区域。下面是一个典型的诊断环节:
- 概率分布直方图:检查预测分数的双峰分离程度。若正负样本的预测分数大量重叠,说明特征区分力不足。
- 校准曲线(Calibration Curve):如果 Brier Score 远大于 0.10,通常表明模型存在系统性高估或低估。校准曲线可以揭示分数区间的偏移方向。
- Precision-Recall 曲线:在召回率较低(如 20%-40%)时精确率下降的斜率,能指出哪段分数区间的误判最严重。
优化起点通常来自三个方向:(1)特征工程——原始特征不足,需要衍生或交叉;(2)概率校准——模型虽然排序还不错,但输出分数与真实概率偏差大;(3)样本权重——不平衡导致少数类被忽略。记录基线时,请一并保存这些诊断图(或计算分桶统计表),以便后续直接对比。
5 基线模型结构:特征 → 评分 → 评估回路
下图完整展示了基线构建的闭环。请重点关注“输出指标”与“诊断反馈”两条支路——它们共同决定了下一阶段优化的入口。
6 基线记录清单与常见性能瓶颈
完成第一次运行后,请根据下表检查是否遗漏了必要的基线工件:
| 工件 | 格式 | 用途 |
|---|---|---|
| 模型对象(pickle) | baseline_lr.pkl | 复现预测 / 对比权重变化 |
| 验证集预测分数 | numpy array | 对比不同模型排序差异 |
| 特征权重列表 | CSV | 分析哪些特征贡献大 |
| PR曲线 / ROC曲线坐标 | CSV | 直接绘制对比图 |
| 训练参数快照 | YAML | 记录 solver、C、迭代次数 |
常见性能瓶颈及快速排查建议:
- AUC < 0.65:说明线性模型几乎无法区分正负样本。优化重点放在特征交叉或核映射上。
- Brier Score > 0.20:概率校准严重偏离,先检查数据是否存在标签噪声,再考虑 isotonic regression 校准。
- LogLoss 指标震荡:验证集可能在训练中被污染,或 solver 未收敛(增大
max_iter到 2000)。 - 特征权重标准差极小:所有特征接近于 0,提示正则化过强,尝试
C=10.0或关闭 L2。
基线阶段不要花费大量时间调参,完成一次正确跑分即可。记录下所有默认配置的指标后,立即进入第三章开始特征优化。超过两天还停留在基线调参,说明优化节奏失控。