135 lines
7.2 KiB
Markdown
135 lines
7.2 KiB
Markdown
|
|
# AI 全栈工程化通用指南:从思维到落地的完整路径
|
|||
|
|
|
|||
|
|
这份指南是为了帮助你建立起一套**通用的 AI 项目开发方法论**。无论你是在做目前的 CS2 胜率预测,还是未来做大模型 RAG 应用,这套思维框架和知识体系都是通用的。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 第一阶段:问题定义与方案设计 (The "Why" & "What")
|
|||
|
|
|
|||
|
|
在写第一行代码之前,必须先想清楚的问题。
|
|||
|
|
|
|||
|
|
### 🧠 核心思考 (Thinking Steps)
|
|||
|
|
1. **业务翻译**:用户想要的“功能”是什么?转化为数学问题是什么?
|
|||
|
|
* *Clutch 项目例子*:用户想要“预测胜率” -> 转化为“二分类问题”(T赢 或 CT赢)。
|
|||
|
|
2. **可行性评估**:数据哪里来?特征够不够?
|
|||
|
|
* *思考*:如果只有比赛结果没有过程数据,能做实时预测吗?(不能)。
|
|||
|
|
3. **成功标准**:怎么才算做好了?
|
|||
|
|
* *思考*:是准确率(Accuracy)重要,还是响应速度(Latency)重要?(实时预测对速度要求高)。
|
|||
|
|
|
|||
|
|
### 📚 必备理论 (Theory)
|
|||
|
|
* **机器学习类型**:
|
|||
|
|
* **监督学习 (Supervised)**:有标签(如分类、回归)。*Clutch 项目属于此类。*
|
|||
|
|
* **无监督学习 (Unsupervised)**:无标签(如聚类、降维)。
|
|||
|
|
* **强化学习 (RL)**:通过奖励机制学习(如 AlphaGo)。
|
|||
|
|
* **评估指标**:
|
|||
|
|
* **分类**:Accuracy, Precision, Recall, F1-Score, AUC-ROC。
|
|||
|
|
* **回归**:MSE (均方误差), MAE (平均绝对误差)。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 第二阶段:数据工程 (Data Engineering)
|
|||
|
|
|
|||
|
|
数据决定了模型的上限。
|
|||
|
|
|
|||
|
|
### 🧠 核心思考 (Thinking Steps)
|
|||
|
|
1. **数据获取 (ETL)**:如何自动化地把原始数据(Demo文件)变成表格?
|
|||
|
|
* *Clutch 实践*:`demoparser2` 解析 -> JSON -> Pandas DataFrame。
|
|||
|
|
2. **数据清洗**:如何处理“脏”数据?
|
|||
|
|
* *思考*:遇到空值(Null)怎么办?填0?填平均值?还是删除?
|
|||
|
|
* *Clutch 实践*:去除热身阶段(Warmup)的数据,因为那不影响胜负。
|
|||
|
|
3. **存储效率**:数据量大了怎么存?
|
|||
|
|
* *思考*:CSV 太慢太占空间 -> 改用 Parquet + Snappy/Zstd 压缩。
|
|||
|
|
|
|||
|
|
### 📚 必备理论 (Theory)
|
|||
|
|
* **数据结构**:
|
|||
|
|
* **结构化数据**:表格(SQL, CSV, Parquet)。
|
|||
|
|
* **非结构化数据**:文本、图像、音频(需要 Embedding 转化为向量)。
|
|||
|
|
* **归一化 (Normalization)**:把不同量纲的数据缩放到同一范围(如 0-1),防止大数值特征主导模型。
|
|||
|
|
* **编码 (Encoding)**:
|
|||
|
|
* **One-Hot Encoding**:把分类变量(如地图 de_dust2)变成 0/1 向量。
|
|||
|
|
* **Label Encoding**:把分类变量变成数字(0, 1, 2)。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 第三阶段:特征工程 (Feature Engineering)
|
|||
|
|
|
|||
|
|
这是将“行业经验”注入模型的关键步骤。
|
|||
|
|
|
|||
|
|
### 🧠 核心思考 (Thinking Steps)
|
|||
|
|
1. **特征构建**:什么因素影响结果?
|
|||
|
|
* *Clutch 实践*:经济(钱多枪好)、位置(是否控制包点)、人数(5v3 优势)。
|
|||
|
|
2. **特征选择**:不是特征越多越好,哪些是噪音?
|
|||
|
|
* *思考*:玩家的皮肤颜色会影响胜率吗?(大概率不会,这是噪音,要剔除)。
|
|||
|
|
3. **数据泄露 (Leakage)**:这是新手最容易犯的错!
|
|||
|
|
* *警惕*:训练数据里包含了“未来”的信息。例如,用“全场总击杀数”预测“第一回合胜率”,这是作弊。
|
|||
|
|
|
|||
|
|
### 📚 必备理论 (Theory)
|
|||
|
|
* **特征重要性**:通过 Information Gain(信息增益)或 SHAP 值判断哪些特征最有用。
|
|||
|
|
* **维度灾难**:特征太多会导致模型变慢且容易过拟合。
|
|||
|
|
* **领域知识 (Domain Knowledge)**:不懂 CS2 就想不到“Crossfire”(交叉火力)这个特征。AI 工程师必须懂业务。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 第四阶段:模型开发与训练 (Model Development)
|
|||
|
|
|
|||
|
|
### 🧠 核心思考 (Thinking Steps)
|
|||
|
|
1. **模型选择**:杀鸡焉用牛刀?
|
|||
|
|
* *思考*:表格数据首选 XGBoost/LightGBM(快、准)。图像/文本首选 Deep Learning。
|
|||
|
|
2. **基准线 (Baseline)**:先做一个最傻的模型。
|
|||
|
|
* *思考*:如果我只猜“钱多的一方赢”,准确率有多少?如果你的复杂模型跑出来和这个一样,那就是失败。
|
|||
|
|
3. **过拟合 (Overfitting) vs 欠拟合 (Underfitting)**:
|
|||
|
|
* **过拟合**:死记硬背,做题全对,考试挂科(在训练集 100%,测试集 50%)。
|
|||
|
|
* **欠拟合**:书没读懂,啥都不会。
|
|||
|
|
|
|||
|
|
### 📚 必备理论 (Theory)
|
|||
|
|
* **算法原理**:
|
|||
|
|
* **决策树 (Decision Tree)**:if-else 规则的集合。
|
|||
|
|
* **集成学习 (Ensemble)**:三个臭皮匠顶个诸葛亮(Random Forest, XGBoost)。
|
|||
|
|
* **神经网络 (Neural Networks)**:模拟人脑神经元,通过反向传播(Backpropagation)更新权重。
|
|||
|
|
* **损失函数 (Loss Function)**:衡量模型预测值与真实值的差距(越小越好)。
|
|||
|
|
* **优化器 (Optimizer)**:如何调整参数让 Loss 变小(如 Gradient Descent 梯度下降)。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 第五阶段:评估与验证 (Evaluation & Validation)
|
|||
|
|
|
|||
|
|
### 🧠 核心思考 (Thinking Steps)
|
|||
|
|
1. **验证策略**:怎么证明模型没“作弊”?
|
|||
|
|
* *Clutch 实践*:把 2 场完整的比赛完全隔离出来做测试,绝不让模型在训练时看到这两场的一分一秒。
|
|||
|
|
2. **坏案分析 (Bad Case Analysis)**:模型错在哪了?
|
|||
|
|
* *思考*:找出预测错误的样本,人工分析原因。是特征没提取好?还是数据本身有误?
|
|||
|
|
|
|||
|
|
### 📚 必备理论 (Theory)
|
|||
|
|
* **交叉验证 (Cross-Validation)**:把数据切成 K 份,轮流做训练和验证,结果更可信。
|
|||
|
|
* **混淆矩阵 (Confusion Matrix)**:
|
|||
|
|
* TP (真阳性), TN (真阴性), FP (假阳性 - 误报), FN (假阴性 - 漏报)。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 第六阶段:工程化与部署 (Engineering & Deployment)
|
|||
|
|
|
|||
|
|
模型只有上线了才有价值。
|
|||
|
|
|
|||
|
|
### 🧠 核心思考 (Thinking Steps)
|
|||
|
|
1. **实时性**:预测需要多久?
|
|||
|
|
* *Clutch 实践*:CS2 必须在 1 秒内给出结果,所以 ETL 和推理必须极快。
|
|||
|
|
2. **接口设计**:前端怎么调?
|
|||
|
|
* *思考*:REST API (Flask/FastAPI) 是标准。输入 JSON,输出 JSON。
|
|||
|
|
3. **监控与维护**:模型变傻了吗?
|
|||
|
|
* *概念*:**数据漂移 (Data Drift)**。比如 CS2 更新了版本,枪械伤害变了,旧模型就会失效,需要重新训练。
|
|||
|
|
|
|||
|
|
### 📚 必备理论 (Theory)
|
|||
|
|
* **API**:HTTP 协议,POST/GET 请求。
|
|||
|
|
* **容器化**:Docker,保证“在我电脑上能跑,在服务器上也能跑”。
|
|||
|
|
* **CI/CD**:持续集成/持续部署,自动化测试和发布流程。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 总结:AI 工程师的能力金字塔
|
|||
|
|
|
|||
|
|
1. **Level 1: 调包侠** (会用 `model.fit`, `model.predict`) —— *你已经超越了这个阶段。*
|
|||
|
|
2. **Level 2: 数据匠** (懂特征工程,懂数据清洗,懂业务逻辑) —— *你目前正在此阶段深耕。*
|
|||
|
|
3. **Level 3: 架构师** (懂全流程,懂系统设计,懂模型部署与监控,懂底层原理) —— *这是你的目标。*
|
|||
|
|
|
|||
|
|
建议你在这个项目中,每做一步,都回过头来看看这份指南,问自己:**“我现在处于哪个阶段?我在思考什么问题?我用到了什么理论?”**
|