【机器学习24】-模型选择、误差评估

根据三张图片的核心内容,以下是关于模型选择、误差评估及神经网络架构选择的系统性总结与解题思路:


1. 误差评估(图1)

核心公式
训练误差 ( J_{\text{train}} ):评估模型在训练集上的拟合程度。
Jtrain(w,b)=12mtrain∑i=1mtrain(fw,b(x(i))−y(i))2 J_{\text{train}}(\mathbf{w}, b) = \frac{1}{2m_{\text{train}}} \sum_{i=1}^{m_{\text{train}}} (f_{\mathbf{w},b}(\mathbf{x}^{(i)}) - y^{(i)})^2 Jtrain(w,b)=2mtrain1i=1mtrain(fw,b(x(i))y(i))2
交叉验证误差 ( J_{\text{cv}} ):用于调参和模型选择(防止过拟合)。
Jcv(w,b)=12mcv∑i=1mcv(fw,b(xcv(i))−ycv(i))2 J_{\text{cv}}(\mathbf{w}, b) = \frac{1}{2m_{\text{cv}}} \sum_{i=1}^{m_{\text{cv}}} (f_{\mathbf{w},b}(\mathbf{x}_{\text{cv}}^{(i)}) - y_{\text{cv}}^{(i)})^2 Jcv(w,b)=2mcv1i=1mcv(fw,b(xcv(i))ycv(i))2
测试误差 ( J_{\text{test}} ):最终评估模型泛化能力。
Jtest(w,b)=12mtest∑i=1mtest(fw,b(xtest(i))−ytest(i))2 J_{\text{test}}(\mathbf{w}, b) = \frac{1}{2m_{\text{test}}} \sum_{i=1}^{m_{\text{test}}} (f_{\mathbf{w},b}(\mathbf{x}_{\text{test}}^{(i)}) - y_{\text{test}}^{(i)})^2 Jtest(w,b)=2mtest1i=1mtest(fw,b(xtest(i))ytest(i))2

关键点
• 所有误差均基于平方损失(适用于回归问题)。
• 训练集用于拟合参数,交叉验证集用于选择模型复杂度,测试集仅用于最终评估。


2. 模型选择:多项式回归(图2)

问题描述
选择多项式回归的最佳次数 ( d )(从 ( d=1 ) 到 ( d=10 )),模型形式为:
fw,b(x)=w1x+w2x2+⋯+wdxd+b f_{\mathbf{w},b}(x) = w_1x + w_2x^2 + \cdots + w_dx^d + b fw,b(x)=w1x+w2x2++wdxd+b

步骤

  1. 训练不同复杂度的模型
    • 对每个 ( d ),用训练集拟合参数 w(d),b(d)\mathbf{w}^{(d)}, b^{(d)}w(d),b(d)
  2. 计算交叉验证误差 Jcv(w(d),b(d))J_{\text{cv}}(\mathbf{w}^{(d)}, b^{(d)})Jcv(w(d),b(d))
  3. 选择最优 ddd)
    • 图中选择 ( d=4 )(即 w1x+⋯+w4x4+bw_1x + \cdots + w_4x^4 + bw1x++w4x4+b),因其交叉验证误差Jcv(w(4),b(4))J_{\text{cv}}(\mathbf{w}^{(4)}, b^{(4)})Jcv(w(4),b(4)) 最小(黄色高亮)。
  4. 最终评估
    • 使用测试集计算泛化误差 Jtest(w(4),b(4))J_{\text{test}}(\mathbf{w}^{(4)}, b^{(4)})Jtest(w(4),b(4))(蓝色圈出)。

注意事项
• 避免选择 ( d ) 过大(如 ( d=10 )),否则会过拟合(高方差)。
• 交叉验证误差是模型选择的核心依据。


3. 模型选择:神经网络架构(图3)

问题描述
从3种神经网络架构中选择最佳结构,依据交叉验证误差 ( J_{\text{cv}} )。

候选架构

  1. 架构1:单隐藏层(25 units)→ Jcv(w(1),b(1))J_{\text{cv}}(\mathbf{w}^{(1)}, b^{(1)})Jcv(w(1),b(1))
  2. 架构2:双隐藏层(12 units + 20 units)→Jcv(w(2),b(2))J_{\text{cv}}(\mathbf{w}^{(2)}, b^{(2)})Jcv(w(2),b(2))
  3. 架构3:三隐藏层(16 + 8 + 32 units)→ Jcv(w(3),b(3))J_{\text{cv}}(\mathbf{w}^{(3)}, b^{(3)})Jcv(w(3),b(3))

选择步骤

  1. 训练所有架构,记录交叉验证误差。
  2. 选择 JcvJ_{\text{cv}}Jcv 最小的架构(图中选择架构2)。
  3. 用测试集评估泛化误差 Jtest(w(2),b(2))J_{\text{test}}(\mathbf{w}^{(2)}, b^{(2)})Jtest(w(2),b(2))

关键点
• 更深的网络不一定更好,需平衡复杂度和数据量。
• 交叉验证误差是判断过拟合/欠拟合的核心指标。


4. 解题思路总结

  1. 划分数据集:训练集(拟合参数)、交叉验证集(选择模型)、测试集(最终评估)。
  2. 评估误差
    • 训练误差低但验证误差高 → 过拟合(需简化模型或增加正则化)。
    • 两者均高 → 欠拟合(需增加复杂度或特征)。
  3. 模型选择
    多项式回归:通过交叉验证选择最佳次数 ( d )。
    神经网络:通过交叉验证选择层数和单元数。
  4. 最终验证:测试集仅用于最终报告,不参与任何调参或选择。

5. 常见问题与解决

过拟合:减少多项式次数 ( d )、使用正则化(L2)、减少神经网络单元数。
欠拟合:增加 ( d )、添加更多特征、增大神经网络规模。

示例决策流程

训练模型 → 计算 J_train 和 J_cv → 选择 J_cv 最小的模型 → 用 J_test 验证泛化性

通过系统性地应用上述方法,可高效选择模型并评估其性能。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐