为什么要对特征进行缩放(归一化)

在Andrew Ng的机器学习课程里面,讲到使用梯度下降的时候应当进行特征缩放(Feature Scaling)。进行缩放后,多维特征将具有相近的尺度,这将帮助梯度下降算法更快地收敛。 为了解释为什么特征缩放会帮助梯度下降算法更快地收敛,Andrew给了两幅图来解释:

Feature Scaling

Idea: Make sure features are on a similar scale.
E.g.

归一化前,代价函数关于参数??和??的关系等高线图可能如下图:

而如果进行了,归一化,那么其等高线图可能就变成了下图:

而如果进行了,归一化,那么其等高线图可能就变成了下图:

关于等高线图的变化,Andrew并没有细说原因,只是直接这么说了。一种常见的误解是:

原来的尺度不一样,所以等高线图是狭长的,而归一化以后,大家尺度(甚至取值范围)一样了,等高线图被压扁了,所以就是一个圆形了呗。

但是问题在于,等高线图的变量(即轴)是,而不是做的缩放,导致关于的等高线图产生的变化根本不是直观上的那么一目了然。

本文的目标就在于把这个问题解释清楚:的缩放是怎么把以,为变量的等高线图变得更加圆,从而使得梯度下降效率变高的。

首先我们把问题定义一下,我们是要预测房价,目前有两个特征:
: 面积,以平方英尺计,取值范围在0 ~ 2,000
: 卧室数,取值范围在0 ~ 5

假设,房价是关于这两个特征的线性关系:

那么,在进行梯度下降的时候,目标最小化的代价函数(Cost Function)则为:

在缩放(scaling)前,由于的尺度比较大(0 ~ 2,000),而的尺度小(0 ~ 5),因此同等大小的变化,对的影响差距巨大,即影响要比大很多。进而,会造成更加敏感(即的单位变化比的单位变化对的影响更大)。因此在等高线图上,在方向上更扁平,即较小的变化会造成取值的剧烈变化,而在方向上更加狭长,即较大的变化才会造成取值的较大变化。

那么缩放(scaling)以后,的尺度是一致的,故同等大小的变化,对的影响不再含有特征尺度上的因素,这也同样反映在上。那么在等高线图上的表现就是,在方向上等高线图会拉长,即相较于缩放前变得"迟钝"了。

如果我们只观察,那么二者的关系在进行特征缩放前后的图形可能如下:

关于更加缓和,且在上被拉长了(缩放后,参数的最优解跟缩放前几乎不会是同一个值,因此上图中的最小值点对应的值并不相同)。

因此,Andrew的缩放前后的图形,并不是在(纵轴)方向上被压扁了,而是在(横轴)方向上被拉长了!

而从梯度下降迭代上看,每次迭代使用的公式为:

注意到,每次迭代的时候,的更新幅度是和相关的,因此如果某个的尺度相较其他维度特征大很多的话,势必造成该维度对应的参数的更新非常剧烈,而其他维度特征对应的参数更新相对缓和,这样即造成迭代过程中很多轮次实际上是为了消除特征尺度上的不一致。

另一个角度,实际上就是当前的梯度方向,它和是相关的,因为对于而言,是它的参数。所以,当我们迭代更新的时候,梯度下降的方向会因特征的尺度产生剧烈变化,即在尺度大(导致梯度大)的方向上持续迭代。而这种变化显然不是迭代的目的,它仅仅是为了消除尺度差距上的悬殊。

故,因为的梯度是跟特征取值相关的,而梯度下降迭代就是不断在梯度方向上寻找最优点。所以如果特征在尺度上差距显著,那么迭代中就会有一些(甚至大量)轮次主要在抹平尺度上的差异。在理论上,如果迭代轮次足够多,仍然能够得到最优解,但在实际中往往会限定一个迭代轮次上限,可能会出现找到的解并不是最优解。

因为要抹平尺度上的差异,迭代到最优解的轮次势必增加,即表现为常说的"收敛速度慢"。

原文地址:https://www.cnblogs.com/bind/p/11956095.html

时间: 2024-10-09 14:46:14

为什么要对特征进行缩放(归一化)的相关文章

特征工程2:归一化与标准化

归一化与标准化属于特征预处理的范畴 · 特征预处理是什么? 通过特定的数学统计方法将数据转化为算法要求的数据: 特征预处理在scikit-learn中的模块是:sklearn.preprocessing 对于不同的数据类型,有不同的处理方式,三种常见的数据类型: 数值型 类别型 时间类型 · 这里我们先看数值型的预处理: 标准缩放:有两种常见方式,归一化和标准化. 在特征较多时,并且认为这些特征同等重要,或者算法模型涉及到距离计算时(比如K近邻),为了防止某些特征的值对算法产生的影响过大,需要将

特征缩放 | 归一化和标准化(上)

什么是特征缩放: 就是将所有数据映射到同一尺度.如: 某训练集 x_train 为: (x_trian) 将其进行某种特征缩放之后,得到新的值: 显然经过特征缩放之后,特征值变小了 为什么要进行特征缩放呢? 有些特征的值是有区间界限的,如年龄,体重.而有些特征的值是可以无限制增加,如计数值. 所以特征与特征之间数值的差距会对模型产生不良影响.如: 在该样本集中,由于量纲不同,模型受 '次数'特征所主导.因此如果没有对数据进行预处理的话 有可能带来偏差,难以较好的反应特征之间的重要程度.其实还有利

为什么要做特征归一化/标准化?

目录 写在前面 常用feature scaling方法 计算方式上对比分析 feature scaling 需要还是不需要 什么时候需要feature scaling? 什么时候不需要Feature Scaling? 小结 参考 博客:blog.shinelee.me | 博客园 | CSDN 写在前面 Feature scaling,常见的提法有"特征归一化"."标准化",是数据预处理中的重要技术,有时甚至决定了算法能不能work以及work得好不好.谈到feat

特征处理

特征工程 一.特征处理 1. 正负样本不均衡问题 a)       Oversampleing b)       修改损失函数 c)       取n份正样本 与 负样本 分别构建分类器,然后vote 2. 数值特征处理 a) 归一化 b) Log变换 c) 统计max min mean std d) 离散化 e) HASH分桶 f) 每个类别下对应的变量统计值histogram(分布状况) 3. 分类型特征处理 a) one-hot编码 b) 哑变量 c) Hash与聚类处理(根据先验的背景,

关于特征工程的一些学习、思考与错误的纠正

特征工程的整体思路: 1. 对于特征的理解.评估 2. 特征处理: 2.1 特征处理 2.1.1 特征清洗 清洗异常.采样 2.1.2 预处理 单特征情况:归一化.离散化.哑变量编码.缺失值填充等.数据变换例如log服从正态分布. 多特征情况: 降维:PCA.LDA(这个不太了解.待学习) 特征选择:三种大方法,Filter--x与y之间的关联,Wrapper--目标函数检验(MSE),Embedded--机器学习方法,正则化.决策树.深度学习. 3. 特征监控 有效性分析和监控. Python

03_数据的特征预处理

03 数据特征预处理 特征的预处理 特征的预处理 定义:通过特定的统计方法(数学方法),将数据转换成算法要求的数据. 数值型数据:标准缩放 归一化 标准化 类别性数据: one-hot编码 时间类型: 时间的切分 归一化 定义: 通过对原始数据的变化把数据映射到 [0,1] 之间 优点:多个特征时,某一个特征对最终结果不会造成更大的影响 (同一个维度) 缺点:容易受到极大值和极小值的影响 标准化 定义: 将原始数据变换为均值为0, 标准差为1的范围内 如果出现异常点,由于具有一定的数据量,少量的

MATLAB 图像归一化

matlab图像处理为什么要归一化和如何归一化一.为什么归一化1.   基本上归一化思想是利用图像的不变矩寻找一组参数使其能够消除其他变换函数对图像变换的影响.也就是转换成唯一的标准形式以抵抗仿射变换 图像归一化使得图像可以抵抗几何变换的攻击,它能够找出图像中的那些不变量,从而得知这些图像原本就是一样的或者一个系列的. 因为我们这次的图片有好多都是一个系列的,所以老师把这个也作为我研究的一个方向. 我们主要要通过归一化减小医学图片由于光线不均匀造成的干扰.2.matlab里图像数据有时候必须是浮

归一化的优点和方法

作者:zhanlijun 针对这个问题参考了wiki的解释: http://en.wikipedia.org/wiki/Feature_scaling.归一化后有两个好处:1)归一化后加快了梯度下降求最优解的速度:2)归一化有可能提高精度”. 1 归一化为什么能提高梯度下降法求解最优解的速度? 斯坦福机器学习视频做了很好的解释: https://class.coursera.org/ml-003/lecture/21 如下图所示,蓝色的圈圈图代表的是两个特征的等高线.其中左图两个特征X1和X2的

机器学习中的数据清洗与特征处理综述

背景 随着美团交易规模的逐步增大,积累下来的业务数据和交易数据越来越多,这些数据是美团做为一个团购平台最宝贵的财富.通过对这些数据的分析和挖掘,不仅能给美团业务发展方向提供决策支持,也为业务的迭代指明了方向.目前在美团的团购系统中大量地应用到了机器学习和数据挖掘技术,例如个性化推荐.筛选排序.搜索排序.用户建模等等,为公司创造了巨大的价值.本文主要介绍在美团的推荐与个性化团队实践中的数据清洗与特征挖掘方法.主要内容已经在内部公开课"机器学习InAction系列"讲过,本博客的内容主要是