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

标签 algorithm machine-learning prediction black-box

背景

问题是:

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

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

问题

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

模式可能很简单,比如总是升序或降序,或者数字可能落在一个狭窄的范围内,等等。

想法

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

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

最佳答案

集群您的数据

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

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

它不仅可以让您识别异常值,如果您在某个时候需要(或想要)此功能,您还可以将 p 值放在作为异常值的点上。

关于algorithm - 什么是检测异常的好算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3770678/

相关文章:

algorithm - 枚举大(20 位)[可能] 素数

machine-learning - SpaCy NER 区分数字或实体

python - Keras - 复制 Conv2D 层

azure - Azure ML 中的销售预测

json - 跟踪具有动态属性的多个文件(字符串)的最佳方法是什么?

c++ - 当我不关心顺序并且没有重复项时,更快的删除删除习惯用法?

machine-learning - 有没有像「scaler.inverse_transform()」这样的方法来获取部分缩放器参数来对答案进行反规范化?

r - 如何找到 R 中预测变量值缺失对应的类

php - 在PHP中检查手机输入

c - 如何使该代码算法高效?使用该算法后的代码将是什么?如何避免该程序超出时间限制?