您是否在实际应用中应用数值数据的异常值检测?

数据挖掘 预处理 离群值
2021-09-27 06:20:46

在数据科学中,我们经常需要处理原始数据。主要任务是从训练数据中得出可以推广到未来未见数据的结论。

您是否在日常工作中应用异常值检测?我的意思是:在ñ 训练数据决定 ķ<<ñ数据点是异常值并丢弃它们。

你做这件事的经验是什么?您对数值数据应用哪些方法。

3个回答

您必须考虑异常值的来源。技术故障?那么他们可能可以安全地忽略。但是当你写下你的主要任务是

从训练数据中得出可以推广到未来未见数据的结论

您必须记住,您未来的数据也将包含异常值适当地处理它们。像树这样的模型通常对那些模型有些鲁棒,而回归可能会变得混乱。有几种行之有效的方法,例如忽略超过 4 个标准差(或与中位数的中位数偏差)的所有内容,或者仅忽略第 n 个顶部和底部百分位数。

但是在某些情况下,异常值不仅仅是侥幸,而且实际上可以告诉您有关您正在处理的问题域的一些信息。如果您从事欺诈检测工作,那么异常值就是您感兴趣的点。如果您致力于优化网络性能,那么未到达的数据包可能是有趣的数据包。

所以我的建议是不要盲目地抛弃原则上的数据,而要始终考虑数据代表什么以及为什么可能存在异常值。

就实际应用而言:

这里有几个:

1)飞机发动机异常检测:输入特征可以是发动机产生的热量、振动强度、燃料消耗等。在这里可以再次发送异常值进行测试,并可以做出进一步的决定。

2)欺诈检测:特征可以是用户在网站上活动的特征。我们可以根据数据对概率进行建模。通过检查小于某个固定阈值的概率来识别异常行为。

3)监控数据中心的计算机:功能可以是内存使用、磁盘访问次数、CPU 负载、网络流量等。此处的异常行为可以帮助预测未来的故障。

假设我们的数据具有概率分布(高斯分布),则完成异常检测。我们可以绘制数据以查看是否是这种情况,如果不是,我们可以使用对数变换使其成为高斯分布。高斯分布指定我们的数据位于这些区域的区域和概率。

例如:替换原始特征 x -> Log(x) 或特征 x -> (x)^4/3 等。

此外,关于决定异常值的阈值,您可以使用它并查看更高的阈值您将拒绝更多条目,这可能是医生试图将癌症患者与许多正常患者隔离而不冒任何风险/机会的情况。同样,这里的异常值并不意味着癌症患者,但绝对值得进行医学检查。如果您将太多正常数据标记为异常值,您可以将其设置为较低的值。

我们有偏斜的数据集,因为我们有比另一种更多的例子。例如,当我们获得飞机发动机数据时,我们可能只有少数坏的数据,大部分是好的数据。建议使用交叉验证数据。F1-Score是评估算法性能的一个很好的指标。

如果您正在处理通常符合正态分布的连续数据,您可以应用 Z 分数作为确定观察值与平均值有多少标准偏差的方法。根据您的目标,您可以丢弃较大的 z 分数。 https://en.wikipedia.org/wiki/Standard_score

箱线图非常适合可视化和识别异常值,尽管箱线图有时可以隐藏有关数据的信息。

这是一个类似对话的链接: 哪些算法或方法可用于从该数据集中检测异常值?