使用 Standardizer 处理异常值?

数据挖掘 机器学习 深度学习 数据挖掘 数据清理 离群值
2022-03-09 16:02:15

我有一个包含 60 列和 5K 记录的数据集。很少有列有异常值。我知道有多种方法可以处理异常值。

实际上,我不希望丢弃数据,因为它是异常值,因为我不确定它是否真的是异常值或有意义的值(例如收入可能会如何倾斜)。

所以我所做的只是使用standard scaler.

这样做可以吗?我假设通过进行这种标准缩放,我保留了数据并消除了异常值。

我确实提到了几个帖子(post1post2)但不知道

这就是标准化的作用吗?任何人都可以建议我是否有其他方法可以在不丢失记录的情况下处理异常值?

你能帮我吗?

3个回答

标准化可能不是最好的选择。

因为它们仍然不会在 -1 和 1 之间有界(如归一化时),而是依赖于分布。我的意思是,如果它们是异常值,它们的标准偏差对于这些值会很大。无论如何,您不应该重新调整这些值来对抗这些异常值。异常值首先不是有问题的,因为它们的值很大,但主要是因为这些值位于不可能/代表未来数据的集群中,您将学习它。

例如,不丢弃它们的一种解决方案是分箱,您说所有标准偏差大于 2 的异常值都应该具有值“X”,例如,X 是大约 99.5% 的分位数。

当您不想删除异常值时,如果它是分类任务,您可以使用逻辑回归,因为我们知道 log reg 由于 sigmoidal 函数对异常值具有鲁棒性。否则,一般来说,您可以使用本地可达性因子值来检查您的数据点是否具有与其他数据点显着不同的该因子值。本地可达性因子并从数据集中删除这些更高价值的数据点。

不,只是如果你标准化你正在考虑异常值,并且如果你使用的敏感模型会受到 KNN 等异常值的影响,那么这样做不是一个好习惯。我建议要么选择距离不敏感模型,要么删除异常值,然后只有你的表现可能会提高。