标准化、归一化

一、标准化与归一化

数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。
在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。
其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上。

二、标准化方法及适用场景

最常见的有这两种:

1. Min-max 标准化

比如把最大值归一化成1,最小值归一化成-1;或把最大值归一化成1,最小值归一化成0。
适用于本来就分布在有限范围内的数据。

x=xminmaxmin x ∗ = x − m i n m a x − m i n

2. Z-score 标准化

一般是把均值归一化成0,方差归一化成1。
适用于分布没有明显边界的情况,受outlier影响也较小。

x=xμσ x ∗ = x − μ σ

1、在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,第二种方法(Z-score standardization)表现更好。
2、在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用第一种方法或其他归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围。

3. 其他

参考文献
http://xiaoxiaoyue.me/2018/03/23/%E3%80%90%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98%E3%80%91%E6%A0%87%E5%87%86%E5%8C%96%E6%88%96%E5%BD%92%E4%B8%80%E5%8C%96/
这里写图片描述

4. logistic函数和softmax函数

二分类和多分类的概率输出值。同样是映射到(0,1)可以看作归一化

三、为什么一些机器学习模型需要对数据进行归一化?

参考文献:http://www.cnblogs.com/LBSer/p/4440590.html

1归一化后加快了梯度下降求最优解的速度

如下图所示,蓝色的圈圈图代表的是两个特征的等高线。其中左图两个特征X1和X2的区间相差非常大,X1区间是[0,2000],X2区间是[1,5],其所形成的等高线非常尖。当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛;

而右图对两个原始特征进行了归一化,其对应的等高线显得很圆,在梯度下降进行求解时能较快的收敛。

因此如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。

这里写图片描述

2 归一化有可能提高精度

一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

四、哪些机器学习模型需要归一化

概率模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率。像svm、线性回归之类的最优化问题就需要归一化。树模型属于概率模型。

### 数据标准化归一化在ArcGIS中的实现 #### 使用栅格计算器进行归一化处理 对于需要将原始影像的像素值转换到特定区间的情况,在ArcGIS中可以利用栅格计算器(Raster Calculator)。具体来说,如果目标是将像素值范围从-3000至7000转变为0到1之间的数值,则可以通过下面的公式来完成这一过程: \[ \text{Normalized Value} = \frac{\text{Original Pixel Value} - \min(\text{Pixel Values})}{\max(\text{Pixel Values})-\min(\text{Pixel Values})} \] 其中最大最小值可以根据实际数据集确定。此方法允许手动控制输入参数并精确调整输出结果[^3]。 #### 利用隶属模糊度工具执行线性变换 另一种方式是采用ArcToolbox里的“隶属模糊度”功能来进行线性的归一化操作。当选择了合适的图像之后,设定分类值函数为线性模式,“隶属模糊度”将会依据选定层内的极值自动生成映射关系,从而简化了工作流程[^1]。 #### Python脚本配合Scikit-Learn库实施批量处理 除了上述两种图形界面下的解决方案外,还可以借助Python编程环境以及像scikit-learn这样的机器学习库来达成同样的目的。例如通过`StandardScaler()`类可方便地对多维数组形式的数据施行零均值单位方差缩放;而为了适应地理信息系统的需求,还需进一步结合arcpy模块读写GeoTIFF文件等空间数据格式[^2]。 ```python from sklearn.preprocessing import MinMaxScaler, StandardScaler import arcpy import numpy as np # 假设已加载影像数据到变量raster_data中 array_data = arcpy.RasterToNumPyArray(raster_data) # 创建MinMaxScaler实例用于归一化 mm_scaler = MinMaxScaler(feature_range=(0, 1)) normalized_array = mm_scaler.fit_transform(array_data.reshape(-1, 1)).reshape(array_data.shape) # 或者创建StandardScaler实例用于标准化 std_scaler = StandardScaler() standardized_array = std_scaler.fit_transform(array_data.reshape(-1, 1)).reshape(array_data.shape) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值