Machine Learning
机器学习基础:ERM、验证集与正则化
把 sklearn 建模流程还原成经验风险最小化和样本外误差控制。
Mechanism Lab
动画:偏差-方差如何随模型复杂度变化
动画展示训练误差下降、验证误差先降后升,以及正则化如何移动最优点。
Step 1 / 5
Data
样本被切成训练和验证。
D = D_train union D_validAnimation Control
Reduced-motion users receive the same step states without continuous motion.
01 / 直觉
核心直觉
模型训练是在函数集合中选择一个预测函数。
训练误差不是目标,样本外风险才是目标。
验证集、交叉验证和正则化是防止复杂模型记住噪声的核心机制。
02 / 数学
经验风险最小化
01 / 目标风险
理想目标是最小化未知数据分布下的期望损失。
R(f) = E[L(Y, f(X))]02 / 经验风险
实际只能用样本均值近似期望。
R_hat(f) = (1/n) sum_i L(y_i, f(x_i))03 / 正则化
复杂度惩罚降低方差,牺牲一点偏差换取样本外稳定。
min_f R_hat(f) + lambda * Omega(f)03 / 代码
sklearn baseline
先建立可解释 baseline,再考虑复杂模型。
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
model = make_pipeline(
StandardScaler(),
LogisticRegression(C=1.0, penalty="l2", max_iter=1000),
)
scores = cross_val_score(model, X, y, cv=5, scoring="roc_auc")
print(scores.mean(), scores.std())04 / 案例
案例:论文录用风险预测
- 特征包括作者经验、主题、摘要长度和历史引用。
- 先用逻辑回归获得可解释 baseline。
- 再比较随机森林或神经网络是否真正提升验证集表现。
05 / 风险
常见误区
用测试集调参。
只报告训练集准确率。
没有建立简单 baseline 就上复杂模型。