第二章:12.1 诊断偏差和方差

机器学习中模型的偏差和方差问题,以及如何通过训练误差(Jtrain​)和交叉验证误差(Jcv​)来评估模型的性能

  1. 偏差和方差的定义

    • 偏差 :指的是模型预测值与真实值之间的差异。高偏差意味着模型过于简单,无法捕捉数据的复杂性。

    • 方差 :指的是模型对训练数据的敏感程度。高方差意味着模型过于复杂,对训练数据的噪声过于敏感。

  1. 左边的图(高偏差,欠拟合)

    • 模型:使用了非常简单的线性模型(直线),公式为 fw,b​(x)=w1​x+b。

    • 问题:这条直线无法很好地捕捉数据点的变化趋势,因为它太简单了。

    • 结果:模型在训练集和验证集上的表现都不好,训练误差(Jtrain​)和交叉验证误差(Jcv​)都很高。

  2. 中间的图(刚好合适)

    • 模型:使用了二次多项式模型(抛物线),公式为 fw,b​(x)=w1​x+w2​x2+b。

    • 问题:这个模型能够较好地捕捉数据点的变化趋势,既不太简单也不太复杂。

    • 结果:模型在训练集和验证集上的表现都很好,训练误差和交叉验证误差都较低。

  3. 右边的图(高方差,过拟合)

    • 模型:使用了非常复杂的四次多项式模型,公式为 fw,b​(x)=w1​x+w2​x2+w3​x3+w4​x4+b。

    • 问题:这个模型过于复杂,过于贴合训练数据的每一个点,导致它在训练集上表现很好,但在验证集上表现不佳。

    • 结果:模型在训练集上的表现很好(训练误差低),但在验证集上的表现很差(交叉验证误差高)。


接下来解释偏差和方差随着多项式模型复杂度变化的情况。

这张图展示了如何通过调整多项式模型的复杂度(即多项式的阶数 d)来平衡偏差和方差:

  1. 左下角的图

    • 展示了一个简单的线性模型(d=1),即一条直线。

    • 这个模型过于简单,无法捕捉数据的真实趋势,因此存在高偏差(underfitting)。

    • 结果是训练误差和交叉验证误差都很高

  2. 中间的图

    • 展示了一个二次多项式模型(d=2),即一个抛物线。

    • 这个模型的复杂度适中,能够较好地拟合数据的趋势。

    • 结果是训练误差和交叉验证误差都较低,模型在训练集和验证集上的表现都很好。

  3. 右下角的图

    • 展示了一个四次多项式模型(d=4),即一个更复杂的曲线。

    • 这个模型过于复杂,过于贴合训练数据,导致高方差(overfitting)。

    • 结果是训练误差很低,但交叉验证误差很高,因为模型在训练集上表现很好,但在验证集上表现不佳。

中间的图表展示了训练误差(Jtrain​)和交叉验证误差(Jcv​)如何随着多项式阶数 d 的增加而变化:

  • 训练误差(Jtrain​)

    • 随着多项式阶数的增加,训练误差通常会下降。这是因为更复杂的模型能够更好地拟合训练数据。
  • 交叉验证误差(Jcv​)

    • 交叉验证误差会先下降后上升,形成一个U形曲线。这是因为:

      • 当模型过于简单(低阶多项式)时,它在验证集上的表现不好(高偏差)。

      • 当模型过于复杂(高阶多项式)时,它在验证集上的表现也不好(高方差)。

      • 只有在中间的某个阶数时,模型在验证集上的表现最好,既没有高偏差也没有高方差。

这张图和相关解释强调了在模型选择中找到偏差和方差之间的平衡的重要性。通过调整多项式的阶数,我们可以找到一个既能较好拟合训练数据,又能在验证集上表现良好的模型。这个平衡点通常对应于交叉验证误差最低的模型复杂度。


如何诊断偏差和方差

我们可以通过比较训练误差(Jtrain​)和交叉验证误差(Jcv​)来诊断模型是否存在偏差或方差问题:

  1. 高偏差(欠拟合)

    • 特征:模型在训练集上的表现就不好,即Jtrain​很高。

    • 原因:模型太简单,无法捕捉数据的复杂性。

    • 诊断:如果Jtrain​和Jcv​都很高,且两者接近,那么模型可能存在高偏差问题。

  2. 高方差(过拟合)

    • 特征:模型在训练集上的表现很好,但在验证集上的表现差,即Jtrain​低而Jcv​高。

    • 原因:模型太复杂,对训练数据的噪声过于敏感。

    • 诊断:如果Jcv​显著高于Jtrain​,那么模型可能存在高方差问题。

  3. 高偏差和高方差

    • 特征:模型在训练集和验证集上的表现都不好,即Jtrain​和Jcv​都很高。

    • 原因:模型可能过于复杂,但同时也没有很好地捕捉数据的趋势。

    • 诊断:这种情况较为罕见,通常发生在使用非常复杂的模型时。


注意:交叉验证集的误差公式以下两个并无差异:

注意:训练集的误差公式以下两个并无差异:

***在实际应用中,你可以选择使用任一公式,但需要保持一致性 ,即在计算训练误差和交叉验证误差时使用相同的公式。

相关推荐
冷雨夜中漫步7 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
郝学胜-神的一滴7 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再7 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
yLDeveloper9 小时前
从模型评估、梯度难题到科学初始化:一步步解析深度学习的训练问题
深度学习
喵手9 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
Coder_Boy_9 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
2501_944934739 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy9 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
2401_836235869 小时前
中安未来SDK15:以AI之眼,解锁企业档案的数字化基因
人工智能·科技·深度学习·ocr·生活
njsgcs9 小时前
llm使用 AgentScope-Tuner 通过 RL 训练 FrozenLake 智能体
人工智能·深度学习