深度学习 / 数据处理:如何处理偏态数据

1 前言

当我们使用一个线性回归模型时,通常这个模型是在很大假设的前提下才有一个很好的结果:

  • 1、假设预测因子和预测目标之间的关系是线性的
  • 2、数据不存在外在噪声:不存在一些极端的数据
  • 3、非共线性( collinearity):如果你的预测因子和预测目标之间高相关,可能会发生过拟合
  • 4、正态分布:如果预测因子和目标变量是正态分布,则可以进行更可靠的预测
  • 5、尺度:因为它是一个基于距离的算法,所以预测因子应该进行归一化,使得在相关的量纲或者量级上

其中,对于第四点,说明了数据应该符合一个高斯分布,如下所示:

深度学习 / 数据处理:如何处理偏态数据_第1张图片

可能你使用的数据并不是一个完美的高斯分布,也无法处理为一个完美的高斯分布,但是并不意味着你不去尝试,下面介绍如何处理偏态数据。

什么是偏态数据

  • 偏态数据:当数据的分布曲线不对称时(与完全对称的正态分布曲线相比)。
  • 数据中有两种不同类型的偏态,左(负)或右(正)偏。
    深度学习 / 数据处理:如何处理偏态数据_第2张图片
    给个降水数据的一般分布情况:
    深度学习 / 数据处理:如何处理偏态数据_第3张图片

2 偏态数据的影响

  • 降低模型(特别是基于回归的模型)描述典型case的能力:因为它必须处理极端值的罕见case。也就是说,右偏的数据在低值上的预测结果,比在高值上的预测结果更好。偏态的数据也不适用于许多统计方法。但是,基于tree的模型不受影响。

为了避免机器学习模型的能力不被影响,应该对偏态数据进行处理,处理为一个近似标准正态分布,处理的方法取决于数据的特征。

3 处理偏态数据的方法

3.1

log转换 可能是第一种应该尝试的方法来去除偏态分布

y = np.log1p(y)
  • 这个实际上就是log(1+x),这个对于降水数据的去偏还是挺不错的

  • 注意:无法转换0或负值(为所有值添加常数以确保值 > 1)

3.2 剔除极端值

对于降水数据不太适合,因为降水数据本身就是大部分为晴天,异常降水是少部分,是典型的右偏数据类型。

3.3 最大最小正态化

3.4 立方根转换

当值太大时,可以做一个立方根
可以应用于负值

具体没有试过,感觉对于降水数据不适用

3.5 平方根转换

y = np.sqrt(y)
  • 不适用于包含负值的数据

3.6 倒数转换

3.7 平方转换

  • 适用于左偏数据分布

3.8 Box Cox transformation

scipy已经封装好了,可以之间调用.
而且这个方法和log转换差不多,也并不复杂

from scipy import stats
y = stats.boxcox(y)

基于下面的方程进行转换,只适用于正值
深度学习 / 数据处理:如何处理偏态数据_第4张图片
当包含负值时,可以使用以下的方程:
深度学习 / 数据处理:如何处理偏态数据_第5张图片

3.9 对于预测目标的变量进行重采样

  • undersampling
  • oversampling
  • SMOTE

本质上没有解决模型对于偏态数据的学习处理能力

总结

总的来说,对于降水这种偏态分布的数据来说,使用log转换和box cox转换都是有作用且存在必要的的。

引用

1、 https://www.e-education.psu.edu/meteo810/content/l5_p5.html
2、 https://www.mdpi.com/2076-3417/10/18/6247 Handling Skewed Data: A
Comparison of Two Popular Methods
3、 https://www.sciencedirect.com/science/article/abs/pii/S0022169423002895
A comprehensive implementation of the log, Box-Cox and log-sinh transformations for skewed and censored precipitation data
4、 https://stats.stackexchange.com/questions/47698/kriging-on-log-transformed-rainfall-data
5、 https://www.researchgate.net/publication/239792614_RAINBOW-A_software_package_for_hydro_meteorological_frequency_analysis_and_testing_the_homogeneity_of_historical_data_sets
6、 https://blogs.ubc.ca/colinmahony/2014/10/17/should-precipitation-variables-be-transformed-prior-to-pca/
Should precipitation variables be transformed prior to PCA?
7、 https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4120293/
Log-transformation and its implications for data analysis
8、 https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2020GL089794
Skewness of Temperature Data Implies an Abrupt Change in the Climate System Between 1985 and 1991
9、 https://journals.physiology.org/doi/full/10.1152/advan.00018.2018
Explorations in statistics: the log transformation

你可能感兴趣的:(tensorflow,机器学习,深度学习,深度学习,人工智能,偏态分布)