(PS: 先跳过十二章,因为那章讲数据集成,这个后面再一起讲,因为要讲的比较多。此外,下文若有错误,请指正,谢谢!😃)
这次是第十三章:
该章主要讲数据变换的几种方法中的数据规范化是什么,以及如何用sklearn里面的processing包来处理数据。还有其他变换的方法比如
- 数据平滑;
- 数据聚集;
- 数据概化;
- 属性构造 等方式,它们都可以将(特征)数据转换成适用于数据挖掘的形式。
其实下文谈的几种都属于数据预处理里面数据变换的标准化范畴(或用英文更专业点,叫Feature Scaling,也叫特征缩放,详细解释参见维基百科)。
掌柜这里就简单再补充几点。
(小小提一下:为什么要进行数据变换? 通俗来讲就是数据集里面的不同字段不存在可比性,只有转换到同一范围才可比。比如人的身高和体重,代表不同含义,也有不同取值范围。如果我们不做数据变换处理,后面模型就会受影响。)
PPS,第一个补充点就是 数据规范化需要注意的地方:
-
1. 什么时候用Min-Max规范化处理数据?
(也叫归一化,这里主要指基于最大、最小值的变换,因为在不同领域,归一化有不同含义。)- 如果要把原始数据线性变换到[0,1]区间,那就使用Min-Max规范化处理;
- 如果要对稀疏数据进行处理,也可以用Min-Max规范化;
- 在机器学习算法中,像KNN、SVM、人工神经网络都可以先用Min-Max规范化处理数据(因为它们的底层数学原理都是基于距离矩阵,比如KNN是基于欧氏距离;而规范化处理的两种方法也都是基于距离进行的操作的);
- 不过,Min-Max规范化易受噪音数据的影响,这个需要注意!
-
2. 什么时候用Z-Score标准化处理数据?
- 当要做中心化处理,并对数据分布有正太分布需求的时候用Z-Score标准化处理;
- 当特征中含有异常值的时候,用Z-Score标准化更好处理;
- 在机器学习算法中,像线性回归、梯度下降算法也适合先用Z-Score标准化处理特征数据。
-
3. 补充一个RobustScaler(缩放到中位数和分位数的)方法,什么时候用RobustScaler方法?
- 当要最大限度地保留数据集中的异常值时,使用RobustScaler方法更好。
PPPS : 不是所有的数据都需要先进行特征变换,像机器学习算法中的 朴素贝叶斯、基于树模型的随机森林,梯度提升算法(GBDT、XGBoost等)就不需要 。
😂怪不得前几天掌柜在练习的时候发现,用XGBoost模型进行训练的时候,不进行特征变换反而均方误差更小了。。。
(下篇加入代码加深理解!
参考资料:
归一化和标准化:各种特征如何综合才是最合理的?
带你读《Python数据分析与数据化运营(第2版)》之三:10条数据化运营不得不知道的数据预处理经验
数据变换之标准化VS归一化
)