机器学习经典面试题 — 20 道高频推导 + 原理题¶
重要性:机器学习基础仍是很多 AI 算法岗的高频考察内容,公开面经里也经常出现这类题 难度标注:🟢 基础 | 🟡 进阶 | 🔴 困难 公司标签:[字节] [百度] [Google] [Meta] [阿里] [华为] 等
⚠️ 标签说明(2026-04-03):本页公司标签表示“公开面经与岗位讨论里常出现这类题”,用于帮助你建立提问场景,不代表一一对应的官方真题。来源口径见 27-2025-2026大厂真实面经题型地图、29-2025-2026大厂公开面经题目全量索引 和 28-题目真实性与来源维护说明。
一、监督学习( 8 题)¶
Q1: 逻辑回归的损失函数推导 🟡 [字节] [百度] [Google]¶
题目:请推导逻辑回归的交叉熵损失函数,并解释为什么不用 MSE 。
参考答案:
模型假设:
似然函数(对于单样本):
对数似然(取负号得损失函数):
为什么不用 MSE:
- Sigmoid + MSE 的损失面是非凸的,存在大量局部极小值
- 对线性逻辑回归模型而言,交叉熵目标是凸优化问题,因此更容易求到全局最优
- MSE 在 \(\hat{y}\) 接近 0 或 1 时梯度接近 0 (学习停滞),交叉熵不会
追问:逻辑回归的梯度是什么形式? → \(\frac{\partial \mathcal{L}}{\partial w} = \frac{1}{N}\sum_{i}(\hat{y}_i - y_i)x_i\) ,形式非常简洁
追问:逻辑回归能处理非线性问题吗? → 原生不能,但可以通过特征交叉、多项式特征或核方法扩展
Q2: SVM 的核心思想和数学推导 🔴 [Google] [华为] [百度]¶
题目:解释 SVM 的最大间隔原理,写出优化目标,并解释核技巧。
参考答案:
核心思想:找到一个超平面 \(w^Tx + b = 0\),使得离超平面最近的样本(支持向量)到超平面的距离最大化。
硬间隔 SVM 优化目标:
软间隔 SVM(允许部分样本违反约束):
C 是惩罚参数, C 越大越不允许误分类。
核技巧:
- 对偶问题只涉及样本间的内积 \(x_i^T x_j\)
- 用核函数 \(K(x_i, x_j)\) 替换内积,等价于将数据映射到高维空间
- 常见核函数:
- 线性核:\(K(x,z) = x^Tz\)
- 多项式核:\(K(x,z) = (x^Tz + c)^d\)
- RBF 核:\(K(x,z) = \exp(-\gamma\|x-z\|^2)\)
追问: SVM 和逻辑回归的区别? → SVM 只关注支持向量, LR 关注所有样本; SVM 用合页损失, LR 用交叉熵; SVM 有核技巧可处理非线性
Q3: 决策树的分裂准则 🟢 [字节] [阿里] [华为]¶
题目:解释 ID3 、 C4.5 、 CART 三种决策树的分裂准则差异。
参考答案:
- ID3:分裂准则为信息增益|特点:偏向取值多的特征(多值偏好)
- C4.5:分裂准则为信息增益比|特点:修正 ID3 的多值偏好
- CART:分裂准则为 Gini 指数(分类)/ MSE(回归)|特点:只生成二叉树
信息增益:
信息增益比:
其中 \(H_A(D) = -\sum_v \frac{|D_v|}{|D|}\log\frac{|D_v|}{|D|}\) 是特征 A 的固有值。
Gini 指数:
追问:决策树如何防止过拟合? → 预剪枝(限制深度/叶子节点最小样本数)和后剪枝(生成完整树后自底向上剪枝)
Q4: XGBoost vs LightGBM vs CatBoost 🟡 [字节] [阿里] [美团]¶
题目:比较三种常见 GBDT 框架的核心差异。
参考答案:
- 分裂策略:XGBoost 为 Level-wise(按层生长);LightGBM 为 Leaf-wise(按叶子生长);CatBoost 为 Oblivious Tree(对称树)
- 类别特征:XGBoost 需手动编码;LightGBM 原生支持;CatBoost 原生支持(Ordered TS)
- 速度:XGBoost 中等;LightGBM 快(直方图 + GOSS);CatBoost 中等
- 过拟合控制:XGBoost 使用正则化 + 剪枝;LightGBM 使用 GOSS + EFB;CatBoost 使用 Ordered Boosting
- 缺失值:三者都原生支持
- GPU 支持:三者都支持
XGBoost 的目标函数(面试重点):
其中 T 是叶子节点数,\(w_j\) 是叶子权重,\(\gamma\) 和 \(\lambda\) 是正则化系数。
追问: XGBoost 的二阶泰勒展开有什么优势? → 可以用一阶梯度 \(g_i\) 和二阶梯度 \(h_i\) 直接求叶子节点的最优权重:\(w_j^* = -\frac{\sum_{i \in I_j} g_i}{\sum_{i \in I_j} h_i + \lambda}\),收敛更快且支持自定义损失函数
Q5: 偏差-方差分解 🟢 [Google] [Meta] [字节]¶
题目:解释偏差-方差权衡( Bias-Variance Tradeoff ),并举例说明。
参考答案:
- 偏差 (Bias):模型预测的期望值与真实值的差距|模型倾向:高偏差 = 欠拟合
- 方差 (Variance):模型在不同训练集上预测结果的波动|模型倾向:高方差 = 过拟合
- 不可约误差:数据本身的噪声,任何模型都无法消除|模型倾向:—
模型复杂度的影响:
经典例子:
- 线性回归拟合非线性数据 → 高偏差
- 高阶多项式拟合少量数据 → 高方差
- 随机森林通过 Bagging 降低方差
- Boosting 通过逐步拟合残差降低偏差
追问:如何判断模型是高偏差还是高方差? → 训练和验证误差都高 = 高偏差;训练误差低、验证误差高 = 高方差
Q6: L1 和 L2 正则化的区别 🟢 [字节] [百度] [阿里]¶
题目:解释 L1 和 L2 正则化的数学形式和效果差异。
参考答案:
- 惩罚项:L1(Lasso)为 \(\lambda\sum\lvert w_i\rvert\);L2(Ridge)为 \(\lambda\sum w_i^2\)
- 效果:L1 产生稀疏解(特征选择);L2 让权重趋近于 0 但通常不为 0
- 几何解释:L1 是菱形等值线,容易在坐标轴相切;L2 是圆形等值线
- 适用场景:L1 适合特征选择、高维稀疏数据;L2 适合防止过拟合、多重共线性
- 求解:L1 不可导(需次梯度);L2 可导且常有闭式解
为什么 L1 能产生稀疏解:
- L1 正则化在几何上是菱形约束区域
- 目标函数等高线与菱形顶点相切的概率高
- 顶点处某些权重恰好等于 0 → 稀疏
追问: ElasticNet 是什么? → L1 + L2 的组合:\(\lambda_1\sum|w_i| + \lambda_2\sum w_i^2\),兼顾特征选择和稳定性
Q7: 随机森林 vs GBDT 🟡 [字节] [美团] [阿里]¶
题目:比较随机森林和 GBDT 的核心差异。
参考答案:
- 集成方式:随机森林是 Bagging(并行);GBDT 是 Boosting(串行)
- 基学习器:随机森林使用独立决策树;GBDT 使用逐步拟合残差的决策树
- 降低的误差:随机森林主要降低方差;GBDT 主要降低偏差
- 过拟合:随机森林不易过拟合;GBDT 更容易过拟合(需控制轮数)
- 特征采样:随机森林每棵树随机选特征子集;GBDT 通常使用全部特征
- 并行化:随机森林天然可并行;GBDT 存在顺序依赖
- 缺失值:随机森林处理较好;GBDT 常需额外处理
追问: Bagging 为什么能降低方差? → \(\text{Var}(\bar{X}) = \frac{\sigma^2}{n}\),多个独立模型取平均,方差降低。实际中树不完全独立(用随机特征子集提高独立性)。
Q8: 处理类别不平衡的方法 🟡 [字节] [美团] [阿里] [华为]¶
题目:正负样本比例 1:100 时如何训练?列举并比较各种方法。
参考答案:
- 数据层面:过采样(SMOTE)|说明:合成少数类新样本
- 数据层面:欠采样(随机/Tomek Links)|说明:减少多数类样本
- 数据层面:数据增强|说明:对少数类做变换生成新样本
- 算法层面:类权重调整|说明:
class_weight='balanced' - 算法层面:Focal Loss|说明:降低易分类样本的权重,\(\text{FL} = -\alpha(1-p_t)^\gamma\log(p_t)\)
- 算法层面:代价敏感学习|说明:不同类误分类代价不同
- 评估层面:用 AUC/F1 代替准确率|说明:准确率在不平衡时无意义
- 评估层面:PR 曲线|说明:比 ROC 更适合严重不平衡
- 集成层面:平衡 Bagging|说明:每棵树用平衡子集训练
- 集成层面:EasyEnsemble|说明:多组欠采样 + Boosting
追问: Focal Loss 的 γ 参数如何影响训练? → γ 越大,对易分类样本的权重衰减越强。γ=0 退化为标准交叉熵,通常 γ=2 效果好。
二、无监督学习( 4 题)¶
Q9: K-Means 的原理和局限性 🟢 [字节] [百度]¶
题目:描述 K-Means 算法流程,并列举其局限性和改进方案。
参考答案:
算法流程:
- 随机初始化 K 个聚类中心
- E 步:将每个样本分配到最近的聚类中心
- M 步:重新计算每个聚类的中心(均值)
- 重复 2-3 直到收敛
局限性 + 改进:
- 需要预设 K|改进方案:Elbow Method / Silhouette Score / Gap Statistic
- 对初始化敏感|改进方案:K-Means++ 初始化(选择尽量远的初始中心)
- 只能找凸形簇|改进方案:DBSCAN / 谱聚类
- 对噪声敏感|改进方案:K-Medoids(用中位数替代均值)
- 大规模数据慢|改进方案:Mini-Batch K-Means
追问: K-Means 的时间复杂度? → O(NKdI), N 是样本数, K 是聚类数, d 是维度, I 是迭代次数
Q10: PCA 的数学原理 🟡 [Google] [华为] [百度]¶
题目:推导 PCA 的目标函数,解释其几何含义。
参考答案:
目标:找到一组正交基,使得数据投影后方差最大化。
数学推导:
- 数据中心化:\(\bar{X} = X - \mu\)
- 协方差矩阵:\(C = \frac{1}{N}\bar{X}^T\bar{X}\)
- 投影后方差:\(\text{Var} = u^T C u\)
- 优化:\(\max_{u} u^T C u \quad \text{s.t.} \quad u^Tu = 1\)
- 拉格朗日:\(Cu = \lambda u\) → 协方差矩阵的特征值分解
- 最大方差方向 = 最大特征值对应的特征向量
信息保留率:
追问: PCA 和 SVD 的关系? → \(X = U\Sigma V^T\), PCA 的特征向量就是 V 的列向量,特征值 \(\lambda_i = \sigma_i^2/N\)
Q11: DBSCAN 算法 🟢 [美团] [阿里]¶
题目: DBSCAN 的核心概念和优缺点。
参考答案:
核心概念:
- ε-邻域:以点 p 为圆心、ε 为半径的区域
- MinPts:成为核心点所需的最少邻居数
- 核心点:ε-邻域内至少有 MinPts 个点
- 边界点:不是核心点,但在某核心点的 ε-邻域内
- 噪声点:既不是核心点也不是边界点
优点:
- 不需要预设 K
- 可以发现任意形状的簇
- 自动识别噪声点
- 对离群点鲁棒
缺点:
- 对 ε 和 MinPts 敏感
- 密度不均匀时效果差
- 高维数据表现差(维度灾难)
Q12: 降维方法对比 🟡 [Google] [字节]¶
题目:对比 PCA 、 t-SNE 、 UMAP 三种降维方法。
参考答案:
- 类型:PCA 为线性;t-SNE 为非线性;UMAP 为非线性
- 原理:PCA 是最大方差投影;t-SNE 是概率分布匹配(KL 散度);UMAP 是流形近似 + 拓扑保持
- 可逆性:PCA ✅ 可逆变换;t-SNE ❌ 不可逆;UMAP ✅ 近似可逆
- 大规模数据:PCA ✅ 快;t-SNE ❌ 慢(\(O(n^2)\));UMAP ✅ 快
- 全局结构:PCA ✅ 保持;t-SNE ❌ 可能扭曲;UMAP ✅ 较好
- 局部结构:PCA ⚠️ 一般;t-SNE ✅ 非常好;UMAP ✅ 好
- 用途:PCA 适合特征抽取/去噪;t-SNE 适合可视化;UMAP 适合可视化 + 特征
三、评估与特征工程( 4 题)¶
Q13: AUC-ROC 和 PR 曲线 🟢 [字节] [阿里] [Google]¶
题目:解释 AUC-ROC 和 PR 曲线的含义,什么时候用哪个?
参考答案:
ROC 曲线: x 轴 FPR (假阳率), y 轴 TPR (真阳率/召回率)
- AUC : ROC 曲线下面积, 0.5 接近随机排序, 1.0 对应理想的正负样本排序
- 含义:随机抽一个正样本和一个负样本,模型将正样本排在前面的概率
PR 曲线: x 轴 Recall , y 轴 Precision
-
AP : PR 曲线下面积
-
类别平衡:推荐使用 AUC-ROC|原因:全面评估模型区分能力
- 类别严重不平衡:推荐使用 PR-AUC|原因:ROC 在不平衡时过于乐观
- 关注正类检出:推荐使用 PR|原因:直接反映对正类的预测能力
追问: AUC=0.8 意味着什么? → 随机抽一个正样本和一个负样本,模型将正样本打分更高的概率为 80%
Q14: 特征工程方法汇总 🟡 [字节] [美团] [百度]¶
题目:列举常用的特征工程方法,并说明各自适用场景。
参考答案:
- 数值特征:标准化(Z-score)/归一化(Min-Max)|适用场景:距离相关模型(SVM/KNN/NN)
- 数值特征:分桶(Binning)|适用场景:非线性关系、异常值处理
- 数值特征:对数/Box-Cox 变换|适用场景:偏态分布
- 类别特征:One-Hot 编码|适用场景:低基数类别
- 类别特征:Label Encoding|适用场景:树模型
- 类别特征:Target Encoding|适用场景:高基数类别(注意过拟合)
- 类别特征:Embedding|适用场景:深度学习
- 时间特征:年/月/日/星期/小时|适用场景:周期性
- 时间特征:时间差特征|适用场景:间隔/频率
- 交叉特征:特征乘积/拼接|适用场景:捕捉特征交互
- 文本特征:TF-IDF / Word2Vec / BERT 向量|适用场景:NLP 任务
追问:特征选择有哪些方法? → 过滤式(方差/相关性/卡方/互信息)、包裹式( RFE )、嵌入式( L1/树模型特征重要性)
Q15: 交叉验证 🟢 [华为] [字节]¶
题目:为什么要做交叉验证?有哪些方法?
参考答案:
动机:单次 train/test 划分的评估结果方差大,不能可靠反映模型泛化能力。
- K-Fold:分 K 份,每份轮流做验证集|适用场景:通用首选
- Stratified K-Fold:保持每折类别比例一致|适用场景:类别不平衡
- Leave-One-Out:\(K=N\),每次留一个做验证|适用场景:小数据集
- Time Series Split:按时间顺序划分,不能未来 → 过去|适用场景:时序数据
- Group K-Fold:同一 group 不能同时在训练和验证|适用场景:有组结构的数据
追问: K 一般取多少? → 通常 K=5 或 K=10 。 K 越大偏差越小但方差越大且计算量越大。
Q16: 过拟合和欠拟合的诊断与解决 🟢 [通用] [所有大厂]¶
题目:如何诊断和解决过拟合/欠拟合?
参考答案:
- 欠拟合:诊断为训练和验证误差都高|解决方案:增加模型复杂度、增加特征、减少正则化、延长训练
- 过拟合:诊断为训练误差低、验证误差高|解决方案:正则化(L1/L2/Dropout)、增加数据、减少模型复杂度、早停、数据增强
学习曲线分析:
误差
│───── 验证误差
│ 差距大 → 过拟合
│── ─ ── 训练误差
│
│───── 验证误差
│───── 训练误差 差距小但都高 → 欠拟合
│_________________ 训练样本数
四、经典推导( 4 题)¶
Q17: EM 算法的直觉理解和推导 🔴 [Google] [百度]¶
题目:解释 EM 算法的 E 步和 M 步,以 GMM 为例说明。
参考答案:
核心思想:当存在隐变量时,交替进行期望( E )和最大化( M )两步来求解似然函数的最大值。
E 步( Expectation ):
- 固定参数 θ,计算隐变量的后验分布
- GMM 中:计算每个样本属于每个高斯分量的概率(责任度 \(\gamma_{ik}\))
M 步( Maximization ):
- 固定隐变量分布,最大化期望对数似然
- GMM 中:用 \(\gamma_{ik}\) 更新 \(\mu_k\)、\(\Sigma_k\)、\(\pi_k\)
追问: EM 算法能保证收敛吗?收敛到全局最优吗? → 保证收敛(每步不降低似然),但只收敛到局部最优,对初始化敏感
Q18: 贝叶斯分类器 🟡 [字节] [华为]¶
题目:推导朴素贝叶斯分类器,解释"朴素"假设。
参考答案:
贝叶斯定理:
朴素假设:给定类别 \(Y\) 后,特征之间条件独立:
分类决策:
追问:朴素贝叶斯的"朴素"假设在实际中成立吗? → 几乎不成立(特征之间通常有关联),但即便如此分类效果常常不错,因为我们只需要后验概率的排序正确,不需要概率值本身准确
Q19: 梯度下降变体对比 🟡 [字节] [Google] [Meta]¶
题目:对比 SGD 、 Momentum 、 Adam 的原理和适用场景。
参考答案:
- SGD:更新规则 \(w = w - \eta \nabla L\)|特点:简单,但可能震荡
- Momentum:更新规则 \(v = \beta v + \nabla L\),\(w = w - \eta v\)|特点:加速收敛,减少震荡
- Adam:特点为自适应学习率 + 动量|优点:收敛快,对超参不敏感
- AdamW:特点为 Adam + 解耦权重衰减|场景:LLM 训练常用
Adam 的数学:
追问:训练 LLM 为什么用 AdamW 而不是 Adam ? → Adam 中权重衰减与自适应学习率耦合,导致正则化效果不对。 AdamW 将权重衰减解耦:\(w = w - \eta (\frac{\hat{m}}{\sqrt{\hat{v}}+\epsilon} + \lambda w)\)
Q20: 信息论基础 🟡 [百度] [华为] [Google]¶
题目:解释信息熵、条件熵、互信息、 KL 散度的定义和关系。
参考答案:
信息熵(衡量不确定性):
条件熵(已知 Y 后 X 的不确定性):
互信息( X 和 Y 共享的信息量):
KL 散度(两个分布的差异):
交叉熵:
关系图:
追问:为什么分类任务用交叉熵而不是 KL 散度? → 当 P 是真实分布(固定)时,最小化交叉熵等价于最小化 KL 散度,因为 H(P) 是常数
学习检查清单¶
- 能推导逻辑回归的损失函数和梯度
- 理解 SVM 的最大间隔原理和核技巧
- 能对比 XGBoost/LightGBM/CatBoost
- 理解偏差-方差分解和正则化的作用
- 掌握 K-Means/DBSCAN/PCA 的原理
- 能解释 AUC 、 PR 曲线的含义和适用场景
- 了解 EM 算法和朴素贝叶斯的推导
- 能对比 SGD/Adam/AdamW 优化器
- 掌握信息熵/KL 散度/交叉熵的关系
⚠️ 核验说明(2026-04-03):本页已完成 2026-04-03 人工复核。逻辑回归凸性、AUC 解释和框架对比口径已收紧;公司标签继续只表示公开样本中的常见出现语境。
最后更新日期: 2026-04-03