25

我正在研究数据预处理,并想实际比较数据标准化与规范化与鲁棒缩放器的优势。

理论上,指导方针是:

好处:

  1. 标准化:对特征进行缩放,使得分布以 0 为中心,标准差为 1。
  2. 标准化:缩小范围,使范围现在介于 0 和 1 之间(如果有负值,则为 -1 到 1)。
  3. Robust Scaler:类似于标准化,但它使用四分位数范围,因此它对异常值具有鲁棒性。

缺点:

  1. 标准化:如果数据不是正态分布(即没有高斯分布),则不好。
  2. 标准化:受到异常值(即极值)的严重影响。
  3. Robust Scaler:不考虑中位数,只关注大容量数据所在的部分。

我创建了20 个随机数字输入并尝试了上述方法(红色数字代表异常值):

方法比较


我注意到 -实际上- 规范化受到异常值的负面影响,并且新值之间的变化比例变得很小(所有值几乎相同 -6 位后小数点0.000000x- )即使原始输入之间存在明显差异!

我的问题是:

  1. 我是否正确地说标准化也会受到极端值的负面影响?如果不是,为什么根据提供的结果?
  2. 我真的看不到Robust Scaler如何改进数据,因为我在结果数据集中仍然有极值?任何简单的完整解释?
4

2 回答 2

19

我是否正确地说标准化也会受到极端值的负面影响?

你确实是;scikit-learn文档本身明确警告这种情况:

但是,当数据包含异常值时,StandardScaler往往会被误导。在这种情况下,最好使用对异常值具有鲁棒性的缩放器。

或多或少,同样适用于MinMaxScaler

我真的看不到Robust Scaler如何改进数据,因为我在结果数据集中仍然有极值?任何简单的完整解释?

健壮并不意味着免疫无懈可击,缩放的目的不是“去除”异常值和极值——这是一个独立的任务,有自己的方法;这在相关的 scikit-learn 文档中再次明确提到:

强大的缩放器

[...] 请注意,异常值本身仍然存在于转换后的数据中。如果需要单独的异常值裁剪,则需要进行非线性变换(见下文)。

其中“见下文”指的是QuantileTransformerand quantile_transform

于 2018-08-14T13:22:10.060 回答
7

它们都不是稳健的,因为缩放会处理异常值并将它们放在一个有限的范围内,即不会出现极端值。

您可以考虑以下选项:

  • 在缩放之前剪裁(例如,在 5 个百分位和 95 个百分位之间)系列/数组
  • 如果剪裁不理想,则进行平方根或对数等变换
  • 显然,添加另一列“被裁剪”/“对数裁剪量”将减少信息丢失。
于 2019-09-25T21:43:39.967 回答