MachineLearning(5)-去量纲:归一化、标准化

去量纲:归一化、标准化

  • 1.归一化(Normalization)
    • 1.1 Min-Max Normalization
    • 1.2 非线性Normalization
  • 2.标准化(Standardlization)
    • 2.1 Z-score Normalization
  • 3.标准化在梯度下降算法中的重要性

本博文为葫芦书《百面机器学习》阅读笔记。

去量纲化 可以消除特征之间量纲的影响,将所有特征统一到一个大致相同的数值区间内;以便不同量级的指标能够进行比较和加权处理。

去量纲化的好处:
(1).使得不同量纲之间的特征具有可比性,消除量纲引起的特征数值量级对分析结果的影响;

(2).未归一化的特征数值太大,将引起数值计算问题;

(3).利用梯度下降算法求解的模型,输入特征数据通常需要归一化处理(线性回归,逻辑回归,支持向量机,神经网络模型),可以加速算法的收敛过程。

去量纲化的方法:
两类常用的方法:归一化标准化

1.归一化(Normalization)

1.1 Min-Max Normalization

x′=x−XminXmax−Xminx'=\frac{x-X_{min}}{X_{max}-X_{min}}x=XmaxXminxXmin

作用: 将原始特征数据线性映射到[0,1]
优点: 线性变换,对数据进行处理,不会改变原有数据的性质
缺点: 新数据加入,Xmin,XmaxX_{min},X_{max}Xmin,Xmax可能会发生变化,所有数据需要重新进行归一化处理。

1.2 非线性Normalization

对数变换:x′=log⁡xx'=\log xx=logx
反正切变换:x′=2πarctan⁡xx'=\frac{2}{\pi}\arctan xx=π2arctanx
适用情况:用于数据分化较大的场景,有些数据很大,有些数据很小 。需要依据数据分布情况,决定使用的非线性函数。

2.标准化(Standardlization)

2.1 Z-score Normalization

零均值标准化
x′=x−μσx'=\frac{x-\mu}{\sigma}x=σxμ
其中:μ\muμ 原始数据均值,σ\sigmaσ原始数据标准差 (数据量很大的情况下,这两个统计量对 加入新数据 不敏感,故可以处理新添加数据的情况);x−μx-\muxμ 为数据中心化,将数据中心平移到原点。

适用情况: 原始数据分布接近正态分布,将原始数据 标准化 为均值为0 ,方差为1 的分布。
优点: 线性变换,对数据进行处理,不会改变原有数据的性质

3.标准化在梯度下降算法中的重要性

参考博文:通俗易懂理解特征归一化对梯度下降算法的重要性https://blog.csdn.net/feijie7788/article/details/89812737

涉及数学知识:
1.一个三维曲面z=f(x,y)z=f(x,y)z=f(x,y)被一系列平面z=cz=cz=c所截得到一系列等值线。

2.曲面上某点P 梯度方向 定义:函数在该点增长最快的方向。
通过方向导数与fxf_xfxfyf_yfy的关系得出函数在P点增长最快的方向为:(fx,fy)(f_x,f_y)(fx,fy),即为梯度方向。

3.等值线上 P点法线方向,垂直于P点切线方向。P点切线方向(dx,dy)(dx,dy)(dx,dy),斜率为dydx\frac{dy}{dx}dxdy, 由隐函数求导规则可得dydx=−fxfy\frac{dy}{dx}=-\frac{f_x}{f_y}dxdy=fyfx. 则法线斜率为fyfx\frac{f_y}{f_x}fxfy,即,法线方向为(fx,fy)(f_x,f_y)(fx,fy) .所以曲线上某点的梯度方向,与过该点的等值线的法线方向相同。

4.c=f(x,y)隐函数求导:(两边同时对x求导)
0=∂f∂x+∂f∂ydydx=>dydx=−fxfy0=\frac{\partial f}{\partial x}+\frac{\partial f}{\partial y}\frac{dy}{d x}=>\frac{dy}{d x}=-\frac{f_x}{f_y}0=xf+yfdxdy=>dxdy=fyfx

5.相互垂直两个向量a=(x1,y1),b=(x2,y2)a=(x_1,y_1),b=(x_2,y_2)a=(x1,y1),b=(x2,y2),夹角θ\thetaθ
内积定义垂直关系:∣a∣∣b∣cos⁡θ=0|a||b|\cos \theta=0abcosθ=0
坐标垂直关系:x1x2+y1y2=0x_1x_2+y_1y_2=0x1x2+y1y2=0(带入a=x1i+y1j,b=x2i+y2j,a∗b计算a=x_1i+y_1j,b=x_2i+y_2j,a*b计算a=x1i+y1j,b=x2i+y2j,ab)
两向量与x轴夹角正玄值关系:−1=y2x2y1x1-1=\frac{y_2}{x_2} \frac{y_1}{x_1}1=x2y2x1y1

参考博文:
1.梯度方向与等高线方向垂直的理解:https://blog.csdn.net/bitcarmanlee/article/details/85275016
2.等值线与梯度的几何意义:https://jingyan.baidu.com/article/da1091fb475551027849d6b7.html
3.一文读懂梯度下降算法(各种导数):https://www.cnblogs.com/hithink/p/7380838.html
4.据预处理之中心化(零均值化)与标准化(归一化):https://www.cnblogs.com/wangqiang9/p/9285594.html
5.归一化 (Normalization)、标准化 (Standardization)和中心化/零均值化 (Zero-centered)(简书):https://www.jianshu.com/p/95a8f035c86c

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

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

相关文章

GDB调试技术(一)

启动GDB的方法有以下几种: 1、gdb <program> program也就是你的执行文件,一般在当然目录下。 2、gdb <program> core 用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件。 3、

GDB调试技术(二)

1) 恢复程序运行和单步调试 当程序被停住了,你可以用continue命令恢复程序的运行直到程序结束,或下一个断点到来。也可以使用step或next命令单步跟踪程序。 continue [ignore-count] c [ignore-count] fg [ignore-count] 恢复程序运行,直到程序结束,或是下一个断点到…

关于Java中String的问题

String 对象的两种创建方式&#xff1a; String str1 "abcd";//先检查字符串常量池中有没有"abcd"&#xff0c;如果字符串常量池中没有&#xff0c;则创建一个&#xff0c;然后 str1 指向字符串常量池中的对象&#xff0c;如果有&#xff0c;则直接将 st…

学点数学(3)-函数空间

函数空间1.距离&#xff1a;从具体到抽象2.范数3.内积4.拓扑本博文为观看《上海交通大学公开课-数学之旅-函数空间 》所整理笔记&#xff0c;公开课视频连接&#xff1a;http://open.163.com/newview/movie/free?pidM8PTB0GHI&midM8PTBUHT0数学中的空间 是 大家研究工作的…

Makefile编写详解--项目开发

预备知识&#xff1a; gcc 的3个参数&#xff1a; 1. -o 指定目标文件 gcc sources/main.c -o bin/main 2. -c 编译的时候只生产目标文件不链接 gcc -c sources/main.c -o obj/main.o 3. -I 主要指定头文件的搜索路径 gcc -I headers -c main.c -o main.o 4. -l 指定静…

如何判断对象已经死亡

引用计数 给对象中添加一个引用计数器&#xff0c;每当有一个地方引用它&#xff0c;计数器就加 1&#xff1b;当引用失效&#xff0c;计数器就减 1&#xff1b;任何时候计数器为 0 的对象就是不可能再被使用的。 这个方法实现简单&#xff0c;效率高&#xff0c;但是目前主流…

XML常见的操作

1. 创建XML文档 &#xff08;1&#xff09;创建一个XML文档非常简单&#xff0c;其流程如下&#xff1a; ① 用xmlNewDoc函数创建一个文档指针doc。 ② 用xmlNewNode函数创建一个节点指针root_node。 ③ 用xmlDocSetRootElement将root_node设置为doc的根结点。…

算法(2)-二叉树的遍历(递归/迭代)python实现

二叉树的遍历1.深度优先DFS1.1 DFS 递归解法1.1.1先序遍历1.1.2中序遍历1.1.3后序遍历1.2 DFS迭代解法1.2.1先序遍历1.2.2中序遍历1.2.3后序遍历2.广度优先BFS3.二叉树的最大深度3.1递归3.2迭代4.翻转二叉树4.1递归4.1迭代5.合并两棵二叉树5.1递归5.2迭代有两种通用的遍历树的策…

libxml的安装和相关数据结构详解

1安装 一般如果在安装系统的时候选中了libxml开发库的话&#xff0c;系统会默认安装。如果没有安装&#xff0c;可以按如下步骤进行手工安装。 ① 从xmlsoft站点或ftp(ftp.xmlsoft.org)站点下载libxml压缩包 (libxml2-xxxx.tar.gz) ② 对压缩包进行解压缩 tar xvzf …

内核中的 likely() 与 unlikely()

在 2.6 内核中&#xff0c;随处可以见到 likely() 和 unlikely() 的身影&#xff0c;那么为什么要用它们&#xff1f;它们之间有什么区别&#xff1f; 首先要明确&#xff1a; if(likely(value)) 等价于 if(value) if(unlikely(value)) 也等价于 if(value) 也就是说 likely()…

python外卷(12)-sort(),sorted(),ord(),chr()

Python内置函数1.sort()&#xff0c;sorted()2.ord(), chr()1.sort()&#xff0c;sorted() sort() 是list的方法&#xff0c;对已经存在的列表进行操作&#xff0c;无返回值 a[3,2,4,1] b["c","a","b"] print (a.sort(),b.sort()) # 输出 (Non…

利用posix_fadvise清理系统中的文件缓存

利用posix_fadvise清理系统中的文件缓存leoncom c/c,unix2011-08-03当我们需要对某段读写文件并进行处理的程序进行性能测试时&#xff0c;文件会被系统cache住从而影响I/O的效率&#xff0c;必须清理cache中的对应文件的才能正确的进行性能测试。通常清理内存可以采用下面的这…

空间分配

目前主流的垃圾收集器都会采用分代回收算法&#xff0c;因此需要将堆内存分为新生代和老年代&#xff0c;这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。 大多数情况下&#xff0c;对象在新生代中 eden 区分配。当 eden 区没有足够空间进行分配时&#xff0c;虚拟…

关于uint32_t uint8_t uint64_t 的问题

怎么又是u又是_t的?u代表的是unsigned相信大家都知道,那么_t又是什么呢?我认为它就是一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是其它数据类型。 uint8_t,uint16_t,uint32_t等都不是什么新的数据类型,它们只是使用typedef给类型起…

学点数学(4)-协方差矩阵

协方差矩阵协方差矩阵&#xff08;从随机变量讲起&#xff09;随机变量x&#xff1a;表示随机试验各种结果的 实值 单值函数&#xff0c;就是说随机变量x是一个函数映射&#xff0c;其取值为标量。随机变量有离散型和连续型&#xff0c;离散型&#xff1a;抛10次硬币&#xff…

RedLock

概念 Redis 官方站这篇文章提出了一种权威的基于 Redis 实现分布式锁的方式名叫 Redlock&#xff0c;此种方式比原先的单节点的方法更安全。它可以保证以下特性&#xff1a; 安全特性&#xff1a;互斥访问&#xff0c;即永远只有一个 client 能拿到锁避免死锁&#xff1a;最终…

GCC中常用的优化的参数

-pipe 的作用&#xff1a; 使用管道代替编译中临时文件&#xff0c; -pipe 加速编译 gcc -pipe foo.c -o foo 加速 在将源代码变成可执行文件的过程中,需要经过许多中间步骤,包含预处理、编译、汇编和连接。这些过程实际上是由不同的程序负责完成的。大多数情况下 GCC 可以为 …

Linux与时间相关的结构体及相关用法

1. Linux下与时间有关的结构体 struct timeval { int tv_sec; int tv_usec; }; 其中tv_sec是由凌晨开始算起的秒数&#xff0c;tv_usec则是微秒(10E-6 second)。 struct timezone { …

算法(3)-数据结构-数组和字符串

leetcode-explore-learn-数据结构-数据结构-数组和字符串1. 一维数组1.0 概况1.1 寻找数组的中心索引1.2 搜索插入位置1.3 合并区间1.4 至少是其他数字两倍大的最大数1.5 加一2. 二维数组2.1旋转矩阵本系列博文为leetcode-explore-learn子栏目学习笔记&#xff0c;如有不详之处…

redis的入门/原理/实战大总结

入门 Redis是一款基于键值对的NoSQL数据库&#xff0c;它的值支持多种数据结构&#xff1a; 字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。 • Redis将所有的数据都存放在内存中&#xff0c;所以它的读写性能十分惊人&#xff0c;用作数…