绪论
一、本文首先基于线性回归(Linear Regression)回答下列三个问题:
1 特征缩放的想法(idea)
2 特征缩放的好处以及适用情况
3 使用特征缩放、不使用特征缩放求出参数(theta)之间的对应关系,以及如何从代数变化、python编程角度说明如何将前者求解出的参数转化成后者求解出参数。
二、进而基于除线性回归的其他机器学习算法,回答下列三个问题:
1.为什么要进行特征缩放
2.哪些机器学习模型必须进行特征缩放
3.特征缩放的注意事项。
特征缩放(Feature Scaling)
三、最后给出特征缩放的5种方法:
1.最大最小值归一化(min-max normalization)
2.均值归一化(mean normalization)
3.标准化/z值归一化(standardization/z-score normalization)
4.最大绝对值归一化(max abs normalization)
5.稳健标准化(robust standardization)
一、
1. 特征缩放的想法:让每一种特征都处于一个相类似的范围,一般大约在[-1, 1]区间范围内。
为什么有“大约”,因为下列情况都是可取的:
x
0
=
1
(
显
然
可
取
)
x_0 = 1 (显然可取)
x0=1(显然可取)
0
≤
x
1
≤
3
0≤x_1≤3
0≤x1≤3(可取,和[-1,1]范围较接近)
−
2
≤
x
2
≤
0.5
-2≤x_2≤0.5
−2≤x2≤0.5 (可取,和[-1,1]范围较接近)
−
100
≤
x
3
≤
100
-100≤x_3≤100
−100≤x3≤100 (不可取,比[-1,1]范围大得多)
−
0.0001
≤
x
4
≤
0.0001
-0.0001≤x_4≤0.0001
−0.0001≤x4≤0.0001 (不可取,比[-1,1]范围小得多)
−
3
≤
x
5
≤
3
-3≤x_5≤3
−3≤x5≤3 (可取,和[-1,1]范围较接近)
−
1
/
3
≤
x
6
≤
1
/
3
-1/3≤x_6≤1/3
−1/3≤x6≤1/3 (可取,和[-1,1]范围较接近)
2.特征缩放适用情况以及好处
正规方程法(Normal Equation)的方法不需要进行特征缩放。
梯度下降法(Gradient Descent)的方法在不同特征的所处范围相差很大时,需要进行特征缩放。特征缩放可以减小梯度下降的迭代次数。如下图所示,左边的图对应不同特征的范围相差很大却为进行特征缩放,此时函数的等值线图是一个个扁形的椭圆组合而成;右边的图对应进行特征缩放后的等值线图,图是一个个圆组合而成的。如图所示,后者收敛到局部最优解的迭代次数比前者的更少。
**3.**使用特征缩放、不使用特征缩放求出参数(theta)之间的对应关系,以及如何从代数变化、python编程角度说明如何将前者求解出的参数转化成后者求解出参数。
首先,解释使用特征缩放、不使用特征缩放求出参数(theta)之间的对应关系。
进而展示python实现如何将前者求解出的参数转化成后者求解出参数。
def theta_transform(theta, means, stds):
temp = theta[1:] * means[0:-1] / stds[0:-1]
theta[0] = (theta[0] - np.sum(temp)) * stds[-1] + means[-1]
theta[1:] = theta[1:] * stds[-1] / stds[0:-1]
return theta
theta = theta_transform(theta1, means, stds)
二、
1.为什么要进行特征缩放
因为要统一特征权重&提升模型准确性。
如果某个特征的取值范围比其他特征大很多,那么数值计算(比如说计算欧式距离)就受到该特征主要支配。但实际上并不一定是这个特征最重要,通常需要把每个特征看成同等重要。归一化(normalization)/标准化(standardization)数据可以使不同维度的特征放在一起进行比较,可以大大提高模型准确性。
2.哪些机器学习模型必须进行特征缩放
通过梯度下降法求解的模型需要进行特征缩放。这包括线性回归、逻辑回归(logistic regression )、感知机(Perception)、支持向量机(SVM)、神经网络(Neural Network)。
此外,近邻法(KNN),K均值聚类(K-Means)等需要根据数据间的距离来划分数据的算法也需要特征缩放。主成分分析(PCA)、线性判别分析(LDA)等需要计算特征的方差的算法会受特征缩放的影响。
决策树(Decision Tree),随机森林(Random Forest)等基于树的模型不需要进行特征缩放,因为特征缩放不会改变样本在特征上的信息增益。
3.特征缩放的注意事项。
先把数据拆分成训练集和验证集,在训练集上计算出需要的数值(如均值和标准值),对训练集数据做标准化/归一化处理(不要在整个数据集上做标准化/归一化处理,因为这样会将验证集的信息带入到训练集中,这是一个非常容易犯的错误),然后再用之前计算出的数据(如均值和标准值)对验证集数据做相同标准化/归一化处理。
三、特征缩放的几种方法:
(1)最大最小值归一化(min-max normalization):将数值范围放到[0,1]区间里
(2)均值归一化(mean normalization):将数值范围缩放到[-1,1]区间里,且数据的均值变为0。
(3)标准化/z值归一化(standardization/z-score normalization):将数值缩放到0附近,且数据的分布变为均值为0,标准差为1的标准正态分布(先减去均值来对特征进行 中心化 mean centering处理,在处理标准差进行缩放)
(4)最大绝对值归一化(max abs normalization):也就是将数值变为单位长度(scaling to unit length),将数值范围缩放到[-1,1]区间里。
(5)稳健标准化(robust standardization):先减去中位数,再除以四分位间距(interquartile range),因为不涉及极值,因此在数据里有异常值的情况下表现比较稳健。
最后
关于“归一化和标准化的区别”、“选用哪种方法进行特征缩放”,请见https://www.cnblogs.com/HuZihu/p/9761161.html
参考:
[1]https://www.zhihu.com/question/275019388/answer/1063963309 知乎回答(清波 回答)
[2]https://www.cnblogs.com/HuZihu/p/9761161.html