微信登录

数据预处理 - 特征缩放 - 标准化与归一化特征

数据预处理 - 特征缩放 - 标准化与归一化特征

一、引言

在数据分析和机器学习领域,数据预处理是一个至关重要的步骤。原始数据往往存在各种问题,例如不同特征的尺度差异较大。这种尺度差异可能会影响到某些机器学习算法的性能,比如基于距离度量的算法(如 K - 近邻算法、支持向量机等)。为了解决这个问题,特征缩放技术应运而生,其中标准化和归一化是两种常用的特征缩放方法。本文将详细介绍这两种方法,并通过 R 语言代码进行演示。

二、标准化(Standardization)

2.1 原理

标准化,也称为 Z - 分数标准化,是将特征值转换为均值为 0,标准差为 1 的标准正态分布。其计算公式如下:
[ z = \frac{x - \mu}{\sigma} ]
其中,(x) 是原始特征值,(\mu) 是特征的均值,(\sigma) 是特征的标准差。

2.2 优点

  • 不受特征取值范围的影响,能较好地保留数据的分布信息。
  • 对于许多机器学习算法,标准化后的数据可以加快算法的收敛速度。

2.3 R 语言代码演示

  1. # 生成示例数据
  2. set.seed(123)
  3. data <- data.frame(
  4. feature1 = rnorm(100, mean = 10, sd = 2),
  5. feature2 = rnorm(100, mean = 100, sd = 10)
  6. )
  7. # 查看原始数据的均值和标准差
  8. original_means <- sapply(data, mean)
  9. original_sds <- sapply(data, sd)
  10. cat("原始数据的均值:", original_means, "\n")
  11. cat("原始数据的标准差:", original_sds, "\n")
  12. # 进行标准化
  13. standardized_data <- scale(data)
  14. # 查看标准化后数据的均值和标准差
  15. standardized_means <- apply(standardized_data, 2, mean)
  16. standardized_sds <- apply(standardized_data, 2, sd)
  17. cat("标准化后数据的均值:", standardized_means, "\n")
  18. cat("标准化后数据的标准差:", standardized_sds, "\n")

三、归一化(Normalization)

3.1 原理

归一化,通常指的是最小 - 最大归一化,它将特征值缩放到 [0, 1] 的区间内。其计算公式如下:
[ x{norm} = \frac{x - x{min}}{x{max} - x{min}} ]
其中,(x) 是原始特征值,(x{min}) 是特征的最小值,(x{max}) 是特征的最大值。

3.2 优点

  • 可以将数据映射到一个固定的区间,适合那些对数据范围有要求的算法。
  • 简单直观,易于理解和实现。

3.3 R 语言代码演示

  1. # 定义归一化函数
  2. normalize <- function(x) {
  3. return ((x - min(x)) / (max(x) - min(x)))
  4. }
  5. # 对示例数据进行归一化
  6. normalized_data <- as.data.frame(lapply(data, normalize))
  7. # 查看归一化后数据的最小值和最大值
  8. normalized_mins <- sapply(normalized_data, min)
  9. normalized_maxs <- sapply(normalized_data, max)
  10. cat("归一化后数据的最小值:", normalized_mins, "\n")
  11. cat("归一化后数据的最大值:", normalized_maxs, "\n")

四、标准化与归一化的选择

方法 适用场景 缺点
标准化 数据存在异常值,算法对数据的分布有要求(如线性回归、逻辑回归等),基于距离度量的算法 不能保证数据在特定区间内
归一化 数据不存在异常值,算法对数据范围有要求(如神经网络) 对异常值敏感,可能会压缩正常数据的范围

五、总结

标准化和归一化是两种重要的特征缩放方法,它们在不同的场景下有各自的优势。在实际应用中,我们需要根据数据的特点和算法的要求来选择合适的特征缩放方法。通过本文的介绍和 R 语言代码演示,相信读者对这两种方法有了更深入的理解,可以在实际项目中灵活运用。