机器学习面试知识点整理
本文整理机器学习面试中的高频知识点,涵盖基础概念、经典算法、模型评估等核心内容。
基础概念
偏差-方差权衡 (Bias-Variance Tradeoff)
模型的泛化误差可以分解为三部分:
\[
\text{Error} = \text{Bias}^2 + \text{Variance} + \text{Noise}
\]
- 偏差 (Bias):模型的平均预测与真实值之间的差距。高偏差意味着模型过于简单,欠拟合。
- 方差 (Variance):模型在不同训练集上预测结果的波动。高方差意味着模型过于复杂,过拟合。
| 模型复杂度 | 偏差 | 方差 | 典型情况 |
|---|---|---|---|
| 低(如线性回归) | 高 | 低 | 欠拟合 |
| 高(如深层神经网络) | 低 | 高 | 过拟合 |
| 适中 | 适中 | 适中 | 最优 |
过拟合与欠拟合
过拟合的信号: 训练误差很低,但验证误差远高于训练误差。
解决过拟合:
- 增加训练数据
- 正则化(L1/L2、Dropout)
- 降低模型复杂度
- Early Stopping
- 数据增强
解决欠拟合:
- 增加模型复杂度(更深、更宽的网络)
- 增加特征
- 减少正则化强度
- 训练更长时间
交叉验证 (Cross-Validation)
- K-Fold CV:将数据分成 K 份,轮流用 K-1 份训练、1 份验证
- Stratified K-Fold:保持每折中各类别的比例与总体一致
- Leave-One-Out:K = 样本数,计算量大但方差最低
经典算法
线性回归 (Linear Regression)
\[
\hat{y} = W^T x + b, \quad \text{Loss} = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2
\]
- 闭式解:\(W = (X^TX)^{-1}X^Ty\)(正规方程)
- 假设:线性关系、误差独立同分布且均值为0、同方差性
逻辑回归 (Logistic Regression)
\[
P(y=1|x) = \sigma(W^T x + b) = \frac{1}{1 + e^{-(W^T x + b)}}
\]
- 使用交叉熵损失(Cross-Entropy Loss)
- 本质是广义线性模型,输出概率值
- 面试高频问题:为什么用交叉熵而不是MSE?因为MSE在Sigmoid输出上是非凸的,梯度在接近0和1时极小,训练困难
决策树 (Decision Tree)
- 分裂准则:信息增益(ID3)、信息增益比(C4.5)、基尼不纯度(CART)
- 优点:可解释性强、不需要特征缩放、能处理缺失值
- 缺点:容易过拟合、对数据小变化敏感
集成学习 (Ensemble Methods)
Bagging(随机森林):
- 有放回采样构建多棵树,预测时投票/平均
- 降低方差,适合高方差的基学习器
Boosting(GBDT / XGBoost / LightGBM):
- 串行地训练多个弱学习器,每个学习器纠正前一个的错误
- 降低偏差,但可能增加过拟合风险
| 方法 | 核心思想 | 降低偏差/方差 | 是否并行 |
|---|---|---|---|
| Bagging | 投票平均 | 降低方差 | 是 |
| Boosting | 纠正残差 | 降低偏差 | 否 |
SVM (Support Vector Machine)
- 找到最大间隔超平面
- 核技巧(Kernel Trick):将数据映射到高维空间,实现非线性分类
- 常用核函数:线性核、RBF核、多项式核
- 面试高频问题:SVM的损失函数是什么?Hinge Loss: \(\max(0, 1 - y \cdot f(x))\)
模型评估
分类指标
| 指标 | 公式 | 适用场景 |
|---|---|---|
| Accuracy | \(\frac{TP+TN}{TP+TN+FP+FN}\) | 类别平衡 |
| Precision | \(\frac{TP}{TP+FP}\) | 关注假阳性(如垃圾邮件) |
| Recall | \(\frac{TP}{TP+FN}\) | 关注假阴性(如疾病诊断) |
| F1 Score | \(\frac{2 \cdot P \cdot R}{P + R}\) | 精确率和召回率的调和平均 |
| AUC-ROC | ROC曲线下面积 | 不受阈值和类别不平衡影响 |
回归指标
- MSE (Mean Squared Error):\(\frac{1}{n}\sum(y_i - \hat{y}_i)^2\)
- MAE (Mean Absolute Error):\(\frac{1}{n}\sum|y_i - \hat{y}_i|\)
- \(R^2\):\(1 - \frac{\sum(y_i - \hat{y}_i)^2}{\sum(y_i - \bar{y})^2}\),越接近 1 越好
特征工程
特征缩放
- 标准化 (Standardization):\(x' = \frac{x - \mu}{\sigma}\),适用于大多数ML算法
- 归一化 (Min-Max Normalization):\(x' = \frac{x - x_{min}}{x_{max} - x_{min}}\),适用于有明确边界的特征
缺失值处理
- 删除(样本量充足时)
- 均值/中位数/众数填充
- 使用模型预测缺失值(如KNN填充)
- 将"缺失"本身作为一个特征
类别不平衡
- 过采样:SMOTE(合成少数类样本)
- 欠采样:随机删除多数类样本
- 代价敏感学习:对少数类的错误赋予更高的权重
- 评估指标选择:使用 F1、AUC-ROC 而非 Accuracy
高频面试问题
Q: L1 和 L2 正则化的区别?
L1 产生稀疏解(特征选择),L2 产生小而分散的权重。L1 在原点不可导,L2 处处可导。几何解释:L1 的约束区域是菱形(顶点在坐标轴上,容易与等高线在轴上相交),L2 的约束区域是圆形。
Q: 为什么树模型不需要特征缩放?
决策树是基于特征值的大小排序来进行分裂的,分裂准则(信息增益、基尼系数)不依赖特征的绝对数值,只依赖排序关系。特征缩放不改变排序,因此不影响树的结构。
Q: Batch Size 对训练的影响?
- 大 Batch:梯度估计更准确、训练更稳定、容易并行加速,但泛化能力可能变差(倾向收敛到 sharp minima)
- 小 Batch:梯度噪声大、有隐式正则化效果、泛化通常更好,但训练不稳定、不能充分利用 GPU 并行
Q: 梯度消失和梯度爆炸?
- 梯度消失:深层网络中梯度在反向传播时指数级缩小,导致浅层参数几乎不更新。原因:Sigmoid/Tanh 的导数 < 1。解决:ReLU、残差连接、BatchNorm、合适的初始化
- 梯度爆炸:梯度指数级增大,导致参数更新过大。解决:梯度裁剪、合适的初始化、BatchNorm