掌握了算法和基本原理,要达到知行合一,还需要一套实践方法论:实践中如何针对应用选择算法,决定是否要收集更多数据等。正确地使用一个算法,比草率使用一个不清楚的算法效果更好。Ng提出了很多好的建议,将在以下体现。
建议的实践设计流程:
- 确定目标:误差度量
- 建立end-to-end的工作流程
- 搭建系统,查明性能瓶颈
- 根据观察反复增量式改动,如调整超参数等
1. 性能度量
度量一个模型完整应用的有效性:性能度量。不同于训练模型的代价函数(均方误差/交叉熵),通常使用准确率,错误率,以及更高级的度量。
举例:设计一个罕见疾病检测系统,该病每百万人中仅一例患者。如果分类器考虑准确率,那么让该系统一直报告没有患者,轻易的可实现99.99%的正确率。但这样做显然没有意义。解决办法:精度和召回率。组合起来用PR曲线(包含面积越大模型效果越好),或者 F-score (越大越好)。
覆盖率(coverage):ML系统能够产生响应的样本所占比例。权衡覆盖和精度。一个系统可拒绝任意样本来达到100%的精度,但覆盖降为0。对于某项任务,希望系统达到人类级别的精度,同时保持95%的覆盖。人类可达性能是98%精度。
当然还有很多其他的。2017年TSA比赛中打榜的性能度量是 logloss