数据挖掘算法 数据预处理之数据缩放(映射)

数据映射简介

无论是 归一化 标准化 本质上都是将数据进行映射到一个区间范围

数据挖掘算法 数据预处理之数据缩放(映射)_第1张图片

目的:

1) 提升模型的收敛速度
如下图,x1的取值为0-2000,而x2的取值为1-5,假如只有这两个特征,对其进行优化时,会得到一个窄长的椭圆形,导致在梯度下降时,梯度的方向为垂直等高线的方向而走之字形路线,这样会使迭代很慢,相比之下,右图的迭代就会很快(理解:也就是步长走多走少方向总是对的,不会走偏)

2)提升模型的精度
归一化的另一好处是提高精度,这在涉及到一些距离计算的算法时效果显著,比如算法要计算欧氏距离,上图中x2的取值范围比较小,涉及到距离计算时其对结果的影响远比x1带来的小,所以这就会造成精度的损失。

1 数据归一化

常用方法
数据挖掘算法 数据预处理之数据缩放(映射)_第2张图片

非线性归一化

本归一化方法经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射
该方法包括 log,正切等,需要根据数据分布的情况,决定非线性函数的曲线
数据挖掘算法 数据预处理之数据缩放(映射)_第3张图片

使用scikit-learn函数

min_max_scaler = preprocessing.MinMaxScaler()
feature_scaled = min_max_scaler.fit_transform(feature)

使用numpy自定义函数

def min_max_norm(x):
x = np.array(x)
x_norm = (x-np.min(x))/(np.max(x)-np.min(x))
return x_norm

2 数据标准化

数据挖掘算法 数据预处理之数据缩放(映射)_第4张图片

使用scikit-learn函数

standar_scaler = preprocessing.StandardScaler()
feature_scaled = standar_scaler.fit_transform(feature)

使用numpy自定义函数

def min_max_norm(x):
x = np.array(x)
x_norm = (x-np.mean(x))/np.std(x)
return x_norm

3 二者关系和应用场景

数据挖掘算法 数据预处理之数据缩放(映射)_第5张图片

1、在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,第二种方法(Z-score standardization)表现更好。

2、在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用第一种方法或其他归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围。归一化方法比较适用在数值比较集中的情况

所有维度的变量一视同仁,在最后计算距离中发挥相同的作用应该选择标准化,如果想保留原始数据中由标准差所反映的潜在权重关系应该选择归一化。另外,标准化更适合现代嘈杂大数据场景

参考文献
https://blog.csdn.net/zbc1090549839/article/details/44103801
https://blog.csdn.net/pipisorry/article/details/52247379
https://blog.csdn.net/pipisorry/article/details/52247679
https://www.jianshu.com/p/95a8f035c86c

你可能感兴趣的:(数据挖掘算法专栏)