什么是检测异常的好算法?

Jos*_*vin 13 algorithm black-box machine-learning prediction

背景

这是问题所在:

  1. 黑匣子每天输出一个新号码.
  2. 这些数字已被记录一段时间.
  3. 检测黑盒中的新数字何时落在该时间段内建立的数字模式之外.

数字是整数,时间段是一年.

什么算法会识别数字中的模式?

模式可能很简单,如总是上升或总是下降,或者数字可能在一个狭窄的范围内,等等.

思路

我有一些想法,但不确定最佳方法,或已存在的解决方案:

  • 机器学习算法?
  • 神经网络?
  • 分类正常和异常数字?
  • 统计分析?

awe*_*omo 5

集中数据.

如果您不知道数据将具有多少模式,请使用高斯混合模型(GMM)和评分函数(例如,贝叶斯信息准则(BIC)),以便您可以自动检测可能的数量.你的数据.如果你不知道k可能是什么价值,我推荐这个而不是k-means .一旦为过去一年的数据构建了GMM,给定一个新的数据点x,就可以计算出任何一个聚类生成它的概率(由GMM中的高斯模型建模).如果您的新数据点由任何一个群集生成的概率很低,则很可能是一个真正的异常值.

如果这听起来有点过分,您会很高兴知道在R优秀 MCLUST包中已经为您实现了自动群集识别的整个GMM + BIC程序.我已经多次使用它来取得这些问题的巨大成功.

它不仅允许您识别异常值,而且如果您在某个时刻需要此功能(或想要它),您将能够将p值设置为异常点.


The*_*dor 3

您可以尝试使用线性回归进行线拟合预测,看看效果如何,用您选择的语言实现它会相当容易。将一条线拟合到数据后,您可以计算沿线的平均标准差。如果新点位于趋势线+-标准差上,则不应将其视为异常。

在处理此类数据时,我想到的另一种技术是PCA 。

您还可以研究无监督学习。这是一种机器学习技术,可用于检测较大数据集中的差异。

听起来是一个有趣的问题!祝你好运