参考答案
核对日期:2026-05-13。
1. 阶段练习参考方向
1.1 数学练习
向量点积、范数和余弦相似度:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([2, 0, 4])
dot = np.dot(a, b)
norm_a = np.linalg.norm(a)
norm_b = np.linalg.norm(b)
cosine = dot / (norm_a * norm_b)
分类指标:
- Accuracy:所有样本里预测正确的比例。
- Precision:预测为正的样本里真正为正的比例。
- Recall:真实为正的样本里被找出来的比例。
学习率:
- 过大:loss 震荡、发散,参数跨过最优区域。
- 过小:收敛很慢,有限训练时间内效果差。
损失函数和业务指标:
- 损失函数用于训练优化,必须可计算、通常可微。
- 业务指标用于判断业务收益,例如转化率、召回成本、人工节省。
- 两者相关但不等价,训练 loss 下降不保证业务目标改善。
1.2 Python / NumPy 练习
列均值和标准差:
import numpy as np
x = np.array([[1, 2, 3], [4, 5, 6]])
col_mean = x.mean(axis=0)
col_std = x.std(axis=0)
余弦相似度函数:
def cosine_similarity(a: np.ndarray, b: np.ndarray) -> float:
denominator = np.linalg.norm(a) * np.linalg.norm(b)
if denominator == 0:
return 0.0
return float(np.dot(a, b) / denominator)
梯度下降模拟的关键检查:
- 初始化参数。
- 计算预测和 loss。
- 手动计算梯度。
- 按学习率更新参数。
- 每步记录参数和 loss。
1.3 pandas / SQL 练习
数据概览应至少包含:
- 字段类型。
- 缺失率。
- 唯一值数量。
- 数值分布。
- 重复行数量。
SQL 最近 30 天活跃用户示例:
SELECT DISTINCT user_id
FROM events
WHERE event_time >= CURRENT_DATE - INTERVAL '30 days';
注意:真实项目要明确 event_time 的时区、是否包含当天、数据延迟和去重规则。
2. 项目评分样例
高分 notebook 应具备:
- 从原始数据读取开始,可从头运行。
- 每个字段有含义、类型、缺失率和异常检查。
- 可视化服务于问题,不是堆图。
- 结论区分事实、推断和假设。
- 记录环境、随机种子、数据版本和运行顺序。
不合格表现:
- notebook 单元格乱序运行才有结果。
- 只画图,不解释业务含义。
- 缺失值直接填均值但没有说明原因。
- 没有任何数据风险和后续任务设想。
3. 验收题参考答案
- 为什么 embedding 可以用向量表示?
Embedding 的目标是把对象映射到连续向量空间,使语义、行为或上下文相似的对象在空间中距离更近。模型通过训练把离散符号转成可计算表示,方便做检索、分类和聚类。
- 余弦相似度高是否一定代表事实相关?为什么?
不一定。余弦相似度表示向量方向接近,常代表语义相近,但不证明事实一致、因果相关或答案正确。例如“退款政策 2024”和“退款政策 2025”可能相似,但内容可能相反。
- 为什么训练模型需要损失函数?
损失函数把模型预测和目标之间的差异转成可优化数值,训练过程通过最小化损失更新参数。没有损失函数,模型不知道如何调整。
- 学习率太大或太小会怎样?
学习率太大容易震荡或发散;太小会收敛慢,训练成本高,也可能在有限步数内停留在较差区域。
- 缺失值处理有哪些策略?什么时候不能直接填均值?
策略包括删除、均值/中位数填充、类别填充、模型填充、增加缺失指示列、按业务规则处理。不能直接填均值的场景包括:缺失本身有业务含义、数据非随机缺失、分组差异大、时间序列会引入未来信息。
- 什么是采样偏差?它会如何影响 AI 系统?
采样偏差是训练或分析样本不能代表真实目标人群或线上分布。它会导致模型在被低估群体、长尾场景或未来数据上表现差。
- 为什么训练集和测试集不能混用?
测试集用于模拟未见数据,评估泛化能力。如果参与训练或调参,指标会虚高,无法代表线上效果。
- 相关性和因果性有什么区别?
相关性说明两个变量一起变化,因果性说明一个变量变化会导致另一个变量变化。相关可能来自共同原因、选择偏差或巧合,不能直接用于干预决策。
- 为什么 notebook 也需要可复现?
Notebook 经常用于实验和分析决策。如果不可复现,就无法审查数据处理、验证结论、比较模型或排查错误。可复现需要固定数据、顺序、参数、环境和随机种子。
- SQL 构造特征时最容易出现哪些时间范围错误?
常见错误包括使用标签时间之后的数据、窗口边界不一致、时区错误、数据延迟未处理、训练和线上特征计算逻辑不一致。这些会造成时间穿越和线上退化。