跳转至

机器学习经典面试题 — 20 道高频推导 + 原理题

重要性:机器学习基础仍是很多 AI 算法岗的高频考察内容,公开面经里也经常出现这类题 难度标注:🟢 基础 | 🟡 进阶 | 🔴 困难 公司标签:[字节] [百度] [Google] [Meta] [阿里] [华为] 等

⚠️ 标签说明(2026-04-03):本页公司标签表示“公开面经与岗位讨论里常出现这类题”,用于帮助你建立提问场景,不代表一一对应的官方真题。来源口径见 27-2025-2026大厂真实面经题型地图29-2025-2026大厂公开面经题目全量索引28-题目真实性与来源维护说明


一、监督学习( 8 题)


Q1: 逻辑回归的损失函数推导 🟡 [字节] [百度] [Google]

题目:请推导逻辑回归的交叉熵损失函数,并解释为什么不用 MSE 。

参考答案

模型假设

\[ P(y=1|x) = \sigma(w^Tx + b) = \frac{1}{1 + e^{-(w^Tx+b)}} \]

似然函数(对于单样本):

\[ P(y|x) = \hat{y}^y (1-\hat{y})^{(1-y)} \]

对数似然(取负号得损失函数):

\[ \mathcal{L} = -\frac{1}{N}\sum_{i=1}^{N}[y_i \log \hat{y}_i + (1-y_i)\log(1-\hat{y}_i)] \]

为什么不用 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 优化目标

\[ \min_{w,b} \frac{1}{2}\|w\|^2 \quad \text{s.t.} \quad y_i(w^Tx_i + b) \geq 1, \forall i \]

软间隔 SVM(允许部分样本违反约束):

\[ \min_{w,b,\xi} \frac{1}{2}\|w\|^2 + C\sum_{i=1}^{N}\xi_i \quad \text{s.t.} \quad y_i(w^Tx_i + b) \geq 1 - \xi_i, \xi_i \geq 0 \]

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(回归)|特点:只生成二叉树

信息增益

\[ \text{Gain}(D, A) = H(D) - H(D|A) = H(D) - \sum_{v} \frac{|D_v|}{|D|} H(D_v) \]

信息增益比

\[ \text{GainRatio}(D, A) = \frac{\text{Gain}(D, A)}{H_A(D)} \]

其中 \(H_A(D) = -\sum_v \frac{|D_v|}{|D|}\log\frac{|D_v|}{|D|}\) 是特征 A 的固有值。

Gini 指数

\[ \text{Gini}(D) = 1 - \sum_{k=1}^{K} p_k^2 \]

追问:决策树如何防止过拟合? → 预剪枝(限制深度/叶子节点最小样本数)和后剪枝(生成完整树后自底向上剪枝)


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 的目标函数(面试重点):

\[ \mathcal{L} = \sum_{i=1}^{N} l(y_i, \hat{y}_i) + \sum_{t=1}^{T} \Omega(f_t) \]
\[ \Omega(f) = \gamma T + \frac{1}{2}\lambda\sum_{j=1}^{T}w_j^2 \]

其中 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 ),并举例说明。

参考答案

\[ \text{MSE} = \text{Bias}^2 + \text{Variance} + \text{Irreducible Error} \]
  • 偏差 (Bias):模型预测的期望值与真实值的差距|模型倾向:高偏差 = 欠拟合
  • 方差 (Variance):模型在不同训练集上预测结果的波动|模型倾向:高方差 = 过拟合
  • 不可约误差:数据本身的噪声,任何模型都无法消除|模型倾向:—

模型复杂度的影响

Text Only
误差
  │  \
  │   \  偏差²
  │    \___________
  │         ___/  方差
  │      __/
  │   __/
  │  /
  │/_________________ 模型复杂度
       ↑ 最优点

经典例子

  • 线性回归拟合非线性数据 → 高偏差
  • 高阶多项式拟合少量数据 → 高方差
  • 随机森林通过 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 算法流程,并列举其局限性和改进方案。

参考答案

算法流程

  1. 随机初始化 K 个聚类中心
  2. E 步:将每个样本分配到最近的聚类中心
  3. M 步:重新计算每个聚类的中心(均值)
  4. 重复 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 的目标函数,解释其几何含义。

参考答案

目标:找到一组正交基,使得数据投影后方差最大化。

数学推导

  1. 数据中心化:\(\bar{X} = X - \mu\)
  2. 协方差矩阵:\(C = \frac{1}{N}\bar{X}^T\bar{X}\)
  3. 投影后方差:\(\text{Var} = u^T C u\)
  4. 优化:\(\max_{u} u^T C u \quad \text{s.t.} \quad u^Tu = 1\)
  5. 拉格朗日:\(Cu = \lambda u\)协方差矩阵的特征值分解
  6. 最大方差方向 = 最大特征值对应的特征向量

信息保留率

\[ \text{Explained Variance Ratio} = \frac{\sum_{i=1}^{k}\lambda_i}{\sum_{i=1}^{d}\lambda_i} \]

追问: 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)、增加数据、减少模型复杂度、早停、数据增强

学习曲线分析

Text Only
误差
  │───── 验证误差
  │           差距大 → 过拟合
  │── ─ ── 训练误差
  │───── 验证误差
  │───── 训练误差    差距小但都高 → 欠拟合
  │_________________ 训练样本数

四、经典推导( 4 题)


Q17: EM 算法的直觉理解和推导 🔴 [Google] [百度]

题目:解释 EM 算法的 E 步和 M 步,以 GMM 为例说明。

参考答案

核心思想:当存在隐变量时,交替进行期望( E )和最大化( M )两步来求解似然函数的最大值。

E 步( Expectation )

  • 固定参数 θ,计算隐变量的后验分布
  • GMM 中:计算每个样本属于每个高斯分量的概率(责任度 \(\gamma_{ik}\)
\[ \gamma_{ik} = \frac{\pi_k \mathcal{N}(x_i|\mu_k, \Sigma_k)}{\sum_{j=1}^{K}\pi_j \mathcal{N}(x_i|\mu_j, \Sigma_j)} \]

M 步( Maximization )

  • 固定隐变量分布,最大化期望对数似然
  • GMM 中:用 \(\gamma_{ik}\) 更新 \(\mu_k\)\(\Sigma_k\)\(\pi_k\)
\[ \mu_k = \frac{\sum_i \gamma_{ik} x_i}{\sum_i \gamma_{ik}}, \quad \pi_k = \frac{\sum_i \gamma_{ik}}{N} \]

追问: EM 算法能保证收敛吗?收敛到全局最优吗? → 保证收敛(每步不降低似然),但只收敛到局部最优,对初始化敏感


Q18: 贝叶斯分类器 🟡 [字节] [华为]

题目:推导朴素贝叶斯分类器,解释"朴素"假设。

参考答案

贝叶斯定理

\[ P(Y|X) = \frac{P(X|Y)P(Y)}{P(X)} \]

朴素假设:给定类别 \(Y\) 后,特征之间条件独立:

\[ P(X_1, X_2, ..., X_d | Y) = \prod_{j=1}^{d} P(X_j | Y) \]

分类决策

\[ \hat{y} = \arg\max_{y} P(Y=y) \prod_{j=1}^{d} P(X_j | Y=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 的数学

\[ m_t = \beta_1 m_{t-1} + (1-\beta_1)g_t \quad \text{(一阶矩/动量)} \]
\[ v_t = \beta_2 v_{t-1} + (1-\beta_2)g_t^2 \quad \text{(二阶矩/自适应学习率)} \]
\[ \hat{m}_t = \frac{m_t}{1-\beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1-\beta_2^t} \quad \text{(偏差修正)} \]
\[ w_t = w_{t-1} - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t \]

追问:训练 LLM 为什么用 AdamW 而不是 Adam ? → Adam 中权重衰减与自适应学习率耦合,导致正则化效果不对。 AdamW 将权重衰减解耦:\(w = w - \eta (\frac{\hat{m}}{\sqrt{\hat{v}}+\epsilon} + \lambda w)\)


Q20: 信息论基础 🟡 [百度] [华为] [Google]

题目:解释信息熵、条件熵、互信息、 KL 散度的定义和关系。

参考答案

信息熵(衡量不确定性):

\[ H(X) = -\sum_{x} P(x)\log P(x) \]

条件熵(已知 Y 后 X 的不确定性):

\[ H(X|Y) = -\sum_{x,y} P(x,y)\log P(x|y) \]

互信息( X 和 Y 共享的信息量):

\[ I(X;Y) = H(X) - H(X|Y) = H(Y) - H(Y|X) \]

KL 散度(两个分布的差异):

\[ D_{KL}(P\|Q) = \sum_{x} P(x)\log\frac{P(x)}{Q(x)} \]

交叉熵

\[ H(P,Q) = -\sum_{x} P(x)\log Q(x) = H(P) + D_{KL}(P\|Q) \]

关系图

Text Only
H(X,Y) = H(X) + H(Y|X) = H(Y) + H(X|Y)
I(X;Y) = H(X) + H(Y) - H(X,Y)

追问:为什么分类任务用交叉熵而不是 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