问题标签 [anomaly-detection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
774 浏览

scikit-learn - 复杂数据的良好异常检测模型

我正在处理数据并希望为此数据生成异常检测模型。数据仅包含三个特征LatitudeLongitudeSpeed。我对其进行了规范化,然后应用t-SNE然后再次规范化。没有标记或目标数据。所以,它应该是一个无监督的异常检测。

我无法共享数据,因为它是私有的。但是,看起来是这样的:

图像

数据中存在一些异常值如异常值:

图像

这是数据的最终形状:

图像

如您所见,数据有点复杂。当我手动搜索异常实例时(通过查看特征值),我观察到红色圆圈内的实例(下图中)应该被检测为 anomalies

红色区域内的实例应该是异常的:

图像

我曾经OneClassSVM检测异常。这是参数;

和型号;

这是我最后得到的:

图像

这是检测到的异常,OneClassSVM红色实例被检测为异常:

图像

因此,如您所见,该模型将许多实例预测为异常,但实际上,这些实例中的大多数应该是正常的。

nu我为和尝试了不同gamma的参数值degree。但是,我找不到合适的决策线来仅检测真正的异常

  • 我的模型有什么问题?我应该尝试不同的异常检测算法吗?
  • 我的数据不适合异常检测吗?
0 投票
0 回答
958 浏览

python - 通过 scikit-learn 的隔离森林 (IF) 查找异常值

我正在尝试使用 5000 个观察值和 800 个特征来检测我的数据集中的异常值。我已按照http://scikit-learn.org/stable/auto_examples/ensemble/plot_isolation_forest.html中的简单步骤进行操作

stackoverflow 和其他来源中也有一些示例,但是,我找不到关于隔离森林返回的异常值的解释的体面解释。首先,我所做的是:

这将返回 array([1, 1, 1, ..., 1, 1, 1]) 其中 -1 是异常值。

的形状y_pred_train为 5000,与 相同X_train[0]。所以-1的索引对应X_train的索引。对于经验。IF 返回的异常值索引之一是 532。因此这意味着该索引中的点(在 800 维空间中)被检测为异常值。检测到这一点后,我该如何接近并使用结果进行更多挖掘?例如,我能否找到导致异常值的最重要特征?

0 投票
1 回答
933 浏览

machine-learning - 如何训练isolationForest模型以给出最少的误报数?

在使用隔离森林进行数据异常检测时,我们应该只使用正常数据还是混合正常数据和异常数据来训练模型?还有什么是多变量数据异常检测的最佳算法?我想要最少的误报。

  1. 我正在查看小于 5% 的污染水平。
  2. 还有什么是用于多变量数据异常检测的最佳 ML 算法,以便它给出最小的误报。

注意:我知道减少误报是调整模型的问题,但我想知道最有效的算法。从博客中我了解到 IsolationForest 是最新和最有效的无监督异常检测算法之一。

0 投票
0 回答
754 浏览

python - 张量流中具有自动编码器的一类分类器

我试图用深度学习来预测异常。我将异常样本标记为 1,将非异常样本标记为 0。在这里,我尝试构建一个模型来获得此链接中定义的一类自动编码器。首先,我为非异常数据训练了自动编码器,并选择最大重建误差作为阈值。然后,我根据这个阈值评估了测试数据。但不幸的是,所有测试样本都被标记为非异常。

0 投票
1 回答
1184 浏览

python - 用于异常检测的递归神经网络

我正在实施一个异常检测系统,该系统将用于不同的时间序列(每 15 分钟一次观察,总共 5 个月)。所有这些时间序列都有一个共同的模式:在工作时间高水平,否则低水平。

许多论文中提出的想法如下:建立一个模型来预测未来值并根据残差计算异常分数。

到目前为止我所拥有的

我使用 LSTM 在给定前 96 天(1 天的观察)的情况下预测下一个时间步,然后我计算异常分数作为残差来自两个正态分布之一的可能性,这些正态分布拟合通过验证测试获得的残差. 我正在使用两种不同的分布,一种用于工作时间,一种用于非工作时间。

该模型可以很好地检测点异常,例如突然下降和峰值,但例如在节假日时会失败。

如果假期是在一周内,我希望我的模型能够检测到更多异常情况,因为这是正常工作日的不寻常日常模式。但预测只是遵循先前的观察。

我的解决方案

使用第二个更轻量级的模型(基于时间序列分解),使用每日聚合而不是 15 分钟聚合来检测每日异常。

问题

两种模型的这种组合让我可以同时拥有两种异常情况,而且效果很好,但我的想法是只使用一个模型,因为我希望 LSTM 也能够“学习”每周模式。相反,它严格遵循之前的时间步骤,而不考虑它是一个工作时间,并且水平应该更高。我尝试在输入中添加外生变量(一天中的小时,一周中的一天),以添加层和单元格数量,但情况并没有那么好。

任何考虑都值得赞赏。谢谢

0 投票
1 回答
490 浏览

scikit-learn - 如何预测离群值比例的最佳值?

我正在使用“局部异常因子”进行异常检测。该算法有一个称为“污染”的参数。该参数表示异常值的比例。就我而言,“0.0058”是污染参数的最佳值。

在尝试了许多不同的值后,我找到了这个值。但是,我需要在不尝试不同值的情况下找到污染参数的最佳值。

这是数据的形状:

在此处输入图像描述

我有两个问题;

是否可以在执行异常检测算法之前预测污染参数的最佳值?

在现实世界的应用中,异常检测模型是否有可能完美地检测到所有异常?

提前致谢。

0 投票
4 回答
1485 浏览

r - mutate_impl(.data, dots) 中的错误:评估错误:对于 Date 类的索引,只允许使用年、季度、月、周和日期间

我正在使用Anomalize包来检测异常,但即使我已将其定义Date为索引,我也会收到上述错误:

示例代码:

错误 :

mutate_impl(.data, dots) 中的错误:评估错误:对于 Date 类的索引,只允许使用年、季度、月、周和日期间。

我的目标是按日期和其他一些因素进行分组,而不仅仅是日期。

0 投票
0 回答
557 浏览

r - 异常化r包错误

我想测试 Anomalize r 包的异常检测问题。检查github 页面后,我尝试了他们提供的示例代码:

但是,我收到以下错误:

我无法调试。任何人都可以帮忙吗?如果有用,我使用的是 R 版本 3.4.3。

干杯!

0 投票
1 回答
121 浏览

machine-learning - 异常检测与聚类?

根据 Andrew Ng 的 coursera 讲座,异常检测算法之一是使用多元高斯构造概率密度。

如果数据显示集群结构(不是单个块)怎么办?在这种情况下,我们是否会求助于无监督聚类来构建密度?如果是,该怎么做?有没有其他系统的方法来发现这种情况是否存在?

0 投票
0 回答
336 浏览

java - CSV 文件中的数据挖掘和模式识别 (Python ML)

我是 ML 和数据挖掘领域的新手,我正在寻找帮助和指导来发现我的日志文件中的异常行为。

假设我有一个 cvs 文件,它记录用户会话的开始时间和结束时间以及他们处理过的策略编号,类似于下面。

开始日期、用户名、结束日期、Policy_numbers 2018-01-02 10:01、user1、2018-01-02
10:10、PO-123
2018-01-02 10:05、user2、2018-01-02 10:20、 PO-456
2018-01-02 10:11,用户 1,2018-01-02 10:45,PO-789 | PO-999(| 是这里的分隔符)

是否有任何 Python 或 java 库/模块/代码或开源应用程序来识别模式,例如:大多数用户在上午 10 点到下午 5 点期间登录,每月平均会话数,平均会话长度和……, 我希望应用程序能够识别各种模式,并以列表或方式向我提出建议,以便我可以选择那些对业务很重要的模式。

(如果我识别出模式,那么我可以通过一些查询找到答案,而无需模式识别——这很容易做到)

那么有没有办法通过这些公认的模式来训练系统以发现异常行为,例如:找到在下午 5:00 之后登录的用户,发现会话花费的时间比平均时间长,并且......

感谢您的任何想法。