机器学习数据预处理——归一化(Normalization)和标准化(standardlization)

简介: 昨天进行一场答辩,被评委老师问起来归一化的概念,一时间紧张没有想起来,后来复盘回忆,感觉还是自己的理解不够深刻,才导致关键时刻掉链子,没有想起。所以特此整理一下,以供加深印象。
昨天进行一场答辩,被评委老师问起来归一化的概念,一时间紧张没有想起来,后来复盘回忆,感觉还是自己的理解不够深刻,才导致关键时刻掉链子,没有想起。所以特此整理一下,以供加深印象。

@[TOC]

概述

数据的归一化和标准化是特征缩放$(feature\ scaling)$的方法,是数据预处理的关键步骤。不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据归一化/标准化处理,以解决数据指标之间的可比性。原始数据经过数据归一化/标准化处理后,各指标处于同一数量级,适合进行综合对比评价。(这里提到的量纲可以理解为数和单位,概括一句话就是物理量的大小和单位有关,就比如1分钱和1毛钱,它俩的量纲单位不同,所以就是不同的量纲。)

归一化/标准化实质是一种线性变换,线性变换有很多良好的性质,这些性质决定了对数据改变后不会造成“失效”,反而能提高数据的表现,这些性质是归一化/标准化的前提。比如有一个很重要的性质:线性变换不会改变原始数据的数值排序。具体作用可总结如下:

归一化和标准化的英文翻译是一致的,但是根据其用途(或公式)的不同去理解(或翻译)。

(1)某些模型求解需要

  • 在使用梯度下降的方法求解最优化问题时, 归一化/标准化后可以加快梯度下降的求解速度,即提升模型的收敛速度。
  • 一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

(2)无量纲化

例如房子数量和收入,因为从业务层知道,这两者的重要性一样,所以把它们全部归一化。 这是从业务层面上作的处理。

(3)避免数值问题

太大的数会引发数值问题。

归一化和标准化的区别和作用:

归一化和标准化的本质都是缩放和平移,他们的区别直观的说就是归一化的缩放是 “拍扁” 统一到区间$(0-1)$,而标准化的缩放是更加 “弹性” 和 “动态” 的,和整体样本的分布有很大的关系。

常见的归一化方法(线性归一化):
线性归一化也被称为最小-最大规范化或者离散标准化,是对原始数据的线性变换,将数据值映射到$[0,1]$之间。用公式表示为:

$$ x^{'}=\frac{x-min(x)}{max(x)-min(x)} $$

在这里我们需要注意的是,通常,这个区间是$[0, 1]$,广义的讲,可以是各种区间,比如映射到$[0,1]$一样可以继续映射到其他范围,图像中可能会映射到$[0,255]$,其他情况可能映射到$[-1,1]$。

离散标准化保留了原来数据中存在的关系,是消除量纲和数据取值范围影响的最简单的方法。代码实现如下:

def MaxMinNormalization(x,Max,Min):
    x = (x - Min) / (Max - Min);
    return x

适用范围:比较适用在数值比较集中的情况

缺点:
(1)如果$max$和$min$不稳定,很容易使得归一化的结果不稳定,使得后续使用效果也不稳定。如果遇到超过目前属性$[min,max]$取值范围的时候,会引起系统报错。需要重新确定$min$和$max$。

(2)如果数值集中的某个数值很大,则规范化后各值接近于0,并且将会相差不大。如 $(1,1.2,1.3,1.4,1.5,1.6,10)$这组数据。

作用:

  • 数据映射到指定的范围内进行处理,更加便捷快速。
  • 把有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权。经过归一化后,将有量纲的数据集变成纯量,还可以达到简化计算的作用。

补充:
①有时候我们希望将输入转换到$[-1,1]$的范围,可以使用以下的公式:

$$ x^{'}=\frac{2*(X-X_{min})}{X_{max}-X_{min}} -1 $$

以上两种方式,都是针对原始数据做等比例的缩放。其中$X^{'}$代表归一化后的数据,$X$是原始数据大小,$X_{max}$和$X_{min}$是原始数据的最大值和最小值。

②归一化到任意区间的方法:

一般常见的数据归一化,是归一化到$[0,1]$,或者$[-1,1]$的区间,但在一些特殊场合下,我们需要根据实际情况归一化到其他任意区间。将数据归一化到$[a,b]$区间范围的方法:
(1)首先找到样本数据$Y$的最小值$Min$及最大值$Max$
(2)计算系数为:$k=\frac{(b-a)}{(Max-Min)}$
(3)得到归一化到$[a,b]$区间的数据:$Y^{Nor}=a+k(Y-Min)$
实质上,归一化的一般规范函数是:$y = \frac{(y^{max}-y^{min})*(x-x^{min})}{(x^{max}-x^{min})+y^{min}}$。

常见的标准化方法(Z-score标准化):

标准化是依照特征矩阵的列处理数据。数据标准化方法有多种,如:直线型方法(如极值法、标准差法)、折线型方法(如三折线法)、曲线型方法(如半正态性分布)。不同的标准化方法,对系统的评价结果会产生不同的影响。其中,最常用的是Z-Score 标准化。

Z-score标准化也被称为标准差标准化或者零-均值归一化,是将数据变换为均值为0,标准差为1的分布,变换后依然保留原数据分布。用公式表示为:

$$ x^{'}=\frac{x-μ}{\delta } $$

其中$μ$为原始数据的均值$(mean)$,$\delta$为原始数据的标准差$(std)$,是当前用的最多的标准化公式。

这种方法给予原始数据的均值$(mean)$和标准差$(standard\ deviation)$进行数据的标准化。经过处理的数据符合标准正态分布,即均值为$0$,标准差为$1$,这里的关键在于复合标准正态分布。

代码实现如下:

def Z_ScoreNormalization(x,mu,sigma):
    x = (x - mu) / sigma;
    return x

作用:

  • 提升模型的收敛速度(加快梯度下降的求解速度)
  • 提升模型的精度(消除量级和量纲的影响)
  • 简化计算(与归一化的简化原理相同)

从输出范围角度来看, 归一化的输出结果必须在 0-1 间。而标准化的输出范围不受限制,通常情况下比归一化更广。

它们的相同点在于都能取消由于量纲不同引起的误差;都是一种线性变换,都是对向量X按照比例压缩再进行平移。

标准化与归一化的应用场景:

一般情况下,如果对输出结果范围有要求,用归一化。如果数据较为稳定,不存在极端的最大最小值,用归一化。如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响。

在机器学习中,标准化是更常用的手段,归一化的应用场景是有限的。其原因就在于二者的区别:

1、标准化更好保持了样本间距。当样本中有异常点时,归一化有可能将正常的样本“挤”到一起去。比如三个样本,某个特征的值为1,2,10000,假设10000这个值是异常值,用归一化的方法后,正常的1,2就会被“挤”到一起去。如果不幸的是1和2的分类标签还是相反的,那么,当我们用梯度下降来做分类模型训练时,模型会需要更长的时间收敛,因为将样本分开需要更大的努力!而标准化在这方面就做得很好,至少它不会将样本“挤到一起”。

2、标准化更符合统计学假。对一个数值特征来说,很大可能它是服从正态分布的。标准化其实是基于这个隐含假设,只不过是略施小技,将这个正态分布调整为均值为0,方差为1的标准正态分布而已。

相关文章
|
1月前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型优化
在机器学习的实践中,构建一个高效的模型并非一蹴而就。本文将深入探讨如何通过精确的数据预处理、合理的特征选择、适当的模型构建以及细致的参数调优来提升模型的性能。我们将讨论数据清洗的重要性,探索特征工程的策略,分析不同算法的适用场景,并分享模型调参的实用技巧。目标是为读者提供一套系统的方法论,以指导他们在构建机器学习模型时能够更加高效和目标明确。
36 3
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
构建高效机器学习模型:从数据预处理到模型优化
【2月更文挑战第23天】 在机器学习领域,构建一个高效的模型并非易事。它涉及从数据预处理到特征工程,再到模型选择和调优的一系列复杂步骤。本文将引导读者通过实际案例理解这一过程,展示如何通过细致的数据清洗、智能的特征选择、合理的模型架构设计以及精确的超参数调整来提升模型性能。我们将探讨处理不平衡数据集的策略,采用交叉验证来减少过拟合风险,并使用网格搜索等技术找到最优超参数。文章还将分享一些实用的技巧和常见问题的解决方案,以帮助实践者在构建机器学习模型时避免常见的陷阱。
|
1月前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型调优
【2月更文挑战第23天】 在数据驱动的时代,构建一个高效的机器学习模型是解决复杂问题的关键。本文将深入探讨如何通过有效的数据预处理、特征工程、选择合适的算法以及细致的模型调优来提升模型的性能。我们将摒弃传统摘要的束缚,直接深入讨论各个环节对模型性能的影响,并分享实践中的经验教训。
|
1月前
|
机器学习/深度学习 数据采集 自然语言处理
构建高效机器学习模型:从数据预处理到模型优化
在机器学习的实践中,一个精确且高效的模型是成功解决问题的关键。本文将深入探讨如何从原始数据的收集与处理开始,通过选择合适的算法,再到模型的训练与优化,最终构建出一个高性能的机器学习模型。我们将讨论数据预处理的重要性、特征工程的策略、常用机器学习算法的选择标准以及超参数调整的最佳实践。通过案例分析和技术讲解,本文旨在为读者提供一个清晰的构建高效机器学习模型的蓝图。
|
1月前
|
机器学习/深度学习 数据采集 大数据
构建高效机器学习模型:从数据预处理到模型优化
【2月更文挑战第25天】 在当今数据驱动的时代,构建一个高效的机器学习模型对于解决实际问题至关重要。本文将详细介绍如何从数据预处理开始,逐步构建并优化一个机器学习模型。我们将讨论数据清洗、特征工程、模型选择、超参数调优等关键步骤,并通过实例演示如何应用这些技术。通过阅读本文,您将掌握构建高性能机器学习模型的方法和技巧。
|
20天前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型优化
【4月更文挑战第6天】本文聚焦于机器学习模型的开发流程,旨在提供一套系统的方法论以构建出更高效的模型。我们将深入探讨数据预处理的重要性,特征工程的策略,以及如何通过交叉验证和超参数调优来提升模型性能。文章不仅涉及理论分析,还包括了实际案例的代码实现,为读者呈现一个从数据处理到模型部署的完整蓝图。
14 0
|
21天前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型优化
【4月更文挑战第5天】 在机器学习领域,构建一个高效的模型并非易事。它涉及多个阶段,包括数据预处理、特征工程、模型选择、训练以及最终的评估和优化。本文深入探讨了如何通过精确的数据预处理技巧和细致的特征工程来提升模型性能,同时介绍了几种常见的模型优化策略。我们的目标是为读者提供一套实用的指导方案,帮助他们在面对复杂数据集时能够有效地构建和调整机器学习模型。
|
1月前
|
机器学习/深度学习 数据采集 算法
构建高效的机器学习模型:从数据预处理到模型优化
【2月更文挑战第30天】 在机器学习的实践中,构建一个高效且准确的预测模型是每个数据科学家的核心任务。本文将深入探讨如何通过一系列策略性步骤来提升模型的性能,包括数据预处理、特征选择、模型训练以及超参数调优。我们将讨论各种技术方法,并通过实例展示这些策略是如何在实际问题中应用的。目标是为读者提供一套实用的工具和思路,以应对机器学习项目中遇到的挑战。
|
1月前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型优化
【2月更文挑战第26天】 在当今数据驱动的时代,构建一个高效的机器学习模型对于解决复杂问题至关重要。本文将深入探讨机器学习模型的构建过程,包括数据预处理、特征选择、模型训练和优化等方面。通过实例分析和技巧分享,读者将学会如何提高模型的性能和泛化能力,从而更好地应对各种实际问题。
|
1月前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型调优
【2月更文挑战第24天】 在机器学习领域,构建一个高效的模型并非易事。它不仅要求算法的选择得当,更在于数据处理与模型优化的精细操作。本文将深入探讨机器学习模型构建的关键步骤,包括数据预处理的重要性、特征工程的策略、选择合适的学习算法、以及模型评估与调优的技巧。通过实例分析与经验分享,我们旨在为读者提供一个清晰、系统的构建高效机器学习模型的指南。
9 0