← 返回目录
Chapter 04Data Transformation

数据转换

以便提高算法的效果和效率

🔄 中心化/标准化📊 Box-Cox转换📈 ECDF转换🔗 插值方法

"没有数据,就得出结论,这是大错特错。"

— 阿瑟·柯南·道尔 (Arthur Conan Doyle),英国小说作家、医生,1859-1930

4.1

数据转换

为机器学习算法准备更适合的数据

数据转换(Data Transformation)是数据预处理的重要一环,用来转换要分析的数据集,使其更方便后续建模,比如回归分析、分类、聚类、降维。注意,数据预处理时,一般先处理缺失值、离群值,然后再数据转换。

📊 常见数据转换方法

基于统计

• 中心化(去均值)
• 标准化(Z-score)
• 归一化(Min-Max)
• 广义幂转换(Box-Cox)
• ECDF转换

插值方法

• 常数插值(前/后/邻近)
• 线性插值
• 三次样条插值
• 拉格朗日插值
• 二维插值

其他方法

• KDE核密度估计
• 回归分析
• 主成分分析(PCA)
• 时间序列分析
• Copula连接函数
✦
4.2

中心化:去均值

将数据质心移动到原点

数据中心化(Centralize, Demean),也叫去均值,是基于统计最基本的数据转换。对于一个给定特征,去均值数据(Demeaned Data, Centered Data)的定义为:

Y = X - mean(X)

其中,mean(X) 计算期望值或均值。一般情况,多特征数据每一列数据代表一个特征。多特征数据的中心化,相当于每一列数据分别去均值。对于均值几乎为0的数据,去均值处理效果肯定不明显。

📊 原始数据的四种可视化方案

本节用四种可视化方案展示数据,它们分别是热图、KDE分布、小提琴图和平行坐标图。下面的交互组件可以切换查看这些可视化方式。

📈平行坐标图(Parallel Coordinate Plot)

一个正交坐标系可以用来展示二维或三维数据,但是对于高维多元数据,正交坐标系则显得无力。而平行坐标图,可以用来可视化多特征数据。

平行坐标图采用多条平行且等间距的轴,以折线形式呈现数据。交互组件中还用不同颜色折线代表分类标签(Setosa、Versicolor、Virginica)。

花萼长度
μ₁ = 5.843
σ₁ = 0.825
花萼宽度
μ₂ = 3.057
σ₂ = 0.434
花瓣长度
μ₃ = 3.758
σ₃ = 1.759
花瓣宽度
μ₄ = 1.199
σ₄ = 0.759

💡中心化的效果

• 质心移动:《矩阵力量》介绍过,对于多特征数据,去均值相当于将数据质心移动到原点0
• 离散度不变:去均值对数据各个特征的离散度没有任何影响
• 标准差不变:中心化前后,每个特征的标准差σ保持不变
• 应用场景:主成分分析(PCA)前的预处理步骤
✦
4.3

标准化:Z分数

将数据缩放到均值0、标准差1

标准化(Standardization)对原始数据先去均值,然后再除以标准差:

Z = (X - mean(X)) / std(X)

处理得到的数值实际上是原始数据的Z分数,表达若干倍的标准差偏移。比如,某个数值处理后结果为3,这代表数据距离均值3倍标准差偏移。

📊 Z分数的深层含义

正负号的意义

Z > 0数据点在均值右侧(大于均值)
Z = 0数据点恰好等于均值
Z < 0数据点在均值左侧(小于均值)

绝对值的意义

|Z| < 1偏离均值不到1个标准差
|Z| ≈ 2偏离均值约2个标准差
|Z| > 3极端值,可能是离群点

⚖️ 标准化 vs 归一化:术语辨析

注意:很多文献混用 standardization 和 normalization,大家注意区分。在机器学习中,standardization 和 normalization 通常分别翻译为标准化和归一化。这两种预处理方法的主要区别在于对数据的缩放方式不同。

标准化(Standardization)

• 缩放到均值为0,标准差为1
• 消除量纲影响,不同特征尺度统一
• 避免某些特征对模型影响过大
• 提高模型的鲁棒性和稳定性

归一化(Normalization)

• 缩放到[0,1]或[-1,1]区间
• 通过线性变换(MinMaxScaler)实现
• 使得不同特征的权重相同
• 提高模型的准确性和泛化能力

🔗标准化与主成分分析(PCA)

• 《统计至简》一册讲过,主成分分析(Principal Component Analysis, PCA)之前,一般会先对数据进行标准化
• 关键原因:经过标准化后的数据,再求协方差矩阵,得到的实际上是原始数据的相关性系数矩阵
• 这样可以消除不同特征量纲的影响,使PCA结果更合理
✦
4.4

归一化:取值在0和1之间

将数据映射到[0,1]区间

归一化(Normalization)常指数据首先减去其最小值,然后再除以range(X),即max(X) - min(X):

Y = (X - min(X)) / (max(X) - min(X))

通过上式归一化得到的数据取值范围在 [0, 1] 之间。

🔄 其他数据转换方式

1. 去均值再除以range

x' = (x - mean(X)) / (max(X) - min(X))
特点:这种数据处理的特点是,处理得到的数据取值范围约在 [-0.5, 0.5] 之间。

2. 基于四分位间距(IQR)的转换

x' = (x - mean(X)) / IQR(X)
定义:使用箱型图的四分位间距(Interquartile Range)作为分母,来缩放数据
IQR:IQR = Q₃ - Q₁
优势:相比标准差,IQR对离群值更稳健
✦
2-4

三种方法综合对比

交互式可视化对比中心化、标准化、归一化

📐 数学定义

中心化(去均值)

Y = X - mean(X)
✓ 将数据质心移到原点
✓ 不改变数据分散度
✗ 不改变数据范围

标准化(Z-score)

Z = (X - μ) / σ
✓ 均值0,标准差1
✓ 消除量纲影响
✓ 适合PCA、聚类

归一化(Min-Max)

Y = (X - min) / (max - min)
✓ 映射到[0, 1]区间
✓ 保持原始分布形状
✓ 适合神经网络

🎯何时使用中心化?

• 主成分分析(PCA)预处理
• 协方差矩阵计算
• 需要保持数据分散度

🎯何时使用标准化?

• 不同尺度特征对比
• 距离度量算法(KNN、SVM)
• 梯度下降优化

🎯何时使用归一化?

• 神经网络输入
• 图像处理(像素值)
• 需要[0,1]范围的场景
✦
4.5

广义幂转换

Box-Cox:将偏斜分布转为正态分布

Box-Cox转换是一种用于对非正态分布数据进行转换的方法。通过一系列参数λ的取值,将数据的概率密度函数进行幂函数变换,使得变换后的数据更加接近正态分布。

📐 Box-Cox转换公式

通用公式

x(λ) = (x^λ - 1) / λ, λ ≠ 0
x(λ) = ln(x), λ = 0
要求:x必须为正数(x > 0)

特殊λ值

λ = -1倒数转换
λ = 0对数转换
λ = 0.5平方根转换

Box-Cox

✓理论基础扎实
✓最大似然估计λ
✗要求数据必须为正

Yeo-Johnson

✓可处理负值和零
✓Box-Cox的扩展
•sklearn支持两种方法
✦
4.6

经验累积分布函数

ECDF:非参数的数据转换方法

经验累积分布函数(Empirical Cumulative Distribution Function, ECDF)是一种非参数的数据转换方法。ECDF的特点是简单易懂,不需要对数据进行任何假设或参数估计,适用于任何类型的数据分布。

🔄 ECDF转换流程

步骤1

排序数据

将n个数据从小到大排列
步骤2

计算累积概率

ECDF(x_i) = i / n
步骤3

映射到[0,1]

每个数据点对应一个分位数

✓ECDF的优势

  • •非参数方法,无需假设分布
  • •单调递增,保持数据顺序
  • •映射到[0,1],易于解释
  • •sklearn: QuantileTransformer

🔗与Copula理论的联系

ECDF转换是连接函数(Copula)理论的基础:
• u = ECDF(x) 映射到均匀分布
• Copula描述多变量依赖结构
• 高斯Copula最常用
✦
4.7

插值

根据已知点推断未知点的值

插值(Interpolation)根据有限的数据点,推断其他点处的近似值。已知点数据范围内的插值叫做内插,已知点数据外的插值叫做外插(Extrapolation)。

🔍 插值 vs 拟合(回归)

插值(Interpolation)

• 分段函数,通过所有已知点
• n个点构成n-1个区间
• 精确匹配已知数据
• 用于数据填补、平滑

拟合(Regression)

• 单一函数,尽可能靠近已知点
• 一个全局解析式
• 允许误差,求最佳拟合
• 用于趋势分析、预测

📊 插值方法对比

方法函数类型连续性适用场景
向前/向后常数(阶梯状)不连续时间序列填补缺失值
最邻近常数(阶梯在中点)不连续图像缩放(最近邻)
线性一次多项式(线段)连续快速简单估算
三次样条三次多项式(平滑)C²连续曲线拟合、动画
✦

🎯本章核心要点

📚理论知识

  • •中心化/标准化/归一化的数学定义和区别
  • •Box-Cox转换:x(λ) = (x^λ - 1) / λ
  • •ECDF:非参数累积分布函数
  • •插值vs拟合:精确通过vs最佳逼近

🛠️实用技能

  • •根据算法需求选择合适的数据转换方法
  • •使用sklearn的Scaler和Transformer类
  • •理解不同插值方法的trade-off
  • •可视化对比转换前后的数据分布

🗺️ 数据转换决策树

1. 需要消除量纲影响? → 标准化或归一化
2. 需要正态分布? → Box-Cox或Yeo-Johnson
3. 需要[0,1]范围? → 归一化或ECDF
4. 需要填补缺失值? → 常数插值(前/后)或线性插值
5. 需要平滑曲线? → 三次样条插值
🚀 实战建议
• 预处理流程:缺失值处理 → 离群值处理 → 数据转换 → 特征工程
• 可逆性:标准化和归一化可逆,Box-Cox需记录λ参数
• 训练集统计量:用训练集的均值/标准差转换测试集,避免数据泄露
• 可视化验证:转换后检查分布、异常值、数据范围