我正在进行数据预处理,并希望实际比较数据标准化与规范化与健壮的Scaler的好处。
理论上,指导方针是:
优势:
- 标准化:比例尺的特点是分布以0为中心,标准偏差为1。
- Normalization:缩小范围,使范围现在介于0和1之间(如果有负值,则为-1到1)。
- Robust Scaler:与标准化类似,但它使用四分位区间,因此对异常值具有鲁棒性。
缺点:
- 标准化:如果数据不是正态分布(即没有高斯分布),则不好。
- 标准化:受到异常值(即极值)的严重影响。
- Robust Scaler:不考虑中值,只关注批量数据所在的部分。
我创建了20个随机数值输入,并尝试了上述方法(红色数字表示异常值):
我注意到-确实-标准化受到异常值的负面影响,新值之间的变化范围变得很小(所有值几乎相同-小数点后6位-0.000000x
),即使原始输入之间有明显的差异!
我的问题是:
- 我说标准化也会受到极端值的负面影响,这是对的吗?如果没有,为什么要根据提供的结果?
- 我真的看不出健壮的Scaler是如何改进数据的,因为我在生成的数据集中仍然有extreme值?有什么简单完整的解释吗?
p.S
我想象一个场景,我想为神经网络准备数据集,我担心消失梯度问题。不过,我的问题仍然是一般性的。
Tags:
事实上,你是;scikit学习docs他们自己清楚地警告这种情况:
或多或少,对于
MinMaxScaler
也是如此。健壮并不意味着免疫,或不受攻击,缩放的目的是不以“删除”异常值和极值-这是一个单独的任务,有自己的方法;这在relevant scikit-learn docs中再次明确提到:
其中“see below”指的是^{} 和^{} 。
它们都不是健壮的,因为缩放会处理异常值,并将它们放在一个有限的尺度上,即不会出现极值。
您可以考虑以下选项:
相关问题 更多 >
编程相关推荐