【学习笔记】机器学习(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.mzph.cn/web/78040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

当算力遇上堵车:AI如何让城市血管不再“血栓”?

目录 一、算力治堵的“外科手术” 二、算力治堵的“内科检查” 三、算力治堵的“中医调理” 治堵如治水,算力是新时代的“大禹” “堵车”是每个大城市的通病,但鲜少有人意识到:交通拥堵的根源并非车辆过多,而在于车速过慢,不是因为堵车才慢,而是因为慢才堵车。中国工…

VM虚拟机安装CentOS7.9

目录 1.下载CentOS7.9 2.VM虚拟机选择自定义,然后一直傻瓜式下一步 3.选择编辑虚拟机设置,然后选择刚刚下载的ISO 4.输入 ip addr 获取ip地址 5.用Xshell连接 1.下载CentOS7.9 链接:https://pan.baidu.com/s/1kW2gGWnbcjNtq4kz46LKVw?p…

文本解析到大模型应用

文本解析到到大模型应用 一、背景 最近接到一个比较恶心的工作,之前有个同事将很多个小的文档整合到了一个大文档中,同时暴露出一个新的问题,大的文档虽然查找问题比较方便但是维护起来较为麻烦,所以需要将大的文档按照标题拆分…

AWS虚拟专用网络全解析:从基础到高级实践

导语 AWS虚拟专用网络是连接企业本地数据中心与AWS云环境的关键桥梁。本文将深入探讨AWS VPN的核心概念、配置方法、最佳实践以及常见问题解决方案,助您构建安全、可靠的混合云网络架构。 一、AWS VPN概述 1. 定义 AWS VPN是一种网络服务,允许用户通过加密隧道将本地网络…

【含文档+PPT+源码】基于微信小程序的校园快递平台

项目介绍 本课程演示的是一款基于微信小程序的校园快递平台,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该项目附带…

基于 Rancher 部署 Kubernetes 集群的工程实践指南

一、现状分析 在当今的云计算和容器化领域,Kubernetes(K8S)已经成为了容器编排和管理的事实标准。根据 Gartner 的数据,超过 70% 的企业在生产环境中使用 K8S 来管理容器化应用。然而,K8S 的安装和管理对于许多企业来…

Windows服务器提权实战:常见方法、场景与防御指南

在渗透测试中,​​权限提升(提权)​​是从低权限账户(如IIS、Apache运行账户)获取系统管理员(如SYSTEM)权限的关键步骤。本文将从实战角度解析Windows服务器提权的常见技术,并结合真…

C# | 基于C#实现的BDS NMEA-0183数据解析上位机

以下是一个基于C#实现的BDS NMEA-0183数据解析上位机的示例代码,包含基础功能和界面: using System; using System.Collections.Generic; using System.IO.Ports; using System.Windows.Forms; using System.Drawing; using System.Globalization;namespace BDS_NMEA_Viewer…

图像增强技术:从基础原理到企业级开发实战

简介 图像增强技术是提升图像质量、改善视觉效果和提高后续处理效果的核心方法。本文将全面解析图像增强的五大核心技术:灰度级修正、图像平滑、图像锐化、图像伪彩色处理和图像几何校正,并提供基于OpenCV和Elasticmagic的完整企业级开发实战代码。通过系统化的知识整理和可…

解决中文乱码:字符编码全攻略 - ASCII、Unicode、UTF-8、GB2312详解

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

体系学习1:C语言与指针1——预定义、进制打印、传参为数组

1、不对一段代码进行编译 #if 0 statement #endif2、输出地址 int d[3]{1,2,3}; printf("%p",(void*)d);//p期待的是void*类型的数据3、不同进制的打印 int data 1200; char hed[9];//为\0预留位置!!! sprintf(hed,"%08X&…

Java 基础--数组(Array):存储数据的“排排坐”

作者:IvanCodes 发布时间:2025年5月1日🤓 专栏:Java教程 大家好!👋 咱们在编程时,经常需要处理一批相同类型的数据,比如班级里所有同学的成绩 💯、一周每天的最高气温 …

CSS常用属性_(进阶)

目录 1.尺寸单位与颜色 (1)尺寸 (2)颜色 常用2种 (3)颜色属性值(透明度) 例如: 2.字体属性font 例如: **顺序 3.文本属性 ​编辑例如: …

【RabbitMQ】保证消息不丢失

要确保 RabbitMQ 在消费者(Python 服务)重启或挂掉时消息不丢失,需结合 消息持久化、确认机制(ACK) 和 死信队列(DLX) 实现高可靠性: 1. 消息持久化(Durability&#xff…

Python基本语法(控制语句)

#控制语句 Python语言的控制语句和其他编程语言类似&#xff0c;常用的有if…else、while、for语句。 案例2一7控制语句 第1组代码&#xff0c;说明if-else语句&#xff1a; #1 print(\n1,if) x,y,z10,20,5 if x>y:print(x>y) else:print(x<y)输出结果: 1,if x<…

并发设计模式实战系列(10):Balking(犹豫模式)

&#x1f31f; 大家好&#xff0c;我是摘星&#xff01; &#x1f31f; 今天为大家带来的是并发设计模式实战系列&#xff0c;第10章Balking&#xff08;犹豫模式&#xff09;&#xff0c;废话不多说直接开始~ 目录 一、核心原理深度拆解 1. 状态守护机制 2. 与状态模式的…

【强化学习系列】贝尔曼方程

首先回顾状态价值函数和动作价值函数的定义&#xff1a; 状态价值函数 v π ( s ) v_\pi(s) vπ​(s)是从状态 s s s出发&#xff0c;直至一幕结束后获得的回报的期望值 动作价值函数 q π ( s , a ) q_\pi(s,a) qπ​(s,a)是从状态 s s s出发&#xff0c;采取动作 a a a后&…

donet使用指定版本sdk

ps:来自微软官方方案,实测可行,就是在项目任意目录下在新建 global.json,并配置sdk版本 SDK 使用最新安装的版本 SDK 命令包括 dotnet new 和 dotnet run。 .NET CLI 必须为每个 dotnet 命令选择一个 SDK 版本。 即使在以下情况下&#xff0c;它也会默认使用计算机上安装的最新…

x-cmd install | Orbiton:极简至上的终端文本编辑器与轻量级 IDE

目录 核心特点安装适用场景优势 厌倦了臃肿复杂的 IDE&#xff1f;渴望一个轻巧、快速、专注的编码环境&#xff1f;Orbiton&#xff0c;一款极简主义的终端文本编辑器与轻量级 IDE&#xff0c;将带给你前所未有的编码体验。 核心特点 极简主义&#xff0c;专注编码&#xff1…

大脑、机器人与贝叶斯信念及AI推理

在机器不再局限于重复性任务的世界里&#xff0c;机器人技术已经大胆地迈入了感知、学习和决策的领域。这篇文章探讨了智能机器人系统是如何构建的——从理解它们嘈杂的传感器和不确定的环境&#xff0c;到使它们能够做出明智的选择并随着时间的推移调整自己的行为。 AI推理 …