机器学习中的数据预处理
不同的特征通常具有不同的量纲,数值间的差别可能很大,如果不进行归一化处理,则可能会影响到数据分析的结果。如果直接用原始指标特征值进行分析,就会突出数值较大的指标在综合分析中的作用,相对削弱数值较小指标的作用,影响模型的预测精度。为了消除特征数据之间的量纲和取值范围差异的影响,需要对特征进行数据归一化(标准化)处理。特征数据归一化的目标就在于使具有不同量纲的特征转换为无量纲的标量,并且将所有的特征都统一到一个大致相同的数值区间内,让不同维度上的特征在数值上具有可比性。原始数据经过数据归一化(标准化)处理后,各个特征数据处于同一数量级,适合进行综合对比评价。
在实际应用中,通过梯度下降法求解的模型(包括线性回归、逻辑斯谛回归、支持向量机、神经网络等模型)通常需要数据归一化,因为经过归一化后,梯度在不同特征上更新速度趋于一致,可以加快模型收敛速度。不是所有的机器学习模型都需要对数据进行归一化。决策树模型并不需要对数据进行归一化,以C4.5算法为例,决策树在节点分裂时主要依据数据集D关于特征的信息增益比,而信息增益比与特征是否经过归一化是无关的。
常用的归一化方法如下。
- 线性归一化
线性归一化也称最小-最大归一化(Min-Max Normalization或Min-Max Scaling),它对原始数据进行线性变换,使结果映射到[0,1]区间,实现对原始数据的等比缩放,归一化公式为
x norm = x − x min x max − x min x_{\text{norm}} = \frac{x - x_{\min}}{x_{\max} - x_{\min}} xnorm=xmax−xminx−xmin
式中, x x x为原始数据; x max x_{\max} xmax为原始数据的最大值; x min x_{\min} xmin为原始数据的最小值; x norm x_{\text{norm}} xnorm为归一化后的值。
最小-最大归一化通过利用变量取值的最大值和最小值将原始数据转换为界于某一特定范围的数据,从而消除量纲和数量级影响,改变变量在分析中的权重来解决不同度量的问题。由于极值化方法在对变量无量纲化过程中仅与该变量的最大值和最小值这两个极端值有关,而与其他取值无关,这使得该方法在改变各变量权重时过分依赖两个极端取值。
- 数据标准化
数据标准化将原始数据映射到均值为0、标准差为1的分布上(高斯分布/正态分布)。假设原始特征的均值为 μ \mu μ、标准差为 σ \sigma σ,那么数据标准化公式为
z = x − μ σ z = \frac{x - \mu}{\sigma} z=σx−μ
即每一变量值与其平均值之差除以该变量的标准差。虽然该方法在无量纲化过程中利用了所有的数据信息,但是该方法在无量纲化后不仅使得转换后的各变量均值相同,且标准差也相同,即无量纲化的同时还消除了各变量在变异程度上的差异,从而转换后的各变量在聚类分析中的重要性程度是同等看待的。
在分类、聚类算法中,需要使用距离来度量相似性的时候,或者使用PCA技术进行降维的时候,数据标准化方法表现更好。在不涉及距离度量、协方差计算,以及数据不符合正态分布的时候,可以使用线性归一化方法或其他归一化方法。例如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0,255]的范围内。