数据转换
为机器学习算法准备更适合的数据
数据转换(Data Transformation)是数据预处理的重要一环,用来转换要分析的数据集,使其更方便后续建模,比如回归分析、分类、聚类、降维。注意,数据预处理时,一般先处理缺失值、离群值,然后再数据转换。
📊 常见数据转换方法
基于统计
插值方法
其他方法
中心化:去均值
将数据质心移动到原点
数据中心化(Centralize, Demean),也叫去均值,是基于统计最基本的数据转换。对于一个给定特征,去均值数据(Demeaned Data, Centered Data)的定义为:
其中,mean(X) 计算期望值或均值。一般情况,多特征数据每一列数据代表一个特征。多特征数据的中心化,相当于每一列数据分别去均值。对于均值几乎为0的数据,去均值处理效果肯定不明显。
📊 原始数据的四种可视化方案
本节用四种可视化方案展示数据,它们分别是热图、KDE分布、小提琴图和平行坐标图。下面的交互组件可以切换查看这些可视化方式。
📈平行坐标图(Parallel Coordinate Plot)
一个正交坐标系可以用来展示二维或三维数据,但是对于高维多元数据,正交坐标系则显得无力。而平行坐标图,可以用来可视化多特征数据。
平行坐标图采用多条平行且等间距的轴,以折线形式呈现数据。交互组件中还用不同颜色折线代表分类标签(Setosa、Versicolor、Virginica)。
💡中心化的效果
标准化:Z分数
将数据缩放到均值0、标准差1
标准化(Standardization)对原始数据先去均值,然后再除以标准差:
处理得到的数值实际上是原始数据的Z分数,表达若干倍的标准差偏移。比如,某个数值处理后结果为3,这代表数据距离均值3倍标准差偏移。
📊 Z分数的深层含义
正负号的意义
绝对值的意义
⚖️ 标准化 vs 归一化:术语辨析
标准化(Standardization)
归一化(Normalization)
🔗标准化与主成分分析(PCA)
归一化:取值在0和1之间
将数据映射到[0,1]区间
归一化(Normalization)常指数据首先减去其最小值,然后再除以range(X),即max(X) - min(X):
通过上式归一化得到的数据取值范围在 [0, 1] 之间。
🔄 其他数据转换方式
1. 去均值再除以range
2. 基于四分位间距(IQR)的转换
三种方法综合对比
交互式可视化对比中心化、标准化、归一化
📐 数学定义
中心化(去均值)
标准化(Z-score)
归一化(Min-Max)
🎯何时使用中心化?
🎯何时使用标准化?
🎯何时使用归一化?
广义幂转换
Box-Cox:将偏斜分布转为正态分布
Box-Cox转换是一种用于对非正态分布数据进行转换的方法。通过一系列参数λ的取值,将数据的概率密度函数进行幂函数变换,使得变换后的数据更加接近正态分布。
📐 Box-Cox转换公式
通用公式
特殊λ值
Box-Cox
Yeo-Johnson
经验累积分布函数
ECDF:非参数的数据转换方法
经验累积分布函数(Empirical Cumulative Distribution Function, ECDF)是一种非参数的数据转换方法。ECDF的特点是简单易懂,不需要对数据进行任何假设或参数估计,适用于任何类型的数据分布。
🔄 ECDF转换流程
排序数据
计算累积概率
映射到[0,1]
✓ECDF的优势
- •非参数方法,无需假设分布
- •单调递增,保持数据顺序
- •映射到[0,1],易于解释
- •sklearn: QuantileTransformer
🔗与Copula理论的联系
插值
根据已知点推断未知点的值
插值(Interpolation)根据有限的数据点,推断其他点处的近似值。已知点数据范围内的插值叫做内插,已知点数据外的插值叫做外插(Extrapolation)。
🔍 插值 vs 拟合(回归)
插值(Interpolation)
拟合(Regression)
📊 插值方法对比
| 方法 | 函数类型 | 连续性 | 适用场景 |
|---|---|---|---|
| 向前/向后 | 常数(阶梯状) | 不连续 | 时间序列填补缺失值 |
| 最邻近 | 常数(阶梯在中点) | 不连续 | 图像缩放(最近邻) |
| 线性 | 一次多项式(线段) | 连续 | 快速简单估算 |
| 三次样条 | 三次多项式(平滑) | C²连续 | 曲线拟合、动画 |
🎯本章核心要点
📚理论知识
- •中心化/标准化/归一化的数学定义和区别
- •Box-Cox转换:x(λ) = (x^λ - 1) / λ
- •ECDF:非参数累积分布函数
- •插值vs拟合:精确通过vs最佳逼近
🛠️实用技能
- •根据算法需求选择合适的数据转换方法
- •使用sklearn的Scaler和Transformer类
- •理解不同插值方法的trade-off
- •可视化对比转换前后的数据分布