1 前言
当我们使用一个线性回归模型时,通常这个模型是在很大假设的前提下才有一个很好的结果:
- 1、假设预测因子和预测目标之间的关系是线性的
- 2、数据不存在外在噪声:不存在一些极端的数据
- 3、非共线性( collinearity):如果你的预测因子和预测目标之间高相关,可能会发生过拟合
- 4、正态分布:如果预测因子和目标变量是正态分布,则可以进行更可靠的预测
- 5、尺度:因为它是一个基于距离的算法,所以预测因子应该进行归一化,使得在相关的量纲或者量级上
其中,对于第四点,说明了数据应该符合一个高斯分布,如下所示:
可能你使用的数据并不是一个完美的高斯分布,也无法处理为一个完美的高斯分布,但是并不意味着你不去尝试,下面介绍如何处理偏态数据。
什么是偏态数据
- 偏态数据:当数据的分布曲线不对称时(与完全对称的正态分布曲线相比)。
- 数据中有两种不同类型的偏态,左(负)或右(正)偏。
给个降水数据的一般分布情况:
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)
基于下面的方程进行转换,只适用于正值
当包含负值时,可以使用以下的方程:
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