跳转至

第06章 · 机器学习 · 阶段测试题答案


一 · 单选 (8 题)

1.1 B - 监督学习需要标签。

1.2 A - Bias-Variance 权衡: 模型复杂度 ↑, Bias ↓ Variance ↑。

1.3 C - L1 正则(Lasso)产生稀疏解。

1.4 B - 交叉熵损失用于分类。

1.5 A - Softmax 把 logits 转概率。

1.6 B - Adam = Momentum + RMSProp。

1.7 C - Dropout 训练时随机失活, 推理时关闭。

1.8 B - XGBoost 是 GBDT 的高效实现。


二 · 多选 (4 题)

2.1 ABD - 都是集成学习方法。

2.2 ABC - D 错: 训练误差小, 测试误差大是过拟合。

2.3 ABD - C 错: K-Means 是无监督。

2.4 ABC - 数据预处理步骤。


三 · 简答 (5 题)

3.1 Bias-Variance 权衡

总误差 = Bias² + Variance + 噪声 (不可消除) Bias: 模型假设的偏差, 简单模型 Bias 高 Variance: 对训练数据波动的敏感度, 复杂模型 Variance 高 权衡: 找到复杂度最佳点

正则化: 增加 Bias 减少 Variance 集成: 减少 Variance 略增 Bias

3.2 过拟合 vs 欠拟合

过拟合: 训练误差小, 测试误差大 - 模型过于复杂 - 解决: 数据增强 / 正则化 / Dropout / Early Stopping

欠拟合: 训练误差也大 - 模型过于简单 - 解决: 增加特征 / 复杂模型 / 减少正则化

3.3 监督学习 vs 无监督学习

维度 监督 无监督
数据 有标签 无标签
任务 分类/回归 聚类/降维
算法 SVM/XGBoost/NN K-Means/PCA
评估 准确率/AUC 轮廓系数

半监督: 部分标签 + 大量无标签 自监督: 数据自身生成标签 (BERT/GPT)

3.4 梯度下降变种

算法 特点 适用
SGD 简单, 慢, 噪声大 大数据
Momentum 加速 + 减少振荡 通用
Adam 自适应学习率 Transformer 默认
AdaGrad 累积梯度衰减 稀疏特征
RMSProp 指数加权移动平均 RNN
L-BFGS 二阶近似 小数据集

3.5 CNN vs RNN vs Transformer

CNN: 局部连接 + 权重共享, 适合图像/语音 RNN: 时序循环, 适合序列(短程依赖) Transformer: Self-Attention, 长程依赖, 可并行, 当前主流

模型 长程依赖 并行 适用
CNN ❌ (受卷积核限制) ✅ 图像
RNN ⚠️ (梯度消失) ❌ 短序列
Transformer ✅ ✅ 通用 SOTA

四 · 编程 (2 题)

4.1 XGBoost 分类

from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

model = XGBClassifier(n_estimators=100, max_depth=3, learning_rate=0.1)
model.fit(X_train, y_train)
print(f"Accuracy: {model.score(X_test, y_test):.3f}")

4.2 正则化对比

from sklearn.linear_model import Ridge, Lasso
import numpy as np

X = np.random.randn(100, 10)
y = X[:, 0] + 0.5 * X[:, 1] + np.random.randn(100) * 0.1

# L2 正则
ridge = Ridge(alpha=1.0).fit(X, y)
print(f"Ridge 非零系数: {np.sum(ridge.coef_ != 0)}")

# L1 正则
lasso = Lasso(alpha=0.1).fit(X, y)
print(f"Lasso 非零系数: {np.sum(lasso.coef_ != 0)}")  # 更稀疏