学习计划:从 Python开始到认识Data/AI
以 12 个阶段、每周 Know/Build/Think 三级任务和阶段成果组织的 52 周学习计划:从 Python、SQL、数据工程到机器学习、Transformer、RAG 与 Agent,最终交付一个完整 Data/AI 系统。
我的情况是工作之余学习,所以整个方案围绕三个词:
- 宽数学:理解、推导、实验、应用。
- 深工程:真正能独立构建系统。
- 懂 AI:理解核心原理,会用,会判断,不钻研究细节。
不照搬任何课程,只取与目标匹配的部分:数据库部分参考 CMU 15-445 的方向(Buffer Pool、B+Tree、MVCC、Query Planner),机器学习参考斯坦福 CS229 的主线,语言模型参考 CS336 的 from-scratch 思路,砍掉与目标不匹配的内容。
全年结构
| 阶段 | 周数 | 核心 | 阶段成果 |
|---|---|---|---|
| I | 1–4 | Python 深化 + 编程思维 | Python CLI 工具 |
| II | 5–8 | SQL + PostgreSQL | SQL 数据分析系统 |
| III | 9–12 | 数据库原理 + 数据建模 | 完整业务数据库 |
| IV | 13–16 | 数据工程 | ETL Pipeline |
| V | 17–20 | 概率统计 + 数学实验 | 统计分析项目 |
| VI | 21–24 | 线代 + 微积分 + 优化 | 数学/ML 实验库 |
| VII | 25–28 | Machine Learning | 手写 ML 项目 |
| VIII | 29–32 | 数据工程深化 + 分布式 | 完整数据 Pipeline |
| IX | 33–36 | Transformer + LLM | Mini Transformer |
| X | 37–40 | RAG + AI 应用 | RAG 系统 |
| XI | 41–44 | Agent + AI System | Agent 系统 |
| XII | 45–52 | 综合项目 | 完整 Data/AI 系统 |
一句话压缩:1–16 周建立真正的工程与数据基础;17–28 周用数学建立 ML 能力;29–32 周把数据工程推向完整系统;33–44 周理解并应用 LLM;45–52 周把全部能力合成一个真正的 Data/AI 系统。
执行标准:每周三级任务
每一周都按同一个标准执行:
- Level 1 — Know:知道是什么。能解释、能使用、能写简单代码、能完成标准题。
- Level 2 — Build:自己做出来。不看教程,组合多个知识点,解决真实问题,能 Debug、能测试。
- Level 3 — Think:自己发现问题并解决。没有标准答案,自己设计方案、做实验、比较方案、分析 trade-off、找性能瓶颈、解释失败原因。
真正决定一年后能力的是 Level 3。
计划按任务验收,不按时间。不写"周三学两小时数据库索引",而写"周三理解 B+Tree,给 100 万条数据建不同索引,用 EXPLAIN ANALYZE 比较查询计划,解释为什么联合索引在这个 Query 上有效"。前者是时间管理,后者才是能力训练。
52 周明细
阶段 I · Python(Week 1–4)→ Python CLI 工具
Week 1 · 对象模型与数据结构
- L1:list/tuple/dict/set、可变性、引用、浅拷贝/深拷贝、函数、作用域。
- L2:实现 LRU Cache、数据去重、频率统计、多字段排序。
- L3:设计内存 Key-Value Store(set/get/delete/exists/keys),分析不同数据结构的时间复杂度。验收:解释 dict 平均 O(1),以及这个结论什么时候失效。
Week 2 · 函数、抽象与模块化
- L1:函数、模块、包、异常、dataclass、type hint。
- L2:把 Week 1 项目拆成 storage/core/cli/config/tests,加类型检查、logging、配置。
- L3:设计插件式架构:CSV/JSON/Excel Reader → 统一接口 → Data Processor,新增数据源不修改核心逻辑。重点是设计接口,不是写代码。
Week 3 · 测试与调试
- L1:pytest、fixture、mock、异常测试。
- L2:给之前项目补单元、边界、异常、回归测试。
- L3:故意制造逻辑、性能、数据、并发四类 bug,只允许用日志 + debugger + test 定位,写 Bug→假设→实验→定位→修复 记录。
Week 4 · 算法与性能
- L1:Big-O、Hash、Heap、二分、BFS/DFS。
- L2:实现 Top-K、二分、BFS、DFS、LRU 并 benchmark。
- L3:百万级数据处理任务,比较 Python loop / Pandas / NumPy / Generator / Batch Processing,分析 CPU、内存、IO 和时间复杂度。
阶段 II · SQL + PostgreSQL(Week 5–8)→ SQL 数据分析系统
Week 5 · SQL 核心
- L1:SELECT、WHERE、GROUP BY、HAVING、JOIN、CASE、NULL。
- L2:真实业务数据集(客户/合同/订单/商品/销售)完成 20 个分析问题。
- L3:不用 Pandas,全部用 SQL 完成月度销售趋势、客户复购、Top-N、同比、环比、异常订单。
Week 6 · 高级 SQL
- L1:CTE、窗口函数、子查询。
- L2:Ranking、Running Total、Moving Average、Cohort、Retention。
- L3:沿销售人员→客户→合同→订单→回款链路只用 SQL 分析:哪些客户增长最快、哪些正在流失、哪些合同异常。
Week 7 · 数据建模
- L1:实体、关系、主键、外键、范式。
- L2:设计钢贸业务数据库:Customer、Product、Contract、Order、Delivery、Payment、Price。
- L3:故意制造数据冗余和更新/删除异常,用 1NF→2NF→3NF 解决,再讨论实际系统为什么有时要反范式。
Week 8 · PostgreSQL 与查询优化
- L1:Index、EXPLAIN、Transaction、View。
- L2:造 100 万/1000 万数据,比较无索引、单列索引、联合索引。
- L3:制造一个慢查询,EXPLAIN ANALYZE → 找瓶颈 → 改索引/查询 → benchmark。
阶段 III · 数据库系统(Week 9–12)→ 完整业务数据库
Week 9 · 存储内部结构
- L1:Page、Tuple、Heap、Buffer、磁盘与内存。
- L2:用 Python 实现简单 Page Storage:insert/read/update/delete。
- L3:模拟内存有限时数据库如何管理 Page,实现一个简单 LRU Buffer Pool。对应 CMU 15-445 的 Buffer Pool Manager 方向。
Week 10 · 索引
- L1:B-Tree、B+Tree、Hash Index。
- L2:手写简化 B+Tree:insert、search、range query。
- L3:比较 Linear Search、Hash、B+Tree,实验数据规模扩大 100 倍时性能如何变化。
Week 11 · 事务与 MVCC
- L1:ACID、隔离级别、脏读、不可重复读、幻读。
- L2:用 PostgreSQL 制造两个并发事务,观察不同 Isolation Level 的行为。
- L3:实现简化 MVCC 模拟器:transaction ID、version、visibility、commit、rollback。
Week 12 · 查询计划与恢复
- L1:Query Planner、Join 算法、Sort、Aggregate、WAL、Checkpoint。
- L2:用 PostgreSQL 优化 5 个慢查询。
- L3:设计简化 Query Planner:对 A JOIN B 比较 Nested Loop 和 Hash Join,解释数据库为什么选择这个执行计划。
阶段 IV · 数据工程(Week 13–16)→ 自动化 ETL Pipeline
Week 13 · ETL
- L1:Extract、Transform、Load、Schema、Validation。
- L2:构建 CSV/API/Excel → Python → PostgreSQL。
- L3:Pipeline 支持数据异常检测、类型错误、重复数据、缺失数据、错误日志。
Week 14 · 增量管道
- L1:Full Load、Incremental Load、Upsert。
- L2:每天只处理新增/变化数据。
- L3:保证幂等性——Pipeline 重复运行不产生重复数据。
Week 15 · Airflow
- L1:DAG、Task、依赖、Scheduler、Retry。Airflow 的本质是用 DAG 表达任务及其依赖,由调度器按依赖触发 Task。
- L2:把 Week 13–14 的管道改成 Airflow:Extract→Clean→Validate→Load→Quality Check。
- L3:加 Retry、Timeout、Alert、Backfill、Failure Recovery。
Week 16 · 数据质量
- L1:Completeness、Accuracy、Consistency、Uniqueness、Validity。
- L2:建立 Data Quality Framework。
- L3:设计数据异常自动检测系统,例如今天订单量突然下降 80% 自动报警。
阶段 V · 概率统计(Week 17–20)→ 统计分析项目
Week 17 · 概率基础
- L1:条件概率、独立性、Bayes。
- L2:Python 模拟 Monty Hall、生日问题、Bayesian updating。
- L3:自己设计模拟实验验证 Bayes 定理,对比理论概率与实验概率。
Week 18 · 随机变量与分布
- L1:PMF、PDF、CDF、期望、方差。
- L2:实现 Bernoulli、Binomial、Poisson、Gaussian。
- L3:Monte Carlo 估计 π、积分、概率,分析样本数量与误差的关系。
Week 19 · MLE 与贝叶斯
- L1:Likelihood、MLE、MAP、Prior、Posterior。
- L2:推导 Gaussian MLE,用 Python 验证。
- L3:设计 Bayesian A/B Test,回答"新方案真的比旧方案好吗"。
Week 20 · 统计推断
- L1:抽样、置信区间、假设检验、p-value。
- L2:完成 A/B Test 项目。
- L3:加入 Bootstrap、Statistical Power、Multiple Testing。
阶段 VI · 数学(Week 21–24)→ 数学/ML 实验库
Week 21 · 向量空间
- L1:向量、矩阵、线性变换、Rank、Basis。
- L2:NumPy 实现 Projection、Least Squares。
- L3:从几何角度解释 Linear Regression 为什么是一个 Projection 问题。
Week 22 · 特征值 + SVD + PCA
- L1:特征值、特征向量、SVD。
- L2:自己实现 PCA。
- L3:对真实高维数据做 PCA 降维→可视化→信息损失分析。
Week 23 · 梯度与反向传播
- L1:偏导、梯度、Jacobian、链式法则。
- L2:手推两层神经网络的 Backpropagation。
- L3:只用 NumPy 手写一个 MLP,不能使用自动求导。
Week 24 · 优化
- L1:Gradient Descent、SGD、Momentum、Adam。
- L2:比较不同优化器。
- L3:研究 Learning Rate 对收敛的影响:在 Rosenbrock 等函数上比较 SGD、Momentum、Adam、Newton 的收敛速度、稳定性和最终误差。
阶段 VII · Machine Learning(Week 25–28)→ 手写 ML 项目
Week 25 · Linear Regression
- L1:Least Squares、Normal Equation、Gradient Descent。
- L2:NumPy 手写。
- L3:比较 Normal Equation 与 Gradient Descent 在数据规模、维度、数值稳定性上的差异。
Week 26 · Logistic Regression 与正则化
- L1:Sigmoid、Log Loss、MLE。
- L2:手写 Logistic Regression。
- L3:加入 L1/L2,实验正则化强度与模型泛化的关系。
Week 27 · 树与集成
- L1:Decision Tree、Entropy、Gini、Random Forest。
- L2:实现简化 Decision Tree。
- L3:比较 Logistic、Tree、Random Forest、XGBoost——重点不是准确率,而是为什么这个数据集上某模型更好。
Week 28 · ML 完整项目
- L1:Data→Cleaning→Feature→Train→Validation→Test 走完一遍。
- L2:加 Cross Validation、调参、Error Analysis。
- L3:故意引入 Data Leakage / Distribution Shift,让自己发现问题。
阶段 VIII · 数据工程深化(Week 29–32)→ Batch + Streaming 数据系统
Week 29 · 数据仓库
- L1:OLTP/OLAP、Fact、Dimension、Star Schema。
- L2:设计企业销售数仓。
- L3:实现 ODS→DWD→DWS→ADS,解释每一层为什么存在。
Week 30 · Parquet 与列式存储
- L1:Row vs Column、压缩、分区。
- L2:比较 CSV 与 Parquet。
- L3:构建 Partitioned Data Lake,测试数据规模 × 查询性能 × 存储空间。
Week 31 · Spark
- L1:DataFrame、Transformation、Action、Lazy Evaluation。
- L2:把 Pandas Pipeline 迁移到 Spark。
- L3:制造数据倾斜 / Shuffle,分析 Spark 为什么突然变慢。
Week 32 · Kafka 与流处理
- L1:Producer、Consumer、Topic、Partition、Offset。
- L2:实现 Producer→Kafka→Consumer→PostgreSQL。
- L3:处理 Retry、Duplicate、Ordering、Consumer Failure,想清楚 At-least-once / At-most-once / Exactly-once 到底意味着什么。
阶段 IX · Transformer(Week 33–36)→ Mini Transformer / Mini LLM
Week 33 · Tokenization 与 Embedding
- L1:Token、Vocabulary、BPE、Embedding。
- L2:实现一个简单 Tokenizer。
- L3:分析不同 Tokenizer 对中文/英文/代码的影响。
Week 34 · Attention
- L1:Q、K、V、Attention Score、Softmax。
- L2:NumPy 手写 Self-Attention。
- L3:可视化 Attention Matrix,分析不同 Token 之间为什么产生不同权重。
Week 35 · Transformer
- L1:Multi-Head Attention、FFN、Residual、LayerNorm、Positional Encoding。
- L2:PyTorch 实现 Mini Transformer。
- L3:不用现成 Transformer 库,自己搭完整 forward。
Week 36 · Mini 语言模型
- L1:Next Token Prediction、Cross Entropy、Training Loop。
- L2:训练一个小型 Language Model。
- L3:做 Context Length、Embedding Size、层数、Learning Rate 实验,观察模型容量与 Loss 的关系。
阶段 X · RAG(Week 37–40)→ 可评价的 RAG 系统
Week 37 · Embedding 与向量检索
- L1:Embedding、Cosine Similarity、Vector DB。
- L2:实现 Document→Chunk→Embedding→Vector Search。
- L3:比较不同 Embedding 模型,建立自己的 Evaluation Dataset。
Week 38 · 检索
- L1:Dense Retrieval、BM25、Hybrid Search。
- L2:实现 BM25 + Vector。
- L3:加入 Reranker,比较 Vector、BM25、Hybrid、Hybrid + Rerank。
Week 39 · RAG 评估
- L1:Recall@K、Precision@K、MRR、NDCG。
- L2:建立 100–300 条 Ground Truth Query。
- L3:系统比较 Chunking / Embedding / Retrieval / Reranking,回答到底哪个 RAG 方案最好、为什么。
Week 40 · 生产级 RAG
- L1:Metadata、Filtering、Query Rewrite、Citation。
- L2:构建完整链路:Document→Parser→Chunk→Embedding→Vector DB→Retriever→Reranker→LLM。
- L3:故意制造无答案问题、相似问题、长文档、错误文档、冲突信息,测试幻觉率、Recall、Faithfulness。
阶段 XI · Agent + AI 系统(Week 41–44)→ Agent 系统
Week 41 · Tool Calling
- L1:Function Calling、Structured Output。
- L2:让 LLM 调用 SQL、Calculator、Search、API。
- L3:设计 LLM→判断→工具→结果→再判断的循环,并处理工具失败。
Week 42 · Agent Workflow
- L1:State、Workflow、Agent Loop。
- L2:实现 SQL Agent:用户问题→SQL→执行→解释。
- L3:限制 Agent 不允许随意执行危险 SQL,设计 Permission、Validation、Human Approval。
Week 43 · 评估与可观测性
- L1:Logging、Tracing、Latency、Cost。
- L2:记录 Prompt→Model→Tool→Latency→Token→Cost→Answer。
- L3:建立 Evaluation Dashboard:哪个环节最慢、哪个模型最贵、哪类问题最容易失败。
Week 44 · AI 可靠性
- L1:Retry、Timeout、Fallback、Cache。
- L2:加入 Model fallback、API failure、Tool failure 处理。
- L3:攻击自己的系统:Prompt Injection、Data Leakage、Tool Abuse、Hallucination,然后修复。
阶段 XII · 综合项目(Week 45–52)→ 完整 Data/AI 系统
从这里开始不再学习新知识,把前 44 周的能力压成一个真正的系统:企业数据智能系统,围绕熟悉的业务,使用脱敏/公开/模拟数据。架构:
数据源 → ETL → PostgreSQL → Data Warehouse → ML/Analytics → Embedding → RAG → LLM → Agent → API
Week 45 · 项目设计
- L1:系统设计图。
- L2:Database Schema + Data Pipeline 设计。
- L3:写 Architecture Decision Record,解释为什么这么设计。
Week 46 · Data Layer
- Raw Data→ETL→Validation→PostgreSQL→Warehouse。
- 必须支持 Incremental、Idempotency、Data Quality、Backfill。
Week 47 · Analytics / ML Layer
- SQL Analytics、Feature Engineering、ML Model。
- 建立自动化 Model Evaluation。
Week 48 · RAG Layer
- Documents→Embedding→Vector DB→Hybrid Retrieval→Reranker→LLM。
- 建立 RAG Evaluation Dataset。
Week 49 · Agent Layer
- LLM→Intent→Tool(SQL / Search / Analytics / Knowledge Base)。
- 实现 Permission + Validation + Human Approval。
Week 50 · 工程化
- FastAPI、Docker、Logging、Testing、Config、Monitoring,部署整个系统。
- 挑战:模拟数据库挂掉、API 挂掉、LLM API 失败、Pipeline 失败,系统必须能够恢复。
Week 51 · 性能与评估
- Data:Pipeline 速度、Query 速度、Data Quality;ML:Accuracy、Precision、Recall、Error Analysis;RAG:Recall@K、MRR、Faithfulness;AI:Latency、Token、Cost、Failure Rate。
- 找出至少 3 个系统瓶颈并优化。这是整个项目最重要的一周。
Week 52 · 最终答辩
- 不再大量写代码,做一次真正的 Technical Review,回答:Python 为什么这样设计;为什么这个 Index 有效;Pipeline 失败怎么办;为什么出现 Overfitting;Gradient Descent 为什么能工作;Attention 到底在做什么;召回结果为什么不好;这个任务为什么需要 Agent;数据量扩大 10 倍怎么办。
一年结束时的产出
不是 52 个 Notebook,而是 7 个东西:
- Python 工程项目:真正可用的 CLI/自动化工具。
- 数据库项目:PostgreSQL + 数据建模 + SQL 优化 + Transaction。
- 数据工程项目:API/File → ETL → Quality → Airflow → PostgreSQL → Spark/Kafka。
- ML 项目:数学→NumPy→ML from Scratch→sklearn→真实数据集→Error Analysis。
- Mini Transformer:Tokenizer→Embedding→Attention→Transformer→Training→Inference。
- RAG / Agent 系统:Knowledge→Retrieval→Reranking→LLM→Tools→Agent→Evaluation。
- 最终项目:把以上全部串起来的完整 Data/AI 系统。
最终得到的不是证书和 Demo,而是一个能解释每个设计决策的系统。
贯穿全年的原则
- 不追求学完,追求能力闭环。
- 每周必须有产出:代码、实验、数据、Benchmark、图表、文档、系统、推导,但不能只有看视频、看书、做笔记。
- 每 4 周必须形成一个阶段成果,不能 52 周一直"学习"。
- 数学必须落到代码:SVD→PCA→NumPy→数据降维,而不是看完线代教材。
- 工程必须落到系统:ETL→Airflow→Retry→Backfill→Data Quality,而不是"我学过 Airflow"。
- AI 必须落到理解和使用:Attention→Mini Transformer→RAG→Agent,而不是"我会调用 GPT API"。
来源与延伸阅读
- CMU 15-445 Intro to Database Systems — 阶段 III 的 Buffer Pool、B+Tree、MVCC、Query Planner 方向
- Stanford CS229 Machine Learning — 阶段 V–VII 的数学与 ML 主线
- Stanford CS336 Language Modeling from Scratch — 阶段 IX 的 from-scratch 语言模型思路