问题标签 [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.
scikit-learn - 复杂数据的良好异常检测模型
我正在处理数据并希望为此数据生成异常检测模型。数据仅包含三个特征Latitude
:Longitude
和Speed
。我对其进行了规范化,然后应用t-SNE
然后再次规范化。没有标记或目标数据。所以,它应该是一个无监督的异常检测。
我无法共享数据,因为它是私有的。但是,看起来是这样的:
数据中存在一些异常值如异常值:
这是数据的最终形状:
如您所见,数据有点复杂。当我手动搜索异常实例时(通过查看特征值),我观察到红色圆圈内的实例(下图中)应该被检测为 anomalies。
红色区域内的实例应该是异常的:
我曾经OneClassSVM
检测异常。这是参数;
和型号;
这是我最后得到的:
这是检测到的异常,OneClassSVM
红色实例被检测为异常:
因此,如您所见,该模型将许多实例预测为异常,但实际上,这些实例中的大多数应该是正常的。
nu
我为和尝试了不同gamma
的参数值degree
。但是,我找不到合适的决策线来仅检测真正的异常。
- 我的模型有什么问题?我应该尝试不同的异常检测算法吗?
- 我的数据不适合异常检测吗?
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 维空间中)被检测为异常值。检测到这一点后,我该如何接近并使用结果进行更多挖掘?例如,我能否找到导致异常值的最重要特征?
machine-learning - 如何训练isolationForest模型以给出最少的误报数?
在使用隔离森林进行数据异常检测时,我们应该只使用正常数据还是混合正常数据和异常数据来训练模型?还有什么是多变量数据异常检测的最佳算法?我想要最少的误报。
- 我正在查看小于 5% 的污染水平。
- 还有什么是用于多变量数据异常检测的最佳 ML 算法,以便它给出最小的误报。
注意:我知道减少误报是调整模型的问题,但我想知道最有效的算法。从博客中我了解到 IsolationForest 是最新和最有效的无监督异常检测算法之一。
python - 张量流中具有自动编码器的一类分类器
我试图用深度学习来预测异常。我将异常样本标记为 1,将非异常样本标记为 0。在这里,我尝试构建一个模型来获得此链接中定义的一类自动编码器。首先,我为非异常数据训练了自动编码器,并选择最大重建误差作为阈值。然后,我根据这个阈值评估了测试数据。但不幸的是,所有测试样本都被标记为非异常。
python - 用于异常检测的递归神经网络
我正在实施一个异常检测系统,该系统将用于不同的时间序列(每 15 分钟一次观察,总共 5 个月)。所有这些时间序列都有一个共同的模式:在工作时间高水平,否则低水平。
许多论文中提出的想法如下:建立一个模型来预测未来值并根据残差计算异常分数。
到目前为止我所拥有的
我使用 LSTM 在给定前 96 天(1 天的观察)的情况下预测下一个时间步,然后我计算异常分数作为残差来自两个正态分布之一的可能性,这些正态分布拟合通过验证测试获得的残差. 我正在使用两种不同的分布,一种用于工作时间,一种用于非工作时间。
该模型可以很好地检测点异常,例如突然下降和峰值,但例如在节假日时会失败。
如果假期是在一周内,我希望我的模型能够检测到更多异常情况,因为这是正常工作日的不寻常日常模式。但预测只是遵循先前的观察。
我的解决方案
使用第二个更轻量级的模型(基于时间序列分解),使用每日聚合而不是 15 分钟聚合来检测每日异常。
问题
两种模型的这种组合让我可以同时拥有两种异常情况,而且效果很好,但我的想法是只使用一个模型,因为我希望 LSTM 也能够“学习”每周模式。相反,它严格遵循之前的时间步骤,而不考虑它是一个工作时间,并且水平应该更高。我尝试在输入中添加外生变量(一天中的小时,一周中的一天),以添加层和单元格数量,但情况并没有那么好。
任何考虑都值得赞赏。谢谢
r - mutate_impl(.data, dots) 中的错误:评估错误:对于 Date 类的索引,只允许使用年、季度、月、周和日期间
我正在使用Anomalize
包来检测异常,但即使我已将其定义Date
为索引,我也会收到上述错误:
示例代码:
错误 :
mutate_impl(.data, dots) 中的错误:评估错误:对于 Date 类的索引,只允许使用年、季度、月、周和日期间。
我的目标是按日期和其他一些因素进行分组,而不仅仅是日期。
r - 异常化r包错误
我想测试 Anomalize r 包的异常检测问题。检查github 页面后,我尝试了他们提供的示例代码:
但是,我收到以下错误:
我无法调试。任何人都可以帮忙吗?如果有用,我使用的是 R 版本 3.4.3。
干杯!
machine-learning - 异常检测与聚类?
根据 Andrew Ng 的 coursera 讲座,异常检测算法之一是使用多元高斯构造概率密度。
如果数据显示集群结构(不是单个块)怎么办?在这种情况下,我们是否会求助于无监督聚类来构建密度?如果是,该怎么做?有没有其他系统的方法来发现这种情况是否存在?
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 之后登录的用户,发现会话花费的时间比平均时间长,并且......
感谢您的任何想法。