当前位置: 首页 > news >正文

【学习笔记】机器学习(Machine Learning) | 第六周|过拟合问题

机器学习(Machine Learning)

简要声明

基于吴恩达教授(Andrew Ng)课程视频
BiliBili课程资源


文章目录

  • 机器学习(Machine Learning)
    • 简要声明
  • 摘要
  • 过拟合与欠拟合问题
    • 一、回归问题中的过拟合
      • 1. 欠拟合(Underfit)
      • 2. 刚好拟合(Just right)
      • 3. 过拟合(Overfit)
    • 二、分类问题中的过拟合
      • 1. 欠拟合(Underfit)
      • 2. 刚好拟合(Just right)
      • 3. 过拟合(Overfit)
    • 三、过拟合的原因及解决方法
      • 过拟合原因
      • 解决方法
  • 解决过拟合问题
    • 一、收集更多训练数据
    • 二、选择特征
    • 三、正则化
    • 四、过拟合解决方法总结
  • 正则化的应用
    • 一、带正则化的代价函数
    • 二、正则化线性回归
    • 三、正则化逻辑回归
    • 四、正则化参数的选择
    • 五、正则化方法对比


摘要

本文介绍了机器学习中的过拟合和欠拟合问题,通过回归和分类问题展示了不同拟合程度的表现。针对过拟合问题,提出了增加训练数据、特征选择、正则化等解决方法,并讨论了正则化在线性回归和逻辑回归中的应用,包括带正则化的代价函数和梯度下降更新规则。最后,对比了正则化方法的优缺点,强调合理应用正则化技术对提高模型泛化能力的重要性。


过拟合与欠拟合问题

在机器学习中,过拟合是一个常见的问题,它导致模型在训练数据上表现很好,但在新的、未见过的数据上表现不佳。以下是对过拟合问题的详细探讨。

一、回归问题中的过拟合

考虑一个简单的回归问题,尝试用不同复杂度的模型来拟合数据。

1. 欠拟合(Underfit)

  • 模型表达式 y = w 1 x + b y = w_1x + b y=w1x+b
  • 特征:仅使用输入变量的一次项。
  • 表现:模型无法很好地拟合训练数据,存在高偏差(high bias)。

2. 刚好拟合(Just right)

  • 模型表达式 y = w 1 x + w 2 x 2 + b y = w_1x + w_2x^2 + b y=w1x+w2x2+b
  • 特征:使用输入变量的一次项和二次项。
  • 表现:模型很好地拟合了训练数据,具有良好的泛化能力(generalization)。

3. 过拟合(Overfit)

  • 模型表达式 y = w 1 x + w 2 x 2 + w 3 x 3 + w 4 x 4 + b y = w_1x + w_2x^2 + w_3x^3 + w_4x^4 + b y=w1x+w2x2+w3x3+w4x4+b
  • 特征:使用了过多的高次项。
  • 表现:模型在训练数据上拟合得非常好,但存在高方差(high variance),泛化能力差。

图像对比

欠拟合
在这里插入图片描述
刚好拟合
在这里插入图片描述
过拟合
在这里插入图片描述


二、分类问题中的过拟合

在分类问题中,过拟合问题同样存在。

1. 欠拟合(Underfit)

  • 模型表达式 z = w 1 x 1 + w 2 x 2 + b z = w_1x_1 + w_2x_2 + b z=w1x1+w2x2+b f w , b ( x ) = g ( z ) f_{\mathbf{w},b}(\mathbf{x}) = g(z) fw,b(x)=g(z),其中(g)是Sigmoid函数。
  • 特征:仅使用线性特征。
  • 表现:模型无法很好地划分数据,存在高偏差(high bias)。

2. 刚好拟合(Just right)

  • 模型表达式 z = w 1 x 1 + w 2 x 2 + w 3 x 1 2 + w 4 x 2 2 + w 5 x 1 x 2 + b z = w_1x_1 + w_2x_2 + w_3x_1^2 + w_4x_2^2 + w_5x_1x_2 + b z=w1x1+w2x2+w3x12+w4x22+w5x1x2+b f w , b ( x ) = g ( z ) f_{\mathbf{w},b}(\mathbf{x}) = g(z) fw,b(x)=g(z)
  • 特征:使用二次项特征。
  • 表现:模型能够很好地划分不同类别的数据。

3. 过拟合(Overfit)

  • 模型表达式 z = w 1 x 1 + w 2 x 2 + w 3 x 1 2 + w 4 x 2 2 + w 5 x 1 3 x 2 + w 6 x 1 3 x 2 2 + ⋯ + b z = w_1x_1 + w_2x_2 + w_3x_1^2 + w_4x_2^2 + w_5x_1^3x_2 + w_6x_1^3x_2^2 + \cdots + b z=w1x1+w2x2+w3x12+w4x22+w5x13x2+w6x13x22++b f w , b ( x ) = g ( z ) f_{\mathbf{w},b}(\mathbf{x}) = g(z) fw,b(x)=g(z)
  • 特征:使用了过多的高次交叉项。
  • 表现:模型在训练数据上表现完美,但在新数据上表现不佳,存在高方差(high variance)。

图像对比
欠拟合
在这里插入图片描述
刚好拟合
在这里插入图片描述
过拟合
在这里插入图片描述


三、过拟合的原因及解决方法

过拟合原因

  • 模型复杂度过高
  • 训练数据量不足
  • 特征过多或噪声特征

解决方法

方法说明
增加训练数据更多样化的数据有助于模型学习到更通用的模式。
减少特征数量通过特征选择或降维技术减少输入特征的数量。
正则化通过在损失函数中添加正则化项(如L1或L2正则化)来限制模型复杂度。
交叉验证使用交叉验证技术评估模型在不同数据集上的表现,避免过拟合。
早停在训练过程中,当验证集性能不再提升时提前停止训练。

解决过拟合问题

一、收集更多训练数据

增加训练数据量是解决过拟合的一种有效方法。更多的数据可以帮助模型学习到更通用的模式,减少过拟合的风险。

  • 原理:更多的训练样本可以提供更全面的信息,使模型更好地泛化。
  • 示例:如果模型在有限的房屋价格数据上过拟合,增加更多不同大小、价格的房屋数据可以使模型更准确地预测新数据。

在这里插入图片描述


二、选择特征

选择合适的特征可以减少模型的复杂度,从而降低过拟合的可能性。

  • 特征选择:从众多特征中选择最相关的特征,去除无关或冗余的特征。
  • 优点:减少模型复杂度,提高训练速度。
  • 缺点:可能丢失一些有用的信息。
特征选择方法说明
Filter Methods通过相关性分析等方法预选特征
Wrapper Methods通过模型性能评估选择特征组合
Embedded Methods在模型训练过程中自动选择特征

在这里插入图片描述


三、正则化

正则化是一种通过在损失函数中添加惩罚项来限制模型复杂度的方法。

  • L1正则化:添加参数的绝对值之和。公式为: λ ∑ j = 1 n ∣ w j ∣ \lambda \sum_{j=1}^{n} |w_j| λj=1nwj
  • L2正则化:添加参数的平方和。公式为: λ ∑ j = 1 n w j 2 \lambda \sum_{j=1}^{n} w_j^2 λj=1nwj2
  • 作用:使参数值更小,减少模型对单个特征的依赖。
正则化方法优点缺点
L1正则化可进行特征选择,稀疏性好收敛速度较慢
L2正则化收敛速度快,稳定性好无法进行特征选择

四、过拟合解决方法总结

方法适用场景优点缺点
收集更多数据训练数据量不足时提高模型泛化能力数据收集成本高
特征选择特征数量多且存在冗余特征时减少模型复杂度,提高训练速度可能丢失有用信息
正则化模型参数量大,容易过拟合时有效控制模型复杂度,提高泛化能力需要调整正则化参数
交叉验证数据集有限,需要充分利用数据进行模型评估时减少数据浪费,提高模型评估准确性计算成本高
早停模型训练时间长,容易过拟合时防止模型在训练集上过优化,保存较好的泛化能力需要确定合适的停止点

正则化的应用

一、带正则化的代价函数

在带正则化的代价函数中,我们在原始代价函数的基础上添加了一个正则化项。对于线性回归模型,其带正则化的代价函数形式如下:

J ( w , b ) = 1 2 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) 2 + λ 2 m ∑ j = 1 n w j 2 J(\mathbf{w}, b) = \frac{1}{2m} \sum_{i=1}^{m} \left( f_{\mathbf{w},b}(\mathbf{x}^{(i)}) - y^{(i)} \right)^2 + \frac{\lambda}{2m} \sum_{j=1}^{n} w_j^2 J(w,b)=2m1i=1m(fw,b(x(i))y(i))2+2mλj=1nwj2

其中:

  • m m m是训练样本的数量
  • n n n 是特征的数量
  • λ \lambda λ 是正则化参数,用于控制正则化的强度

正则化项 λ 2 m ∑ j = 1 n w j 2 \frac{\lambda}{2m} \sum_{j=1}^{n} w_j^2 2mλj=1nwj2 会惩罚过大的参数值,使模型更倾向于学习较小的参数,从而降低模型的复杂度。


二、正则化线性回归

在正则化线性回归中,我们通过梯度下降算法来最小化带正则化的代价函数。其梯度下降的更新规则如下:

w j = w j − α [ 1 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) x j ( i ) + λ m w j ] w_j = w_j - \alpha \left[ \frac{1}{m} \sum_{i=1}^{m} \left( f_{\mathbf{w},b}(\mathbf{x}^{(i)}) - y^{(i)} \right) x_j^{(i)} + \frac{\lambda}{m} w_j \right] wj=wjα[m1i=1m(fw,b(x(i))y(i))xj(i)+mλwj]

b = b − α 1 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) b = b - \alpha \frac{1}{m} \sum_{i=1}^{m} \left( f_{\mathbf{w},b}(\mathbf{x}^{(i)}) - y^{(i)} \right) b=bαm1i=1m(fw,b(x(i))y(i))

其中:

  • α \alpha α是学习率
  • w j w_j wj 是特征 ( j ) 的参数
  • b b b是偏置项

在梯度下降过程中,正则化项会使得参数 w j w_j wj在每次更新时都乘以一个因子 ( 1 − α λ m ) (1 - \alpha \frac{\lambda}{m}) (1αmλ),从而实现参数的“收缩”。

正则化线性回归与普通线性回归对比正则化线性回归普通线性回归
更新规则包含正则化项不包含正则化项
参数变化参数逐渐收缩参数无收缩
泛化能力更强较弱

三、正则化逻辑回归

正则化逻辑回归与正则化线性回归类似,其代价函数也包含一个正则化项。对于逻辑回归模型,其带正则化的代价函数形式如下:

J ( w , b ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( f w , b ( x ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − f w , b ( x ( i ) ) ) ] + λ 2 m ∑ j = 1 n w j 2 J(\mathbf{w}, b) = -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \log(f_{\mathbf{w},b}(\mathbf{x}^{(i)})) + (1 - y^{(i)}) \log(1 - f_{\mathbf{w},b}(\mathbf{x}^{(i)})) \right] + \frac{\lambda}{2m} \sum_{j=1}^{n} w_j^2 J(w,b)=m1i=1m[y(i)log(fw,b(x(i)))+(1y(i))log(1fw,b(x(i)))]+2mλj=1nwj2

其中:

  • ( f w , b ( x ( i ) ) ) ( f_{\mathbf{w},b}(\mathbf{x}^{(i)}) ) (fw,b(x(i))) 是逻辑回归模型的预测输出,使用Sigmoid函数计算得到

正则化逻辑回归的梯度下降更新规则与正则化线性回归类似,也是在原始梯度的基础上添加了正则化项。


四、正则化参数的选择

正则化参数 λ \lambda λ 的选择对模型的性能有重要影响:

  • λ \lambda λ 过小:正则化效果不明显,模型可能仍然过拟合
  • λ \lambda λ 过大:过度正则化,模型可能欠拟合

可以通过交叉验证的方法来选择合适的 λ \lambda λ 值。


五、正则化方法对比

正则化方法适用场景优点缺点
L1正则化特征稀疏可进行特征选择收敛速度较慢
L2正则化参数平滑收敛速度快无法进行特征选择

通过合理应用正则化技术,可以有效防止模型过拟合,提高模型的泛化能力和实际应用效果。


正则化后图像
线性回归
在这里插入图片描述
分类
在这里插入图片描述


end

http://www.xdnf.cn/news/191197.html

相关文章:

  • 人工智能-深度学习之多层感知器
  • Flutter 学习之旅 之 Flutter 和 Android 原生 实现数据交互的MethodChanel和EventChannel方式的简单整理
  • 优化 Flutter 应用启动:从冷启动到就绪仅需 2 秒
  • SQL知识点合集---第二弹
  • 阿里qiankun微服务搭建
  • (leetcode)力扣100 3.最长连续序列(哈希?排序)
  • 【JS事件循环机制event-loop】
  • Rmarkdown输出为pdf的方法与问题解决
  • 数字图像处理 -- 眼底图像血管分割方法
  • 后缀数组~
  • 聊一聊接口自动化测试的稳定性如何保障
  • 在 IDEA 中写 Spark 程序:从入门到实践
  • 反向代理、负载均衡与镜像流量:原理剖析、区别对比及 Nginx 配置实践
  • 2025医疗领域AI发展五大核心趋势与路线研究
  • 在Linux系统中安装MySQL,二进制包版
  • 第十二节:性能优化高频题-shallowRef/shallowReactive使用场景
  • 云原生--核心组件-容器篇-7-Docker私有镜像仓库--Harbor
  • 【计网】认识跨域,及其在go中通过注册CORS中间件解决跨域方案,go-zero、gin
  • yolov8+kalman 实现目标跟踪统计人流量
  • redis+lua+固定窗口实现分布式限流
  • 八大排序——直接插入排序/希尔排序
  • Spring Cloud初探之自定义负载均衡策略(五)
  • 让数据优雅落地:用 serde::Deserialize 玩转结构体实体
  • CasaOS上部署1Panel开源运维面板远程在线访问配置实操指南
  • K8s新手系列之K8s中的资源
  • 【杂谈】-人工智能驱动的网络安全威胁:新一代网络钓鱼
  • Azure 数字孪生是什么?
  • ​​HTTP vs HTTPS:传输协议的安全演进与核心差异​
  • 8.Android(通过Manifest配置文件传递数据(meta-data))
  • 近地卫星网络 (Low Earth Orbit Satellite Networks)入门学习笔记