本文记录看到的对数据变换的讲解,作为笔记的一部分,以便今后理解记忆。
常见的数据预处理包括: 数据缺失(Missing),奇值处理(Outlier),数据变换(Transformation),特征选择(Feature Selection),特征提取(Feature Extraction),非平衡数据预处理(Imbalance)。这里主要关注数据变换。
常见的数据类型包括:
以上分别是定性和定量的分类,定量的分为名义上的(没有固有顺序或排名顺序的变量(自己有点不理解))、顺序的(有序序列的变量)、二进制的(只有两个值的变量)。定性的分为离散的和连续的变量。
这里的数据变换里面主要是针对连续数据的变换。
一、为什么要数据变换
- 方便置信区间分析或者可视化(缩放数据,对称分布)
- 为了获取更容易解释的特征(获取线性特征)
- 降低数据的维度或者复杂度
- 方便使用简单的回归模型
举个简单又很常见的例子,如果我们发现在变换前,数据的尾部比较集中,如何变成近似正太分布的样子?
再或者,数据在首部异常集中,怎么转换到正太分布的样子呢?
下面先介绍数据转换的一般流程,再介绍数据转换的经验。
二、数据转换的一般流程
数据变换没有严格的流程,一般来说是一个try-and-fail的过程,在这个试探过程中,一般会有,
- 初步数据可视化和数据均值方差分析结果
- 选择数据变换方法
- 变换后数据可视化和数据均值方法分析
- 假设验证
- 确认数据变换是否有效
三、常用方法
数据变换一般分为单变量变换和多变量变换。
一般来说多变量变换就是为了特征抽取(Feature Extraction)、维度压缩(Dimension Reduction)、数据分解(Decomposition)等,比如主成分分析(PCA)。这里主要还是单变量的变换。
单变量的变换又分为线性变换和非线性变换,这里主要是利用一些非线性变换,来获取合适数据的常见方法。常见的变换方法有如下几种:
我们把这些变换函数对应到同一张图上,发现他们具有一定的关于y=x对称的性质。
四、一般经验
- 变换前,数据接近正态分布,直接标准化。
- 变换前数据分布,偏中前,使用square-root变换。
- 变换前数据分布,偏前,使用logarithmic变换。
-
变换前数据分布,集中前面,使用inverse/reciprocal变换。
-
变换前数据分布,偏中后,使用square变换。
- 变换前数据分布,偏后,使用exponential变换。
当已知数据频率的分布,使用和数据频率分布对称的函数进行变换,可以得到较好的单变量数据变换效果。