Model Evaluation Metrics(模型评估体系)
Skill-Model-Evaluation-Metrics · 12-ML基础
causalexperimentforecastingrag广告与投放供应链与补货知识图谱与RAGMAS与智能体工程WF-A 智能补货WF-B 广告优化WF-G Listing内容优化WF-H 复购增长
年化 ROI5-8 万
实现难度⭐⭐☆☆☆
业务视角
适用角色数据分析师 / 数据工程师 · 运营负责人 · 产品经理
适用平台选品评分 · 差评预测 · 用户流失预警 · 广告出价预测
什么情况下用想用机器学习解决业务问题,但不知道该选什么模型;模型上线后效果越来越差不知道为什么
成功是什么样的选对算法工具减少 50% 试错时间,模型上线后可监控可解释,数据团队和业务团队建立共同语言
业务痛点
1. 解决的问题
模型评估体系解决"模型到底好不好"这个问题——不是凭感觉,而是用标准化的量化指标从多个维度衡量模型表现。这是所有预测建模的基础能力,也是 ML 工程中模型选型、A/B 测试结果判读、生产监控的必备技能。
2. 核心算法逻辑
模型评估体系解决"模型到底好不好"这个问题——不是凭感觉,而是用标准化的量化指标从多个维度衡量模型表现。这是所有预测建模的基础能力,也是 ML 工程中模型选型、A/B 测试结果判读、生产监控的必备技能。
3. 业务应用场景
业务问题: 我们训练了 3 个流失预测模型(XGBoost / LightGBM / Logistic Regression),需要决定用哪个模型上线到 WF-A 智能补货系统,触发对高风险用户的挽留优惠券。但流失用户只占 5%,简单看准确率会误判——一个"全预测不流失"的模型也有 95% 准确率但完全没用。
数据要求: - 测试集:30,000 条用户样本(1500 个实际流失 + 28500 个留存),需包含 ground truth 标签 - 概率预测:每个模型输出 predict_proba
预期产出: - 多维度评估报告:Precision/Recall/F1/AUC-ROC/PR-AUC - 业务敏感度分析:在不同阈值下(top-10%/top-20%/top-50%),实际能触达多少流失用户 - 模型选型建议 + 最佳决策阈值
4. 输入数据要求
请查看原始代码模板获取输入规格。
5. 输出结果
请查看原始代码模板获取输出规格。
6. 业务价值 / ROI
- ROI 预估:模型评估能力贯穿所有 ML 项目。仅流失预测场景——正确的模型选型(从 60% Recall 提升到 85%)每月可多挽留价值 $75,000 的用户;A/B 评估避免"假阳性"上线每次节省 5-8 万试错成本。年化贡献 200-500 万元(中型品牌)。
- 实施难度:⭐⭐☆☆☆(2 星)— scikit-learn 原生支持,纯评估逻辑无需训练,集成成本低
- 优先级评分:⭐⭐⭐⭐⭐(5 星)— 所有模型工作流的前置基础,图谱被依赖度仅次于 Feature Engineering
- 评估依据:
- 当前图谱中 16 个 Skill 依赖 Feature Engineering 作为前置,但无一指向评估体系——说明大量模型 Skill 的评估环节是空白的
- 商业产出:ROI 高、实施难度低、影响面广
7. 代码模板
代码块数量:1 · 路径:未检测到
"""
Model Evaluation Toolkit
模型评估工具集 — 分类模型多维度评估
适用场景:模型选型、A/B测试结果判读、生产模型健康监控
"""
import numpy as np
import pandas as pd
from sklearn.metrics import (
accuracy_score, precision_score, recall_score, f1_score,
roc_auc_score, average_precision_score, log_loss,
confusion_matrix, classification_report,
roc_curve, precision_recall_curve, brier_score_loss
)
from sklearn.calibration import calibration_curve
from sklearn.model_selection import cross_val_score, StratifiedKFold
import matplotlib.pyplot as plt
from typing import Dict, Tuple, List, Optional
from dataclasses import dataclass
@dataclass
class EvaluationResult:
"""模型评估结果"""
accuracy: float
precision: float
recall: float
f1: float
auc_roc: float
auc_pr: float
log_loss: float
brier_score: float
confusion: np.ndarray
def summary(self) -> str:
return (
f"Accuracy={self.accuracy:.3f} | "
f"Precision={self.precision:.3f} | "
f"Recall={self.recall:.3f} | "
f"F1={self.f1:.3f} | "
f"AUC-ROC={self.auc_roc:.3f} | "
f"AUC-PR={self.auc_pr:.3f} | "
f"LogLoss={self.log_loss:.3f} | "
f"Brier={self.brier_score:.3f}"
)
def evaluate_classifier(
y_true: np.ndarray,
y_prob: np.ndarray,
threshold: float = 0.5
) -> EvaluationResult:
"""
分类模型完整评估
Args:
y_true: 真实标签 [0,1]
y_prob: 预测概率 [0,1]
threshold: 分类阈值
8. 论文来源
未自动抽取;请查看原始 Skill 卡片。