模型评估

用 Python 预测 CTR 的机器学习实战

Kevin Huo

Instructor

精确率与召回率

  • 精确率:通过点击带来的广告投入回报(ROI)

    • 精确率低表示点击带来的实际ROI很小
  • 召回率:触达相关受众

    • 召回率低表示错失ROI机会
  • 可考虑对两者设置不同权重

    • 企业通常更在意避免精确率低,而非召回率低
用 Python 预测 CTR 的机器学习实战

F-beta 分数

$$F_\beta = (1+\beta^2)\cdot\frac{\text{precision}\cdot\text{recall}}{(\beta^2 \cdot \text{precision}) + \text{recall}}$$

  • Beta 系数:表示两项指标的相对权重

    • Beta 在 0 到 1 之间时,精确率被缩小因而权重更高;Beta > 1 时,精确率被放大因而权重更低
  • sklearn 中实现:fbeta_score(y_true, y_pred, beta=beta)

    • y_true 为真实标签,y_pred 为预测标签
用 Python 预测 CTR 的机器学习实战

ROC 的 AUC vs. 精确率

roc_auc = roc_auc_score(y_test, y_score[:, 1])

fpr = 1 - tn / (tn + fp)
precision = tp / (tp + fp)
  • 类别不平衡:当 precision 很低时,fpr 仍可能很低。
  • 假设有 100 个 TN、10 个 TP 和 10 个 FP。
fpr = 1 - 100 / (100 + 10) = 0.091
precision = tp / (tp + fp) = 0.5
  • 低 FPR 可能导致 ROC 曲线的 AUC 很高,即使精确率很低!因此需同时查看两者,并关注 F-beta score
用 Python 预测 CTR 的机器学习实战

广告支出 ROI

  • 与前面相同的思路:某成本 c 与回报 r
total_return = tp * r
total_spent = (tp + fp) * cost
roi = total_return / total_spent 
    = (tp) / (tp + fp) * (r / cost) 
    = precision * (r / cost)
用 Python 预测 CTR 的机器学习实战

让我们来练习!

用 Python 预测 CTR 的机器学习实战

Preparing Video For Download...