吴恩达《机器学习》7-1->7-4:过拟合问题、代价函数、线性回归的正则化、正则化的逻辑回归模型

一、过拟合的本质

过拟合是指模型在训练集上表现良好,但在新数据上的泛化能力较差。考虑到多项式回归的例子,我们可以通过几个模型的比较来理解过拟合的本质。

  • 线性模型(欠拟合): 第一个模型是一个线性模型,它的拟合程度较差,不能充分适应训练集。

  • 四次方模型(过拟合): 第三个模型是一个四次方的模型,过于强调对训练集的拟合,失去了对新数据的泛化能力。

  • 中间模型(适中拟合): 中间模型似乎在拟合训练集和对新数据的泛化之间取得了平衡。

解决方案

丢弃无关特征

一种应对过拟合的方法是丢弃一些无关的特征。这可以通过手动选择保留哪些特征,或者使用一些模型选择的算法,如主成分分析(PCA)来实现。这种方法的缺点是需要人为干预,且可能遗漏一些潜在有用的特征。

正则化

另一种更普遍的方法是引入正则化技术。正则化通过保留所有特征的同时,减小参数的大小(magnitude)。这可以通过修改代价函数来实现,引入一个正则化项。正则化的核心思想是对模型复杂度进行惩罚,防止其过度拟合训练集。

二、代价函数的修改

考虑一个回归问题的模型,其中包含高次项,如:

我们知道,过多的高次项可能导致过拟合。为了避免这种情况,我们需要减小这些高次项的系数。正则化的基本思想就是在代价函数中对这些参数引入惩罚。

修改后的代价函数为:

其中,第一项为原始的均方误差代价,第二项是正则化项。正则化项的系数由参数 λ 决定,它是正则化参数。

正则化的效果

通过修改代价函数,我们实现了对参数的惩罚。当 λ 较小时,正则化的影响较小,模型更趋向于原始的过拟合情况。而当 λ 较大时,正则化的惩罚力度增强,模型的复杂度降低,更趋向于简单的拟合。

通过调整 λ 的值,我们可以在模型的复杂性和泛化能力之间找到平衡点,防止过拟合的发生。

选择合适的 λ

选择合适的 λ 值是正则化中关键的一步。如果 λ 过大,模型可能会过于简化,导致欠拟合。如果 λ 过小,模型可能无法避免过拟合。

通常,可以通过交叉验证等技术来选择最优的 λ 值,使得模型在验证集上达到最佳性能。

三、正则化线性回归的代价函数

正则化线性回归的代价函数包含两部分:原始的均方误差项和正则化项。对于线性回归问题,代价函数为:

其中,第一项为原始的均方误差代价,第二项是正则化项。正则化项通过参数 λ 控制,θj​ 是模型的参数。

梯度下降法

使用梯度下降法更新参数时,更新规则为:

其中,α 是学习率,m 是训练样本数量。

正规方程

正规方程用于直接求解正则化线性回归的参数 θ。求解的公式为:

其中,X 是输入特征矩阵,y 是输出向量,L 是一个对角矩阵,对角元素为 [0,1,1,...,1][0,1,1,...,1],与 θ0 ​对应的元素为 0。

梯度下降法与正规方程的比较

梯度下降法需要选择学习率 α,并进行多次迭代更新参数。正规方程则通过解析解直接计算参数,不需要选择学习率,但计算复杂度较高。通常在样本量较大时,梯度下降法更为实用;而在样本量较小且特征较多时,正规方程可能更为合适。

参数更新的影响

正则化项的引入使得参数更新时,每次都减少一个额外的值,这使得模型更趋向于简单的拟合。通过调整 λ 的值,可以控制正则化的强度,从而影响模型的复杂性和拟合效果。

四、正则化逻辑回归的代价函数

对于正则化的逻辑回归,代价函数包含两部分:原始的逻辑回归代价和正则化项。代价函数为:

其中,第一项为原始的逻辑回归代价,第二项是正则化项。正则化项通过参数 λ 控制,θj​ 是模型的参数。

梯度下降法

使用梯度下降法更新参数时,更新规则为:

其中,α 是学习率,m 是训练样本数量。

代码示例
import numpy as npdef sigmoid(z):return 1 / (1 + np.exp(-z))def costReg(theta, X, y, learningRate):theta = np.matrix(theta)X = np.matrix(X)y = np.matrix(y)m = len(X)first = np.multiply(-y, np.log(sigmoid(X * theta.T)))second = np.multiply((1 - y), np.log(1 - sigmoid(X * theta.T)))reg = (learningRate / (2 * m)) * np.sum(np.power(theta[:,1:theta.shape[1]], 2))return np.sum(first - second) / m + regdef gradientReg(theta, X, y, learningRate):theta = np.matrix(theta)X = np.matrix(X)y = np.matrix(y)m = len(X)error = sigmoid(X * theta.T) - ygrad = ((X.T * error) / m).T + (learningRate / m) * theta# Intercept term should not be regularizedgrad[0, 0] = grad[0, 0] - (learningRate / m) * theta[0, 0]return np.array(grad).ravel()
注意事项
  • 与线性回归不同,逻辑回归中的 θ 不参与正则化项。
  • 对 θ0​ 的更新规则与其他参数不同。
  • 正则化项的引入使得模型更趋向于简单的拟合,防止过拟合的发生。

通过正则化的逻辑回归模型,我们可以更好地处理高维数据,并提高模型的泛化能力。

参考资料

[中英字幕]吴恩达机器学习系列课程

黄海广博士 - 吴恩达机器学习个人笔记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/168817.html

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

相关文章

云效流水线docker部署 :node.js镜像部署VUE项目

文章目录 引言I 流水线配置1.1 项目dockerfile1.2 Node.js 镜像构建1.3 docker 部署引言 云效流水线配置实现docker 部署微服务项目:https://blog.csdn.net/z929118967/article/details/133687120?spm=1001.2014.3001.5501 配置dockerfile-> 镜像构建->docker部署。 …

使用jdk21预览版 --enable-preview

异常 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project sb3: Compilation failure [ERROR] --enable-preview 一起使用时无效 [ERROR] (仅发行版 21 支持预览语言功能) 解决…

已解决:rm: 无法删除“/opt/module/zookeeper-3.4.10/zkData/zookeeper_server.pid“: 权限不够

解决: ZooKeeper JMX enabled by default Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg Stopping zookeeper ... /opt/module/zookeeper-3.4.10/bin/zkServer.sh: 第 182 行:kill: (4149) - 不允许的操作 rm: 无法删除"/opt/module/zooke…

SparkSQL语法优化

SparkSQL在整个执行计划处理的过程中,使用了Catalyst 优化器。 1 基于RBO的优化 在Spark 3.0 版本中,Catalyst 总共有 81 条优化规则(Rules),分成 27 组(Batches),其中有些规则会被归…

JavaWeb Day09 Mybatis-基础操作01-增删改查

目录 环境准备 ①Emp.sql ②Emp.java 一、删除 ①Mapper层 ②测试类 ③预编译SQL(查看mybatis日志) 1.性能 2.安全 ④总结 二、新增 ①Mapper层 ②测试类 ③结果 ④新增(主键返回) 1.Mapper层 2.测试类 ⑤总结​…

【算法与设计模式】

一、数据结构与算法 1、算法性能评估 时间复杂度、空间复杂度 2、数据结构 数组与列表 队列 堆栈 链表 二叉树 多叉树 递归算法 二、设计模式 1、单例 (1)GIL:线程互斥锁。保证同一时刻只有一个线程在进行。 (2&#xff09…

前端开发项目中使用字体库

开发中有些项目要求使用固定的字体,这就需要项目中使用字体库。 首先需要下载字体库 将下载的字体文件放进项目中 在项目代码样式文件中定义字体 font-face {font-family: "Tobias-SemiBold";src: url("./assets/font/Tobias-SemiBold.ttf"…

【ElasticSearch】学习使用DSL和RestClient编写查询语句

文章目录 DSL和RestClient的学习前言1、DSL查询文档1.1 查询分类1.2 全文检索查询1.21 全文检索概述1.2.2 基本使用 1.3 精确查询1.3.1 term查询1.3.2 range查询 1.4 地理坐标查询1.4.1 geo_bounding_box查询1.4.2 geo_distance查询 1.5 复合查询1.5.1 常见相关性算法1.5.2 算分…

JVM-虚拟机的故障处理与调优案例分析

案例1:大内存硬件上的程序部署策略 一个15万PV/日左右的在线文档类型网站最近更换了硬件系统,服务器的硬件为四路志强处理器、16GB物理内存,操作系统为64位CentOS 5.4,Resin作为Web服务器。整个服务器暂时没有部署别的应用&#…

IP可视对讲实时录制系统

介绍 软件架构 技术支持 CallRecored介绍 IP可视对讲实时录制系统设计了数据库表,并完成了数据库建模,采用了视频编解码技术,高效网络传输,磁盘高效读写技术,以及提供开放接口。 系统客户端采用扁平化UI,…

asp.net core mvc之路由

一、默认路由 (Startup.cs文件) routes.MapRoute(name: "default",template: "{controllerHome}/{actionIndex}/{id?}" ); 默认访问可以匹配到 https://localhost:44302/home/index/1 https://localhost:44302/home/index https:…

Python开发运维:Python3.7使用QQ邮箱发送不同类型邮件

目录 一、理论 1.邮件发送 二、实验 1.Python3.7使用QQ邮箱发送普通邮件 2.Python3.7使用QQ邮箱发送包含图片与附件的邮件 三、问题 1.Pycharm中如何放大和缩小代码界面 一、理论 1.邮件发送 (1)概念 SMTP(Simple Mail Transfer Pro…