逻辑回归正则化

逻辑回归正则化在处理具有多个特征且特征可能共线性(即特征之间高度相关)的数据集特别有用。

下面用一个例子说明什么是正则化:

假设你在厨房准备一顿饭,你的目标是做出美味又不过分油腻的菜肴。

没有正则化的情况:

假设你没有任何限制地使用所有的调料,包括大量的盐和油。这可能会使得某些菜肴在尝起来非常美味(模型在训练数据上表现得很好),但对健康并不好(模型泛化能力差,即在未知数据上表现不佳)。这就好比一个过拟合的模型,它在训练集上学到了太多不必要的复杂性,以至于不能很好地推广到新的情况。

加入正则化:

正则化就好比是在你的烹饪过程中有意识地限制油和盐的使用。你不完全禁止它们——因为它们对于菜肴的味道很重要——但你会谨慎地使用它们,以确保菜肴既美味又健康。这就是正则化在模型中的作用:它不是完全消除模型中的特征(调料),而是限制这些特征的权重,使模型保持适度。

正则化的强度(λ):

正则化参数λ就像是你控制调料使用的规则。如果你设置得太严格(λ太高),那么菜肴可能会变得清淡无味(模型过于简化,可能导致欠拟合)。如果你设置得太宽松(λ太低),菜肴可能仍然过于油腻(模型过拟合)。

L1与L2正则化:

对于正则化通常有两种做法,L1和L2
L1 正则化倾向于创建更稀疏的模型,这意味着它会鼓励模型在某些特征上的权重变为零,类似于完全不使用某些调料。
L2 正则化则倾向于让所有特征的权重都较小但不为零,这类似于减少所有调料的使用量,但保留它们的存在。

总结:正则化实际上是对模型参数(例如逻辑回归中的权重)的调整。通过对这些参数添加额外的限制(例如,通过惩罚项),正则化减少模型的复杂度,从而帮助防止过拟合。这意味着模型在学习数据时不会过分依赖任何一个特征,从而提高其在新数据上的泛化能力。简单说:正则化通过调整模型参数的权重,来提高模型在新数据上预测目标(y)的泛化能力。

在逻辑回归中,我们通过在代价函数中增加一个正则化项来减少过拟合的风险: J ( θ ) = − 1 / m [ ∑ i = 1 m y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] + λ / 2 m ∑ j = 1 n θ j 2 J(θ) = -1/m [∑_{i=1}^m y^{(i)} log(h_θ(x^{(i)})) + (1 - y^{(i)}) log(1 - h_θ(x^{(i)}))] + λ/2m ∑_{j=1}^n θ_j^2 J(θ)=1/m[i=1my(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]+λ/2mj=1nθj2
在这个公式中:
第一部分是未正则化的代价第二部分是正则化项

  • J ( θ ) J(θ) J(θ)是正则化后的代价函数。
  • m m m是训练样本的数量。
  • y ( i ) y^{(i)} y(i)是第 i 个训练样本的目标值。
  • h θ ( x ( i ) ) h_θ(x^{(i)}) hθ(x(i))是模型的预测,即 sigmoid(Xθ)。
  • λ λ λ是正则化参数,它控制了正则化的强度。
  • θ j θ_j θj是模型参数。
  • n n n是参数的数量。

正则化项 λ / 2 m ∑ j = 1 n θ j 2 λ/2m ∑_{j=1}^n θ_j^2 λ/2mj=1nθj2通常不包括偏置项 θ 0 θ_0 θ0
在代码中实现这个正则化代价函数:

# 定义正则化代价函数
def costReg(theta, X, y, learning_rate):theta = np.matrix(theta)first_term = np.multiply(-y, np.log(sigmoid(X * theta.T)))second_term = np.multiply((1 - y), np.log(1 - sigmoid(X * theta.T)))reg_term = (learning_rate / (2 * len(X))) * np.sum(np.power(theta[:,1:theta.shape[1]], 2))return np.sum(first_term - second_term) / len(X) + reg_term

在这个函数中,learning_rate 是 λ λ λ(正则化参数),用于控制正则化的强度。请注意,正则化项只作用于 θ \theta θ的第二个元素及之后的元素,因为我们通常不对偏置项进行正则化。

同样地,梯度函数也需要修改以包括正则化项:

# 定义正则化梯度函数
def gradientReg(theta, X, y, learning_rate):theta = np.matrix(theta)error = sigmoid(X * theta.T) - ygrad = ((X.T * error) / len(X)).T + (learning_rate / len(X)) * theta# 不对偏置项θ_0进行正则化grad[0, 0] = np.sum(np.multiply(error, X[:,0])) / len(X)return grad

在这个函数中,我们对除了偏置项之外的所有权重应用正则化。这是通过在梯度计算中添加 (learning_rate / len(X)) * theta 来实现的。对于偏置项 theta[0, 0],我们使用原始的梯度计算方法。

如何选择合适的正则化参数 λ

选择合适的正则化参数 λ对于确保模型既不过拟合也不欠拟合非常重要。以下是一些常用的方法来选择合适的正则化参数,这里仅参考一下,后续再详细学习:

  • 交叉验证:最常见且有效的方法之一。可以使用 k 折交叉验证来评估不同 λ 值的性能。具体来说,将训练数据集分为 k 个小子集;对于每个 λ 值,将其中一个子集作为验证集,其余作为训练集。计算在这 k 个验证集上的平均性能,并选择表现最佳的 λ 值。

  • 网格搜索:与交叉验证结合使用。在一个预定义的范围内(如从 0.01 到 100),为 λ 尝试多个值。通常这些值是在对数尺度上均匀分布的。然后使用交叉验证来评估每个 λ 值的性能,并选择最佳的一个。

  • AIC/BIC 准则:这些准则衡量的是模型的好坏,同时惩罚模型的复杂度。它们可以用于自动选择 λ 值,尤其在统计建模中比较常用。

  • 验证曲线:通过绘制不同 λ 值的模型性能(比如,准确率或错误率)来直观地展示其影响。观察这些曲线,可以帮助选择一个使得模型既不过拟合也不欠拟合的 λ 值。

  • 学习曲线:通过分析训练和验证误差随训练集大小变化的曲线,可以帮助判断更大或更小的 λ 值是否有助于提高模型性能。

  • 启发式方法:在某些情况下,可以根据领域知识或以往经验来选择 λ 值。例如,在处理类似的数据集或问题时,先前有效的 λ 值可能会是一个不错的起点。

  • 自动化方法:有些算法和库提供了自动化选择正则化参数的选项。例如,一些机器学习框架中的正则化路径算法可以自动搜索并选择最佳的 λ 值。

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

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

相关文章

【面试】测试/测开(NIG2)

145. linux打印前row行日志 参考&#xff1a;linux日志打印 前10行日志 head -n 10 xx.log后10行日志 tail -n 10 xx.log tail -10f xx.log使用sed命令 sed -n 9,10p xx.log #打印第9、10行使用awk命令 awk NR10 xx.log #打印第10行 awk NR>7 && NR<10 xx.log …

OTP语音芯片与可重复擦写(Flash型)语音芯片:特性比较与应用差异

在嵌入式语音应用中&#xff0c;OTP&#xff08;一次性可编程&#xff09;语音芯片与可重复擦写&#xff08;Flash型&#xff09;语音芯片是两种常见的存储解决方案&#xff0c;它们在特性和应用上存在明显差异。本文将深入比较唯创知音这两类语音芯片的区别&#xff0c;以帮助…

OpenCV图像处理——Python开发中OpenCV视频流的多线程处理方式

前言 在做视觉类项目中&#xff0c;常常需要在Python环境下使用OpenCV读取本地的还是网络摄像头的视频流&#xff0c;之后再调入各种模型&#xff0c;如目标分类、目标检测&#xff0c;人脸识别等等。如果使用单线程处理&#xff0c;很多时候会出现比较严重的时延&#xff0c;…

H3C ER G2系列路由器信息泄露漏洞

H3C ER G2系列路由器信息泄露漏洞 免责声明漏洞描述漏洞影响漏洞危害漏洞页面漏洞复现1. 构造poc2. 发生数据包&#xff0c;获取密码3. 登录系统 免责声明 仅用于技术交流,目的是向相关安全人员展示漏洞利用方式,以便更好地提高网络安全意识和技术水平。 任何人不得利用该文章…

mac电脑html文件 局域网访问

windows html文件 局域网访问 参考 https://blog.csdn.net/qq_38935512/article/details/103271291mac电脑html文件 局域网访问 开发工具vscode 安装vscode插件 Live Server 完成后打开项目的html 右键使用Live Server打开页面 效果如下&#xff0c;使用本地ip替换http://12…

利用高级 CSPM 应对现代攻击

混合云和多云环境的快速增长造成了跨架构的复杂性&#xff0c;使得人们很难清楚、完整地了解技术堆栈中的各种平台。最近云攻击和破坏的激增引起了人们对团队应如何有效地保护和运行云中的应用程序的关注。 因为错误配置是云环境中安全威胁的首位&#xff0c;并且是基于云的攻…

cfa一级考生复习经验分享系列(四)

备考CFA一级满打满算用了一个多月&#xff0c;每天八个小时以上。可能如果仅以通过为目标的话完全不用这样&#xff0c;看过太多类似于只看了一周就通过了考试又或是放弃了好几门飘过了考试的情况&#xff0c;我觉得这是不正确的考试状态&#xff0c;完全不必惊叹&#xff0c;踏…

学生护眼灯最好是哪一款?考研受欢迎的护眼台灯推荐

当前我国近视防控面临严峻局面&#xff0c;数据显示&#xff0c;我国近视发病率比较高&#xff0c;2012年在我国5岁以上总人口中&#xff0c;近视的人数在4.5亿人左右:到2050年&#xff0c;全世界每十个人中就有一个人患有近视&#xff0c;而这其中1/3将会是中国人。世界卫生组…

【Qt QML入门】Button

Button表示一个推按钮控件&#xff0c;用户可以按下或单击它。 import QtQuick import QtQuick.Window import QtQuick.ControlsWindow {id: winwidth: 800height: 600visible: truetitle: qsTr("Hello World")Button {id: btnwidth: 200height: 100anchors.centerIn…

10-索引-索引二分-H 指数 II

这是索引二分的第十篇算法&#xff0c;力扣链接 给你一个整数数组 citations &#xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数&#xff0c;citations 已经按照 升序排列 。计算并返回该研究者的 h 指数。 h 指数的定义&#xff1a;h 代表“高引用次数”&am…

MIT_线性代数笔记:第 17 讲 正交矩阵和施密特正交化

目录 正交向量 Orthonormal vectors标准正交矩阵 Orthonormal matrix标准正交列向量的优势 Orthonormal columns are good施密特正交化 Gram-Schmidt 本讲我们完成对“正交”的介绍。Gram-Schmidt 过程可以将原空间的一组基转变为标准正交基。 正交向量 Orthonormal vectors 满…

VHDL实验:基于有限状态机实现秒表

题目要求&#xff1a; 利用有限状态机实现实现一个具有启动、停止、清零功能的秒表&#xff0c;显示格式&#xff1a;分&#xff1a;秒&#xff1a;十分秒。启动、停止、清零由一个按键控制&#xff0c;按键按下时&#xff0c;功能按启动、停止、清零顺序循环。 思路分析&…

vue和jQuery有什么区别

Vue 和 jQuery 是两种不同类型的前端工具&#xff0c;它们有一些显著的区别&#xff1a; Vue 响应式数据绑定&#xff1a;Vue 提供了双向数据绑定和响应式更新的能力&#xff0c;使得数据与视图之间的关系更加直观和易于维护。组件化开发&#xff1a;Vue 鼓励使用组件化的方式…

代码随想录27期|Python|Day15|二叉树|层序遍历|对称二叉树|翻转二叉树

本文图片来源&#xff1a;代码随想录 层序遍历&#xff08;图论中的广度优先遍历&#xff09; 这一部分有10道题&#xff0c;全部可以套用相同的层序遍历方法&#xff0c;但是需要在每一层进行处理或者修改。 102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 层…

【深度学习】强化学习(五)深度强化学习

文章目录 一、强化学习问题1、交互的对象2、强化学习的基本要素3、策略&#xff08;Policy&#xff09;4、马尔可夫决策过程5、强化学习的目标函数6、值函数7、深度强化学习1. 背景与动机2. 关键要素3. 成功案例4. 挑战和未来展望5. 核心概念和方法总结 一、强化学习问题 强化学…

关于react native项目中使用react-native-wechat-lib@3.0.4

关于react native项目中使用react-native-wechat-lib3.0.4 插件官网安装依赖包&#xff08;Android和iOS下载插件完成后记得更新依赖&#xff0c;&#xff09;Android中配置1.在项目文件夹下面创建文件夹wxapi&#xff08;如上图&#xff09;2.在文件MainApplication.java中如下…

基于Java SSM框架实现高校人事管理系统项目【项目源码】计算机毕业设计

基于java的SSM框架实现高校人事管理系统演示 JSP技术介绍 JSP技术本身是一种脚本语言&#xff0c;但它的功能是十分强大的&#xff0c;因为它可以使用所有的JAVA类。当它与JavaBeans 类进行结合时&#xff0c;它可以使显示逻辑和内容分开&#xff0c;这就极大的方便了用户的需…

树莓派,opencv,Picamera2利用舵机云台追踪人脸

一、需要准备的硬件 Raspiberry 4b两个SG90 180度舵机&#xff08;注意舵机的角度&#xff0c;最好是180度且带限位的&#xff0c;切勿选360度舵机&#xff09;二自由度舵机云台&#xff08;如下图&#xff09;Raspiberry CSI 摄像头 组装后的效果&#xff1a; 二、项目目标…

【漏洞复现】华脉智联指挥调度平台/script_edit/fileread.php文件读取漏洞

Nx01 产品简介 深圳市华脉智联科技有限公司&#xff0c;融合通信系统将公网集群系统、专网宽带集群系统、不同制式、不同频段的短波/超短波对讲、模拟/数字集群系统、办公电话系统、广播系统、集群单兵视频、视频监控系统、视频会议系统等融为一体&#xff0c;集成了专业的有线…

Axure->Axure安装,Axure菜单栏和工具栏功能介绍,页面及概要区

目录 一.项目的全周期 二.产品经理的介绍 三.Axure安装 四.Axure的基本使用 1.Axure菜单栏和工具栏功能介绍&#xff0c;页面及概要区 一.项目的全周期 二.产品经理的介绍 同时做五个项目&#xff0c;每个项目100w&#xff0c;一个项目成本需要50-60w&#xff0c;那么五个…