预测是依据数据和假设作出的估计,并非结果保证。对观测进行分类与预测未来数值是两种不同任务。
明确评估对象
界定目标人群、目标变量、预测时段和拟采取的决策。评分不一定是经过良好校准的概率。保留独立评估数据,不用于训练、拟合预处理或选择模型。
读懂错误,而非只看百分比
下列虚构示例采用固定阈值:200个实际正例中检出80个,漏掉120个。因此,86%的准确率并不意味着已发现大多数正例。
| 实际结果 | 预测为正 | 预测为负 |
|---|---|---|
| 实际为正 | 80 | 120 |
| 实际为负 | 20 | 780 |
| 指标 | 计算 | 数值 |
|---|---|---|
| 精确率(precision) | 80 / (80 + 20) | 80 % |
| 召回率(recall) | 80 / (80 + 120) | 40 % |
| 准确率(accuracy) | (80 + 780) / 1000 | 86 % |
根据后果选择阈值
精确率是预测为正的案例中真正正例的比例;召回率是实际正例中被检出的比例。改变阈值可能改变这两个指标。应在同一人群中比较结果,并考察误报和漏报的成本。
来源与核验
- Google — Classification: Accuracy, recall, precision
- scikit-learn — Probability calibration
- scikit-learn — Common pitfalls
按实际运行时间顺序测试预测结果。
运行预测应仅使用决策时可用的信息。随机分割可能不适用于时间序列。在声称具备预测能力之前,应模拟连续周期,保留特征版本,并与简单的基线进行比较。
- 排除仅在结果之后才知道的特征。
- 在训练之后的周期进行评估。
- 按预测范围衡量误差。
为什么优秀的测试性能会在后期失效?
信息泄露、人口变化或时间漂移都可能改变结果。部署后,应重现数据可用性条件并监控错误。
一手资料:scikit-learn — Cross-validation. 相关方法:阅读实用指南.
