机器学习—特性缩放

特性缩放的技术能使梯度下降运行得更快,让我们先来看看功能大小之间的关系,这就是该特性的数字和相关参数的大小,作为一个具体的例子,让我们用两个特征来预测房子的价格,X1代表一个房子的大小,X2代表两个卧室的数量,假设X1通常在300-2000平方英尺之间,X2从0-5个卧室不等,所以在这个例子中,X1具有相对较大的值范围,X2的值范围相对较小。让我们以2000平方英尺的房子为例,有5间卧室,这个训练样本的价格是50万或50万美元,你认为参数大小的合理值是多少,让我们看一组可能的参数。W1=50,W2=0.1,b=50,所以在这种情况下,以千美元为单位的估计价格是10万K+0.5K+50K,所以这显然与50万美元的实际价格相去甚远,这不是一个很好的参数选择集。对于W1和W2,现在让我们看看另一种可能性,一号和二号正好相反,1是0.1,2是50,在W1和W2的选择中b也是50,W1相对较小,W2相对较大,50比0.1大得多,所以这里的预测价格是0.1*2000K+50*5+50,所以这个版本的模型预测价格为50万美元是一个更合理的估计,而且正好和房子的真实价格是一样的,所以希望你能注意到,当一个特性的可能值范围很大时就像平方英尺的大小,一直到2000,一个好的模型更有可能学会选择一个相对较小的参数,像0.1这样的值,同样的,当特征的可能值很小时,比如卧室的数量,那么它的参数的合理值就会比较大,像50。

这与梯度下降有什么关系?,让我们来看看特征的散点图,其中平方英尺的大小是横轴X1,卧室的数量X2在垂直轴上,如果绘制训练数据,你会注意到横轴的比例尺要大得多,或者值的范围要大得多,与垂直轴相比,让我们看看成本函数在等高线图中的样子,你可能会看到一个等高线图,其中水平轴的范围要窄的多,在0和1 之间,而垂直轴的值要大得多,10-100之间,所以等高线形成椭圆形或椭圆形一边短一边长,这是因为对W的一个非常小的变化,会对预估价格产生非常大的影响,对成本J有很大影响,因为w倾向于乘以一个非常大的数,即平方英尺大小。相比之下,为了大大改变预测,W需要更大的变化,因此对W2的小变化,不要改变成本函数。

如果你要进行梯。度下降,如果你用你的训练数据,因为轮廓又高又瘦,梯度下降最终可能会在很长一段时间内来回反弹,在它最终到达全球极小值之前,在这种情况下,要做的一件有用的事情是缩放特性,这意味着队训练数据执行一些转换,所以X1保存现在可能从0-1,X2也可以从0-1,所以数据点现在看起来更像这样,你可能会注意到,底部的地块模型现在与顶部的大不相同,最关键的一点是,X1和X2 现在都取了彼此可比的值范围,如果你在上面定义的成本函数上运行梯度下降,使用这个转换数据重新缩放X1和X2,然后轮廓就会更象这样,更像圆圈,少了高瘦,梯度下降可以找到一条更直接的路径到达全局最小值。

所以回顾一下,当你有不同的功能,具有非常不同的值范围,它会导致梯度下降运行缓慢,但是重新缩放不同的功能,所以它们都具有可比的值范围可以显著加快梯度下降。

如何实现特性缩放?

获取具有非常不同值范围的特性,并对它们进行缩放,使其具有彼此可比的价值范围。如果X1在3000-2000之间,获得X1缩放版本的一种方法是将每一个原始X取一个值除以范围的最大值2000,所以比例X1将从0.15开始到1,同样,因为X2从0-5,可以通过取每个原始的X2来计算X2的缩放版本除以5,这也是最大的,因此,比例X2现在将从0-1,所以如果你在图上绘制缩放的X1和X2 ,可能如下图所示

除了除以最大值,你也可以做所谓的均值正常化,所以这看起来是你从原始功能开始,然后再缩放它们,使它们的中心都在零附近,所以以前它们只有大于零的值,现在它们有负值也有正值,但可能通常在负一和正一之间,所以计算X1的平均归一化,先求平均值,也称为训练集上X1的平均值,让我们把这个叫做刻薄的μ1,例如,每亩地的平均面积是600平方英尺,所以让我们把每个X1-μ1/2000-300,2000是最大的,300是最小的,如果你这么做,你得到了规范化的X1介于-0.18到0.82,类似于平均归一化X2,你可以计算出特征二的平均值,例如μ2=2或3,然后你可以把每一个X2=X2-μ2/5-0,平均归一化X2介于-0.46到0.54,所以如果你用平均归一化X1和X2来绘制训练数据,可能是这样。

最后一种常见的重新标度方法叫做Z分数归一化,实现Z分数归一化,你需要计算每个特征的标准差,如果你不知道标准差是多少,不用担心,这门课不需要你知道,或者你听说过正态分布或者钟形曲线,有时也叫高斯分布,这就是正态分布的标准差,但如果你没听说过这个,你也不用担心,但如果你知道标准差是多少,然后实现Z分数归一化,你先计算平均值和标准差,通常用每个特征的小写希腊字母sigma表示,例如,可能特征一的标准差是450,μ1=600,归一化X1=X1-μ1/sigma1,你会发现Z分数归一化了X1介于-0.67到3.1,同样,如果你计算第二个特征的标准差是1.4,μ2=2000,归一化X2=X2-μ2/sigma2,在这种情况下,由X2归一化的Z分数现在介于-1.6到1.9,所以说,如果将训练数据绘制在归一化的X1和X2上,可能是如下图所示这样的。

作为经验法则,执行功能缩放时,你可能希望将功能范围从周围的任何地方,-1到周围的某个地方加上每个特征X的一个,但是这些值-1和-1可能有点松,所以如果特征范围在-3到3之间或者-0.3-0.3所有这些都是完全可以的,或者如果你有一个不同的功能X2,它的值在-2和5之间,但也许没问题,如果你也不管它,但是如果另一个像X3这样的特征在-100到100之间,然后就有了一个非常不同的值范围,从-1到1,因此,最好将此功能扩展到3,所以它的范围从接近-1到1,同样的,在-0.001到0.001之间,那么这些值就太小了,这意味着你可能也想重订它,最后,如果你的功能X5,例如医院的尺寸,病人的体温从98°到105°不等,在这种情况下,这些值大约是100,与其他比例特征相比,这实际上是相当大的,这实际上会导致梯度下降运行的更慢,因此,在这种情况下,功能缩放可能会有所帮助,进行功能重新缩放几乎没有任何害处,所以当有疑问时,就去执行它,这就是用这个小技术进行功能缩放的内容。你通常可以让梯度下降跑的更快。

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

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

相关文章

【黑马点评优化】之使用Caffeine+Redis实现应用级二层缓存

【黑马点评优化】之使用CaffeineRedis实现应用级二层缓存 1 缓存雪崩定义及解决方案2 为什么要使用多级缓存3 RedisCaffeine实现应用层二级缓存原理4 利用CaffeineRedis解决Redis突然宕机导致的缓存雪崩问题4.1 pom.xml文件引入相关依赖4.2 本地缓存配置类4.3 修改ShopServiceI…

UE5 使用Animation Budget Allocator优化角色动画性能

Animation Budget Allocator是UE内置插件,通过锁定动画系统所占CPU的预算,在到达预算计算量时对动画进行限制与优化。 开启Animation Budget Allocator需要让蒙皮Mesh使用特定的组件,并进行一些编辑器设置即可开启。 1.开启Animation Budget…

Tailwind Starter Kit 一款极简的前端快速启动模板

Tailwind Starter Kit 是基于TailwindCSS实现的一款开源的、使用简单的极简模板扩展。会用Tailwincss就可以快速入手使用。Tailwind Starter Kit 是免费开源的。它不会在原始的TailwindCSS框架中更改或添加任何CSS。它具有多个HTML元素,并附带了ReactJS、Vue和Angul…

k8s中的微服务

一、什么是微服务 用控制器来完成集群的工作负载,那么应用如何暴漏出去?需要通过微服务暴漏出去后才能被访问 Service是一组提供相同服务的Pod对外开放的接口。 借助Service,应用可以实现服务发现和负载均衡。 service默认只支持4层负载均…

二叉树与堆讲解

目录 1.树的概念及结构 1.树的概念 2.树的相关概念 3.树的表示 2.二叉树 1.概念 2.特殊的二叉树 1.满二叉树 2.完全二叉树 3.二叉树的性质 4.二叉树的存储结构 1.顺序结构 2.链式存储 3.堆 1.堆的概念及结构 2.堆的实现 1.堆的创建 2.堆的初始化(H…

Spring Boot知识管理:跨平台集成方案

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

STM32 407 RS485通信实现数据收发【我的创作纪念日】

1. 前言 本例中的485驱动,基于标准库编写,不是HAL库,请大家注意。 最近搞嵌入式程序,踩了不少坑,这里统一记录一下。 2. 收获 1.串口通信,数据是一个字节一个字节的发送,对方收到的数据是放在…

【消息队列】Kafka从入门到面试学习总结

国科大学习生活(期末复习资料、课程大作业解析、大厂实习经验心得等): 文章专栏(点击跳转) 大数据开发学习文档(分布式文件系统的实现,大数据生态圈学习文档等): 文章专栏(点击跳转&…

小米电机与STM32——CAN通信

背景介绍:为了利用小米电机,搭建机械臂的关节,需要学习小米电机的使用方法。计划采用STM32驱动小米电机,实现指定运动,为此需要了解他们之间的通信方式,指令写入方法等。花了很多时间学习,但网络…

【Next.js 项目实战系列】05-删除 Issue

原文链接 CSDN 的排版/样式可能有问题,去我的博客查看原文系列吧,觉得有用的话,给我的库点个star,关注一下吧 上一篇【Next.js 项目实战系列】04-修改 Issue 删除 Issue 添加删除 Button​ 本节代码链接 这里我们主要关注布局…

类和对象的认识

类:类是用来描述一个对象的,在java中万物皆对象,通过对类的抽象,类有哪些属性和行为,将这些抽象出来就是类。比如:狗,有名字,年龄,要吃饭的行为等等,将这些动…

仓储管理系统原型图移动端(WMS),出入库管理、库存盘点、库存调拨等(Axure原型、Axure实战项目)

仓储管理系统原型图移动端 Warehouse Management System Prototype 仓储管理系统原型图移动端是一个以图形化方式展示系统移动端界面和功能的原型设计图。原型图展示和说明系统移动端的功能和界面布局,为相关利益方提供一个直观的视觉化展示,帮助他们更…

RAG(检索增强生成)面经(1)

1、RAG有哪几个步骤? 1.1、文本分块 第一个步骤是文本分块(chunking),这是一个重要的步骤,尤其在构建与处理文档的大型文本的时候。分块作为一种预处理技术,将长文档拆分成较小的文本块,这些文…

Android中的内容提供者

目录 1.创建内容提供者 1--手动创建一个Android应用程序 2--创建自定义的内容提供者 2.访问其他应用程序 1. 解析URI 2. 查询数据 3. 遍历查询结果 3)案例:读取手机通信录 1.声明权限 2.activity_main.xml文件内容 3.my_phone_list.xml文件内容 4.定义PhoneInfo实体 5.定义MyPh…

线程异步和通信(promise和future)

线程异步和通信&#xff08;promise和future&#xff09; #include <thread> #include <iostream> #include <future> #include <string> using namespace std;void TestFuture(promise<string> p)//线程函数 {cout << "begin TestFu…

JAVA就业笔记7——第二阶段(4)

课程须知 A类知识&#xff1a;工作和面试常用&#xff0c;代码必须要手敲&#xff0c;需要掌握。 B类知识&#xff1a;面试会问道&#xff0c;工作不常用&#xff0c;代码不需要手敲&#xff0c;理解能正确表达即可。 C类知识&#xff1a;工作和面试不常用&#xff0c;代码不…

绘制YOLOv11模型在训练过程中,精准率,召回率,mAP_0.5,mAP_0.5:0.95,以及各种损失的变化曲线

一、本文介绍 本文用于绘制模型在训练过程中,精准率,召回率,mAP_0.5,mAP_0.5:0.95,以及各种损失的变化曲线。用以比较不同算法的收敛速度,最终精度等,并且能够在论文中直观的展示改进效果。支持多文件的数据比较。 专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化…

spring task的使用场景

spring task 简介 spring task 是spring自带的任务调度框架按照约定的时间执行某个方法的工具&#xff0c;类似于闹钟 应用场景 cron表达式 周和日两者必定有一个是问号 简单案例 使用步骤 demo Component注解表示这是一个Spring的组件&#xff0c;会被Spring容器扫描到&#…

全面超越Spark,Clickhouse,比 Spark 快 900%,基于云器Lakehouse构建新一代一体化数据平台

人工智能的迅速发展正在改变着我们的世界&#xff0c;对于大数据企业来说更是如此。 在大语言模型的引领下&#xff0c;数据平台领军企业 Databricks 和 Snowflake 的未来正在被重新书写。这两家企业在不久前的发布会上强调了大语言模型和 AI 能力的重要性&#xff0c;试图通过…

[单master节点k8s部署]41.部署springcloud项目

在之前的文章中我们配置了mysql和harbor&#xff0c;现在我们可以将一个springcloud部署在k8s集群中了。 项目概述 这个springcloud项目将采用maven进行打包部署。首先安装maven&#xff1a; yum install java-1.8.0-openjdk maven-3.0.5* -y 然后将该项目上传到k8s集群的m…