【机器学习】P4 特征缩放与学习率
这里写自定义目录标题
- 特征缩放
- 标准化
- 归一化
- 平均值归一化
- 收敛
- 学习率
特征缩放
特征缩放(Feature scaling)是一种数据预处理技术,它用于将不同尺度的特征值缩放到相同的范围内,以便更好地应用于机器学习算法中。在不进行特征缩放的情况下,一些特征值可能会因其量级较大而对模型的训练产生更大的影响,导致模型无法充分学习其他特征值的影响。
几种常见的特征缩放方法:
-
标准化(Standardization):通过将每个特征值减去其均值,然后除以其标准差,将特征值缩放为以0为中心、标准差为1的正态分布。
-
归一化(Normalization):通过将每个特征值缩放到0和1之间的范围内,使得所有特征值的范围相同。
-
平均值归一化(Mean normalization):通过将每个特征值缩放到[-1,1]或[0,1]范围内,从而使特征值在[-1,1]或[0,1]之间。
e.g.e.g.e.g. 比如 bedrooms 代表卧室的数量,size in feet2^22 代表房间的尺寸。
一般卧室的数量都是个位数十位数,而房间的尺寸却一般都是百位数千位数,所以为了防止房间的尺寸数量级较大从而使得模型无法充分学习卧室个数的情况;
我们有如下三种方法进行特征缩放:
标准化
标准化(Standardization)又称为 Z-score normalization,对于一个特征 xxx,其均值为 μ\muμ,标准差为 σ\sigmaσ,则对于每个样本,xxx 的缩放后的值 yyy 可以通过以下公式计算:
y=x−μσy = \frac {x-\mu} \sigmay=σx−μ
通过这种方法缩放后的特征值 yyy 的平均值为0,标准差为1;
例如在上述的房间尺寸与卧室数量的案例中:
300≤x1≤2000;x1,scaled=x1−μ1σ10≤x2≤5;x2,scaled=x2−μ2σ2300≤x_1≤2000; x_{1,scaled}=\frac {x_1-\mu_1} {\sigma_1} \\ 0≤x_2≤5; x_{2,scaled}=\frac {x_2-\mu_2} {\sigma_2} 300≤x1≤2000;x1,scaled=σ1x1−μ10≤x2≤5;x2,scaled=σ2x2−μ2
import numpy as np
def zscore_normalize_features(X):mu = np.mean(X, axis=0)sigma = np.std(X, axis=0)X_norm = (X - mu) / sigma return (X_norm, mu, sigma)
通过 Sklearn 实现 Z-Score Normalization
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_norm = scaler.fit_transform(X_train)
归一化
归一化(Normalization)又称为最大值缩放 Max Scaling。具体来说,对于一个特征xxx,其最大值为 maxmaxmax,则对于每个样本,xxx 的缩放后的值 yyy 可以通过以下公式计算:
y=xmaxy = \frac x {max}y=maxx
例如在上述的房间尺寸与卧室数量的案例中:
300≤x1≤2000;x1,scaled=x120000≤x2≤5;x2,scaled=x25300≤x_1≤2000; x_{1,scaled}=\frac {x_1} {2000} \\ 0≤x_2≤5; x_{2,scaled}=\frac {x_2} {5} 300≤x1≤2000;x1,scaled=2000x10≤x2≤5;x2,scaled=5x2
def max_normalize_features(X):x_max = np.max(X) X_norm = X / x_maxreturn X_norm
平均值归一化
平均值归一化具体来说,对于一个特征 xxx,其均值为 μ\muμ,最小值为 minminmin,最大值为 maxmaxmax,则对于每个样本,xxx 的缩放后的值 yyy 可以通过以下公式计算:
y=x−μmax−miny = \frac {x-\mu} {max-min}y=max−minx−μ
例如在上述的房间尺寸与卧室数量的案例中:
300≤x1≤2000;x1,scaled=x1−μ12000−3000≤x2≤5;x2,scaled=x2−μ25−0300≤x_1≤2000; x_{1,scaled}=\frac {x_1-\mu_1} {2000-300} \\ 0≤x_2≤5; x_{2,scaled}=\frac {x_2-\mu_2} {5-0} 300≤x1≤2000;x1,scaled=2000−300x1−μ10≤x2≤5;x2,scaled=5−0x2−μ2
def mean_normalize_features(X):mu = np.mean(X, axis=0) x_max = np.max(X)x_min = np.min(X)X_norm = (X - mu) / (m_max - m_min)return X_norm
收敛
收敛(Convergence)通常指的是训练过程中模型的参数逐渐趋于稳定,不再发生明显变化的情况。当模型的参数收敛时,其对训练数据的拟合误差(training error)也会逐渐降低,直到达到一个较小的阈值或收敛标准。
如下图所示,一般来说,伴随着迭代(iterations),应该呈现下图所示曲线,即损失函数越来越小,直到趋于稳定,不再发生明显变化;
损失函数在迭代100次时,下降的速度还是很快的;
在迭代200次的时候,损失值下降的速度明显变慢;
在迭代300次的时候,每次迭代损失值下降的已经很小很小了;
在迭代400次的时候,几乎看不到变化,趋于稳定,此时我们称之为 converged,即收敛了。
而如果出现损失值变大的情况,则可能是学习率 α\alphaα 设置的有问题,下面我们将学习了解学习率的概念;
学习率
学习率(learning rate)是梯度下降算法中的一个重要超参数,用于控制每一次参数更新的步长大小。在梯度下降算法中,每一次迭代都需要计算损失函数的梯度,然后按照一定的步长沿着梯度方向更新模型参数。
学习率决定了每次更新的步长大小:
如果学习率过大,会导致参数在梯度方向上 “跳跃” 太大而无法收敛;
如果学习率过小,会导致参数更新缓慢,耗费较长的时间才能达到最优解。
学习率的选择是一个经验性的问题,需要根据具体问题和数据集的特征来进行调整。一般来说,可以从较小的学习率(比如 α\alphaα = 0.001)开始,观察损失函数的收敛情况和模型的性能,然后逐步调整学习率的大小,直到达到最佳的性能和收敛速度。
在梯度下降算法中,有三种不同的学习率策略可供选择:
- 固定学习率:使用固定的学习率,不随着迭代次数的增加而改变。
- 动态学习率:根据迭代次数或其他规则来动态调整学习率。
- 自适应学习率:根据梯度的大小来自适应地调整学习率,常见的方法包括Adagrad、Adam等。
对于初学者而言,无需参与到动态学习率 与 自适应学习率的讨论中,尝试固定学习率,以 0.001 与 0.01 多做尝试即可。
相关文章:

【机器学习】P4 特征缩放与学习率
这里写自定义目录标题特征缩放标准化归一化平均值归一化收敛学习率特征缩放 特征缩放(Feature scaling)是一种数据预处理技术,它用于将不同尺度的特征值缩放到相同的范围内,以便更好地应用于机器学习算法中。在不进行特征缩放的情…...

《Python编程:从入门到实战》(第2版)学习笔记 第11章 测试代码
【写在前面】为进一步提高自己的python代码能力,打算把几本经典书籍重新过一遍,形成系统的知识体系,同时适当记录一些学习笔记,我尽量及时更新!先从经典的《Python编程:从入门到实战》书籍开始吧。有问题欢…...

SpringBoot(1)基础入门
SpringBoot基础入门SpringBoot项目创建方式Idea创建SpringBoot官网创建基于阿里云创建项目手工搭建SpringBoot启动parentstarter引导类内嵌tomcat基础配置属性配置配置文件分类yaml文件yaml数据读取整合第三方技术整合JUnit整合MyBatis整合Mybatis-Plus整合DruidSpringBoot是由…...

利用Flow Simulation快速经济高效地解决传热难题
几乎一切事物都会经历某种程度的发热或冷却,而且对于许多产品来说,热管理已成为避免过度发热和实现功能正常运行的一个关键要求。能够有效解决传热问题的制造商将会在竞争中占有明显的优势。利用一个简单易用的流体分析应用程序 SOLIDWORKS Flow Simulat…...

揭开二维码背后的神秘面纱用二维码识别 API 就够了
写在前面 二维码(QR code)已经成为现代生活中不可或缺的一部分。二维码具有可靠性、快速识别、易于存储等优点,因此在广泛应用于支付、门票、社交网络、广告等方面。但是,对于大多数人来说,二维码背后的编码方式是完全…...

系统分析——系统构建最重要的一环
🌟所属专栏:信息系统分析与设计 🐔作者简介:rchjr——五带信管菜只因一枚 😮前言:该系列将持续更新信息系统分析与设计课程的相关学习笔记,欢迎和我一样的小白订阅,一起学习共同进步…...
第1-第20个高级shell程序
高级shell脚本 1.使用Shell脚本批量修改文件名 #!/bin/bash for fi lein$(ls*.txt) do mv $file${file%%.*}.md done2.统计一个文本文件中某个单词出现的次数 #!/bin/bashword"example" count0 whilereadline do forwin$line do if["$w""$word&qu…...
【致敬嵌入式攻城狮第2期活动预热征文】学习安排
文章目录「 致敬未来的攻城狮计划 」——学习计划前言学习计划🚗单片机理论实践🚗学业阅读计划「 致敬未来的攻城狮计划 」——学习计划 🚀🚀开启攻城狮的成长之旅!这是我参与的由 CSDN博客专家 架构师李肯和 瑞萨MCU …...

035:cesium加载KML文件,显示图形
第035个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载KML文件, 显示图形。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共83行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:https:/…...

随想录Day42--动态规划: 416. 分割等和子集(终于吃下01背包了)
今天只有1道题,属于动态规划的01背包问题的应用。首先理解一下动态规划的01背包问题。推荐一个视频,动态规划DP0-1背包,这是我认为讲得最为通透的。很多讲解动态背包问题的,一上来就画二维表格,遍历背包或者遍历容量&a…...

字节跳动软件测试岗,前两面过了,第三面被面试官吊打,结局我哭了
阎王易见,小鬼难缠。我一直相信这个世界上好人居多,但是也没想到自己也会在阴沟里翻船。我感觉自己被字节跳动的HR坑了。 在这里,我只想告诫大家,offer一定要拿到自己的手里才是真的,口头offer都是不牢靠的࿰…...
bitlocker 笔记
介绍 bitlocker是windows自带的磁盘加密工具,win10专业版是可以使用的,其他家庭版本可能没有这个功能。有点类似与wd security。 功能 加密磁盘,当磁盘物理丢失时,防止磁盘中的数据泄露。举个例子,移动硬盘被偷&…...
Linux 压缩与解压命令
一、常见的压缩文件扩展名 1、*.Z compress程序压缩的文件 2、*.gz gzip程序压缩的文件 3、.tar.gz tar程序打包的文件,其中经过gzip的压缩 4、.tar tar程序打包的数据,并没有压缩过 5、.bz2 bzip2程序压缩的文件 6、.tar.bz2 tar程序打包的文件&a…...

python global函数用法及常用的 global函数代码
Python中的 global函数是用于在程序中定义变量的函数,在我们实际的开发中,我们可能会用到 global函数来定义变量,但是我们在这里就不具体介绍它的用法了。 global函数定义变量的方法: global函数使用参数a来指定变量在程序中的地址…...

大数据学完好就业么
Python的普及与数据挖掘、人工智能和数值计算等领域的蓬勃发展相关,但同时也与普遍编程需求的增加有关。 Python应用领域广泛,意味着选择Python的同学在学成之后可选择的就业领域有很多,加上Python本身的优势,致使现在越来越多的…...

CASAtomic 原子操作详解
文章目录CAS&Atomic 原子操作详解什么是原子操作CAS相关原子操作类的使用AtomicIntegerAtomicIntegerArray更新引用类型原子更新字段类LongAdderCAS&Atomic 原子操作详解 什么是原子操作 Mysql事务中的原子性就是一个事务中执行的多条sql,要么同时成功&am…...

卷积神经网络(convolutional neural network, CNN)
卷积神经网络(convolutional neural network, CNN) 卷积神经网络(convolutional neural network, CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。卷积网络是指那些至少在网络的一层中使用卷积运算来替代…...

kube-apiserver启动流程源码分析
1. 概述 KubeAPIServer 主要是提供对 API Resource 的操作请求,为 kubernetes 中众多 API 注册路由信息,暴露 RESTful API 并且对外提供 kubernetes service,使集群中以及集群外的服务都可以通过 RESTful API 操作 kubernetes 中的资源。 2…...

Scala基础(二)
单例对象(object) Scala的类中无法定义静态成员,即无static关键字。如何像Java一样表达类的静态成员变量、成员方法与静态代码块? Scala解决方案:单例对象 使用“object”关键字声明,可包含变量、方法与…...
Python 生产者消费者模型是什么?
本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注! 作者| 慕课网精英讲师 朱广蔚 1. 简介 生产者和消费者问题是线程模型中的经典问题: 生产者和消费者共享同一个存储空间生产者往存储空间中添…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...