一个 5 万样本、50 维的二分类任务,你直接用 SVC(kernel='rbf') 训练,跑了一小时没跑完、内存也吃紧。换成 LinearSVC 后 3 分钟训完,但验证集 F1 掉了 4 个点。请说明 RBF 核在这里慢在哪,并给出 2~3 条能同时保住效果的替代方案。
面试官在考什么
考察对核方法计算/内存复杂度的量化认知,以及在“快但效果差”和“好但跑不动”之间做工程折中的能力。
回答框架 · 前两步
- 慢和吃内存的根源是核矩阵规模:libsvm 需要构造 n×n 的核矩阵,5 万样本用 float64 存储就是 5e4²×8B ≈ 20GB,计算量约 O(n²d) 到 O(n³),和维度关系不大,和样本量平方相关。LinearSVC 在原始 50 维空间求解,代价大致随 n·d 线性增长。
- 效果掉的原因:数据在原始 50 维空间近似线性不可分,丢掉核映射后假设空间变小;同时 LinearSVC 默认是 squared hinge + L2,默认 C 对这种量级的数据常常欠拟合,不调 C 就下结论不公平。
还有 3 条答案要点、 3 层追问、 4 个常见坑, 以及针对你简历的追问路径,在定制报告里。
延伸阅读
想看这个方向的整体准备路线? 进入「机器学习基础」方向页
同一能力域的其他题
- GBDT 和 XGBoost 的关系是什么?XGBoost 相比 GBDT 做了哪些工程与数学上的改进?
- 特征重要性你一般怎么看?树模型的 gain 重要性和 permutation importance 各有什么局限?
- 你在做一个点击率预估模型,训练集 2000 万条,真实正样本率是 1%。你用带截距的逻辑回归训练完之后,验证集 AUC=0.78(看起来正常),但把验证集上的预测概率求平均得到 0.29。请说出你会按什么顺序排查,每一步的判据是什么。
- 某推荐场景有 3 亿条训练样本、2 万维特征(约 95% 的取值为 0,以稀疏 one-hot 为主)。业务要求:全量重训能在 2 小时内跑完,线上单次预测 p99 < 10ms,资源只有 CPU 集群、没有 GPU。现在有三个方案:(A) 逻辑回归 + FTRL 在线学习,边服务边更新;(B) 逻辑回归 + L-BFGS 离线全量重训,每天一次;(C) 直接换成 2 层 MLP。请给出你的选型,并说清楚在什么监控信号出现时你会推翻它。
- 线上一个 LR 二分类模型,每天全量重训,离线训练 AUC 稳定在 0.790,但近 7 天线上 AUC 从 0.780 单调掉到 0.762;模型容量、特征列表、样本量都没有改动。PM 要求本周内把模型换成 XGBoost 来提效果。你作为模型负责人,第一周会做什么?请给出你的归因顺序和判断依据。
- 手头数据 2 万条样本、200 维稠密特征,正负样本基本平衡,画图看决策边界明显非线性。候选方案:(A) RBF 核 SVM;(B) 线性 SVM + 人工构造的交叉特征;(C) GBDT。约束是:只能在一台 16 核 CPU、无 GPU 的机器上训练,要求 30 分钟内训完,之后每月重训一次。你选哪个,并说清核 SVM 在这个规模下的瓶颈具体在哪。