我正在研究数据预处理,并且想比较数据标准化vs标准化vs稳健缩放器的好处。
理论上,准则是:
优势:
缺点:
我创建了 20个随机数字输入,并尝试了上述方法(红色的数字代表异常值):
我注意到-确实-归一化受到异常值的负面影响,并且新值之间的变化范围变小(所有值在小数点后几乎都是相同的-6位数字- 0.000000x
),即使原始输入之间也存在明显差异!
PS
我正在想象一种情况,我想为神经网络准备数据集,并且我担心消失梯度问题。不过,我的问题仍然笼统。
答案 0 :(得分:7)
我是说对吗?标准化也会受到极端值的负面影响吗?
的确是你; scikit-learn docs本身显然会警告这种情况:
但是,当数据包含异常值时,
StandardScaler
通常会被误导。在这种情况下,最好使用对异常值具有鲁棒性的缩放器。
或多或少,MinMaxScaler
也是如此。
我真的看不到 Robust Scaler 如何改善数据,因为我仍然具有 extreme值 在结果数据集中?任何简单的完整解释?
健壮并不意味着免疫或无敌 ,并且扩展的目的不是 以“删除” “异常值和极端值-这是具有其自身方法的单独任务; relevant scikit-learn docs再次明确提到了这一点:
RobustScaler
[...]请注意,异常值本身仍然存在于转换后的数据中。如果需要单独的离群裁剪,则需要进行非线性转换(请参见下文)。
其中“见下文”指的是QuantileTransformer
和quantile_transform
。
答案 1 :(得分:0)
在缩放将照顾异常值并将其置于受限范围内的意义上,它们都不是很健壮的。
您可以考虑以下选项: