# 数据科学项目快速启动

- 原标题：Data Science Project Quick-Start
- 类型：博客
- 来源：eugeneyan.com
- 发布时间：2022-03-06
- 首次精选：2026-10-29 23:09
- 分级：值得看
- 学习层级：入门
- 主题：[business-decision-apps](<https://oplearnx.com/md/topics/business-decision-apps.md>)（第 2 位）
- 原文链接：[https://eugeneyan.com//writing/project-quick-start](<https://eugeneyan.com//writing/project-quick-start>)
- 本站页面：[https://oplearnx.com/resources/pk\_80e1303f7fe4](<https://oplearnx.com/resources/pk_80e1303f7fe4>)

## 摘要

这篇博客文章分享作者作为数据科学新人时踩过的坑与经验，讲如何从模糊问题走到可用原型。文中强调先理解项目意图和背景，举例说明要问清预期业务收益、现状问题以及为何现在要做，并以推荐引擎中“互动”指标（点击还是购买）如何决定训练标签来说明指标定义的影响。适合刚起步做数据科学项目的人阅读。

## 中文精读

### 1. 从模糊问题到可用原型：写作缘起

- 作者回顾自己做数据科学新人时，一上手就训练机器学习模型，忽略了业务目标、上下文和成功指标。
- 当时的流程缺乏条理，可复现性和良好工程习惯几乎不在考虑范围内，早期省下的时间在生产阶段付出了高昂代价。
- 经过若干错误和导师指导后，作者总结了如何有效启动数据科学项目的经验，目标是让读者从模糊问题走到可用原型，不必重蹈他的覆辙。
- 原文开头的站点导航与标签、阅读时长等信息与正文无关，略去。

### 2. 理解意图与上下文

- 先弄清项目背后的意图，也就是“为什么”，可直接追问：预期的客户或业务收益是什么、现状有什么问题、为什么现在做这件事很重要。
- 以电商推荐引擎为例：若“提升互动”被定义为购买而非点击，标签选择就不同；若目标是收入而非转化，可能需按商品价格对购买标签加权，类似 YouTube 按观看时长给视频加权。
- 要尽量多收集上下文：同样一个特征存储（feature store）需求，供全组织使用就要可扩展、可伸缩、文档齐全，仅供单个应用临时使用则可以粗糙、投入少，甚至直接拒绝。
- 理解上下文的价值在于把方案的范围界定得恰到好处。

### 3. 定义需求、约束与指标

- 需求要从客户或业务视角描述收益：改进搜索可要求降低改写查询和放弃查询的比例；做推荐器要提升部件上的点击和归因购买；自动化人工分类则设定高置信度自动分类占比与节省人力。
- 需求也可写成约束：保险欺诈检测若每条命中都要人工核查，可限制误报率低于 25%；在推荐中引入冷启动新品（探索-利用）时，可约束整体转化率下降不超过 5%。
- 项目初期就应考虑生产要求：如延迟低于 80ms@99 分位、吞吐 8000 次/秒，可排除难以规模化部署的技术；没有实时特征存储就做不了基于会话的推荐，没有 GPU 集群预算可能要从更简单的浅层模型起步。
- 约束虽有限制，但能收窄搜索空间、省去对不可行方案的评估，让团队在除约束之外的空间里自由创新。
- 衡量需求需要一组指标，可能需要先用自家产品（dogfooding）体会客户体验。例如推荐部件每页推荐 100 个商品时可用 hit@100 或 ndcg@100，但实际屏幕上只显示 5 个、需滑动查看，于是把 k 改为 5，更贴合体验也更可能和线上 A/B 指标相关。

### 4. 尽早深挖数据

- 最好在需求定稿前就看数据，数据探索可能显示原定需求过于勉强。
- 以按标题和图片做商品分类为例：检查数据会发现部分商品图片与标题相同却分属不同类目（如同款 iPhone 手机壳被放在两个类目路径下），此时与其直接建模得到较差准确率，不如先做标签清洗和类目树重构。
- 可在数据探索阶段做快速的机器学习基线，耗时一两天即可，基线能暴露达成目标指标的潜在难度。
- 示例：相关方要求欺诈检测模型召回率和精确率均超过 95%，而基线只有 60%；从 60% 到 95% 虽非不可能，但可能是多年的艰巨工作，因此需要管理预期、调整目标指标并在召回与精确之间取舍。

### 5. 请教领域专家、论文与开源代码

- 快速熟悉陌生问题的捷径是观察别人怎么做。
- 要自动化人工流程（如保险理赔欺诈检测）时，坐到调查员身边学习其判断启发式，并把这些启发式转成机器学习特征。
- 遇到陌生的机器学习问题，可阅读相关论文和技术博客了解他人做法；尝试新算法或模型时，可在 GitHub 找开源实现，或在 HuggingFace 找现成的预训练模型。

### 6. 标准化并自动化实验流程

- 早期实验和原型像多数数据科学家一样在 Jupyter notebook 中进行，作者靠每周重构 notebook 防止其变得过于混乱。
- 跨 notebook 常用的代码片段重构进 .py 文件（如 metrics.py、plots.py、logger.py），而非复制粘贴单元格；手工步骤和注释掉的单元格会被清理，因为它们几个月后就会被遗忘。
- 最终目标是 notebook 能从头到尾无人工干预地运行，并在末尾输出指标与图表。
- 能自动化的尽量自动化：需要大量超参数调优的方法（如提升树、深度学习）作者用 Hyperopt，也提到 Optuna 和 Tune 等较新框架；指标跟踪用免费易用的 MLFlow；还可用 Papermill 参数化 notebook，让每次实验在独立 notebook 中运行。

### 7. 收尾：这样起步之后

- 做到以上各步后，团队会对业务意图、需求与约束有良好理解，对数据有感觉，手上有初始的论文与代码可参考，也有能快速迭代的实验流程。
- 此后便可更深入分析数据、尝试越来越复杂的技术，确信自己在解决正确的问题并交付可用的方案。
- 文末的引用信息、分享按钮、相关标签与订阅提示属于页面附属内容，不属于正文。

---
来源：LearnMap · 学径（https://oplearnx.com）
