【问题标题】:Removing outlier in data for NN, good or bad idea?去除 NN 数据中的异常值,好主意还是坏主意?
【发布时间】:2023-03-11 10:18:01
【问题描述】:

我有一些数据有一些异常值。然而,我的数据有一个方向,并且有我在寻找异常值时需要考虑的趋势。然而,异常值不仅仅是一个是或否的答案。我唯一能说的是,数据点离趋势越远,它就越有可能是我不想包含在我的数据中的异常值。

鉴于标准偏差、线性回归以及我正在查看的数据块都取决于上下文,我所知道的没有静态函数来确定某事物是否是异常值。

我可以使用各种技术选择好的离群值,但问题是,无论何时你摆脱离群值,你都是在使用你从中挑选离群值的数据的上下文。

我知道,当您为 NN 准备数据时,必须始终以完全相同的方式准备数据。也就是说,它通过一组静态过程/功能。用于选择异常值的技术,需要上下文,并且上下文发生变化,因此函数会发生变化。我不确定如何选择异常值的差异是否足以破坏模型的完整性。

如果这是真的,有什么好的静态方法来选择异常值吗?

【问题讨论】:

    标签: python neural-network outliers


    【解决方案1】:

    一种独立于模型的选择异常值的方法是基于错误的分布。这归结为:

    1. 用所有数据点拟合模型
    2. 计算每个数据点的残差
    3. 根据某个阈值消除异常值
    4. 从头开始重新拟合模型,移除异常值
    5. (可选地重复直到满足终止条件,例如没有异常值被删除)

    消除阈值取决于问题和指标。一种消除异常值的方法是计算残差的 z 分数(减去均值并除以残差的标准差),然后移除绝对值大于定义阈值的任何点(等于点被识别为异常值的平均值的标准偏差)。

    https://en.wikipedia.org/wiki/Standard_score

    这是一种通用的、独立于模型的方法,它假设残差是正态分布的(或者至少可以根据相对误差合理地识别异常值)。

    如果您对残差分布有其他假设,则可以应用其他概率标准(例如,拟合残差误差的分布,然后为每个点应用概率阈值)。但是,这涉及更多,如果您对残差分布的特征没有任何先验信念(除了“大错误可能是异常值”),那么 z 分数就是要走的路。

    前面讨论了如何识别异常值,但没有说明是否应该。这是一个依赖于应用程序的问题。如果异常值不能提供您想要建模的行为的信息,则可以将它们从训练中删除。但是,如果您希望模型预测包含异常值的平均(或其他指标优化)行为,则应保留它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 2019-11-11
      • 2011-10-26
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多