Machine Learning

机器学习基础:ERM、验证集与正则化

把 sklearn 建模流程还原成经验风险最小化和样本外误差控制。

Mechanism Lab

动画:偏差-方差如何随模型复杂度变化

动画展示训练误差下降、验证误差先降后升,以及正则化如何移动最优点。

Step 1 / 5

Data

样本被切成训练和验证。

D = D_train union D_valid

Animation 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 就上复杂模型。

参考资料