常见算法原理面试:决策树、SVM、贝叶斯、集成方法
面试中算法原理类问题核心考察 “能否用结构化语言拆解黑盒”。以下框架+表格+卡片帮你5分钟内覆盖经典算法高频考点。
四大算法核心要点对比
| 算法 | 核心思想 | 损失函数/目标 | 关键参数 | 防过拟合手段 | 典型应用 |
|---|---|---|---|---|---|
| 决策树 | 根据特征划分使信息纯度提升 | 信息增益 / 基尼系数 | max_depth, min_samples_split | 预剪枝、后剪枝、随机森林 | 风控评分卡、用户分层 |
| SVM | 最大化间隔分离超平面 | 合页损失 + 正则项 | C, kernel, gamma | 软间隔、核函数隐式映射 | 文本分类、图像识别(小样本) |
| 朴素贝叶斯 | 特征条件独立假设下的后验概率 | 极大似然估计 | 平滑因子(Laplace) | 特征假设本身有限制能力 | 垃圾邮件过滤、情感分析 |
| 集成学习 | 通过组合弱学习器降低偏差/方差 | 依赖基学习器损失 | n_estimators, learning_rate | 随机子空间(Bagging)、正则化(Boosting) | 推荐排序、CTR预估 |
决策树:请解释决策树的构建过程,以及如何防止过拟合?
🧠 面试官考察点
- 是否理解递归分裂的底层逻辑
- 是否掌握剪枝策略和参数约束
- 能否区分信息增益与基尼系数的适用场景
📐 回答框架 (核心思想 → 分裂准则 → 停止条件 → 剪枝手段)
- 一句话:通过递归选择最优特征划分数据,使子节点纯度最高。
- 分裂准则:分类用信息增益/基尼系数,回归用均方误差。
- 停止条件:达到最大深度或样本数阈值。
- 过拟合手段:预剪枝(限制深度/叶子数)、后剪枝(用验证集合并叶节点)、集成化(随机森林)。
🎤 简短示例回答
决策树从根节点开始,每次选信息增益最大的特征分裂,直到满足停止条件。过拟合通常用预剪枝控制max_depth和min_samples_leaf,或用后剪枝根据验证集错误率合并节点。工业界更倾向用随机森林替代单棵树。
💬 可能追问
- 信息增益与信息增益率的区别?
- 决策树如何处理连续特征?
- CART树为什么是二叉树?
⚠️ 避坑提醒: 不要只说“剪枝”,要明确“预剪枝 vs 后剪枝”;不要忽略决策树对噪声敏感这个缺点。
SVM:请解释SVM的核技巧和软间隔的作用。
🧠 面试官考察点
- 是否理解核技巧的本质(隐式映射)
- 是否清楚软间隔与正则化的关系
- 能否对比线性核与RBF核的适用场景
📐 回答框架 (间隔最大化 → 对偶形式 → 核函数 → 软间隔C)
- 引入核函数后的对偶问题中只需计算内积,避免显式高维映射。
- 软间隔允许部分样本被误分,通过C控制惩罚力度。
- 线性核适合特征维度高且线性可分;RBF核适合非线性但需调gamma。
🎤 简短示例回答
核技巧将原始数据通过内积隐式映射到高维空间,使线性不可分问题线性可分;软间隔引入松弛变量和惩罚系数C,允许少量误分类以提升泛化性。常用RBF核处理非线性数据,但需配合交叉验证调gamma和C。
💬 可能追问
- SVM中支持向量是如何确定的?
- 核函数的选择经验(何时用线性核/多项式核/RBF)?
- SVM为什么用合页损失而不用交叉熵?
⚠️ 避坑提醒: 不要模糊说“映射到高维”,要强调“隐式通过核函数计算内积”;忘记软间隔等价于正则项是常见失分点。
集成学习:请比较Boosting和Bagging的区别,并举例说明。
🧠 面试官考察点
- 是否理解偏差-方差分解与集成策略的关系
- 能否清晰对比并行/串行、权值/等权、弱/强基学习器
- 是否了解经典算法(随机森林、GBDT、XGBoost)的本质差异
📐 回答框架 (集成方式 → 基学习器关系 → 目标 → 代表算法)
- Bagging (并行+随机采样):降低方差,基学习器独立训练,如随机森林。
- Boosting (串行+加权):降低偏差,基学习器依赖前一个错误,如GBDT、AdaBoost。
- 实际应用:数据量小且基学习器稳定时倾向Bagging;需要高精度且允许串行耗时则用Boosting。
🎤 简短示例回答
Bagging对样本随机有放回采样训练多个弱学习器,并行投票/平均,主要降低方差,代表是随机森林。Boosting串行训练,每轮关注前一轮的伪残差,加权组合,主要降低偏差,代表是GBDT和XGBoost。两者在使用场景上互补。
💬 可能追问
- 随机森林中特征随机选择的原理?
- GBDT为什么用负梯度拟合残差?
- XGBoost相对GBDT做了哪些优化?
⚠️ 避坑提醒: 不要混淆“Bagging降低方差、Boosting降低偏差”的原因;举例时优先说随机森林和GBDT,避免冷门算法。