问题标签 [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.
machine-learning - 变量随时间变化(趋势)时序的故障检测
我对时间序列的异常检测非常陌生,所以我的问题对你们中的一些人来说是显而易见的。今天,我正在使用 lstm 和聚类技术来检测时间序列上的异常,但这些方法无法识别随着时间推移缓慢恶化的异常(我认为它称为趋势),即机器温度在一个月内缓慢增加(lstm 将学习这种趋势和预测的增加没有任何特殊错误)。有这样的方法来检测这种故障吗?
azure-machine-learning-studio - Azure Machin 学习 - 如何使用非常有限的数据集进行训练
我是一个初学者,我需要一些关于如何对以下场景进行建模的建议,
我平均每天从外部系统消耗约 5000 行数据。传入行数在 4950 到 5050 之间。我想建立一个警报机制,它会告诉我传入行数是否不正常。即,我想要一个解决方案,让我知道如果我说,在给定的一天有 2500 行,这比平均值少 50%,或者说 15000 行,比平均值多得多。
样本数据如下:
| 天 | 传入数据的大小(以 MB 为单位)| 行数 | 标签 |
| 平日 | 3.44 | 5000 | 是 |
| 平日 | 3.3 | 4999 | 是 |
| 平日 | 3.1 | 4955 | 是 |
| 平日 | 3.44 | 5000 | 是 |
| 周末 | 4.1 | 5050 | N |
我最初的想法是使用一些异常检测算法。我尝试使用主成分分析算法来检测异常。我收集了每天收到的总行数,并将其用于训练模型。但是,在使用非常有限的数据(少于 500 次观察)进行训练后,我发现准确性非常差。One-Class SVM 也没有给我很好的结果。我使用“行数”作为分类特征,标签作为..标签并忽略其余参数,因为在这种情况下它们对我不感兴趣。无论传入数据的日期和大小如何,我的逻辑仅围绕行数。此外,到目前为止,我没有任何负面情况,这意味着,我从未收到过少或过多的记录。因此,我将收到 5050 行的所有日子都标记为异常。
我确实意识到我在这里做的事情根本上是错误的。问题是,我的场景甚至有资格用于机器学习吗?(我相信确实如此,但希望得到您的意见)如果是,如何处理如此有限的训练数据集,而您几乎没有任何样本异常。这真的是一个异常问题,还是我可以使用一些分类算法来获得更好的结果?
谢谢
javascript - D3:如何在折线图上画点
我正在开发一个异常图,其中将有一个折线图,我需要 g=绘制一个点并将异常显示为点
截至目前,我能够绘制线图我的完整代码
怎么画点??我的异常值与用于创建折线图的值相同
所有数据:
异常数据:
这是我的代码:
python - 隔离森林在预测一个点而不是所有点时给出不同的结果
我正在尝试检测某些数据中的异常情况。我有正常数据和被认为异常的数据。
我在 python 中使用来自 scikit-learn 库的隔离森林。我已经从正常数据创建了一个模型,如下所示:
当我尝试进行预测时:
它工作正常。36 个中有 35 个被检测为异常。
如果我这样做:
突然间,所有点都被归类为内点。
我检查了'anomaly.reshape(1,-1)'的形状,它是 (1, 2)。'transformed_anomaly'的形状是 (36,2)
有人可以指出它的问题吗?
tensorflow - 如何在时间序列数据上实现 LSTM 自动编码器?
下面的 Keras 博客从高层次上提到了 LSTM 自动编码器。
https://blog.keras.io/building-autoencoders-in-keras.html
但是只给出了一个准系统参考代码并且它不完整。
问题
- 如何扩展上述代码并为一些虚拟时间序列数据开发工作代码?
unsupervised-learning - 在 sklearn.neighbors.LocalOutlierFactor 中传递 decision_factor 而不是污染因子
我一直在查看 sklearn.neighbors.LocalOutlierFactor 文档,以寻找一种方法来传递一个决策因子(例如 1.25)以用于异常值与内部值分类而不是污染率。在大多数现实生活的例子中,污染率是事先不知道的,所以这个模型是不可用的。
据我所知,目前没有办法做到这一点。提交功能请求的最佳方式是什么?
java - 如何在 Java API 中使用生成的 H2O 自动编码器/异常检测模型进行推理?
我想在 Java 类中使用 H2O 自动编码器(异常检测)进行推理/预测。
我用 R 从 H2O DeepLearningBooklet 构建了自动编码器示例“ECG Hearbeats”并保存了它。我可以成功地将生成的 Java 类及其相关的 h2o-genmodel.jar 导入到我的 Java 项目中。
不幸的是,我找不到如何在那里使用它的示例或文档。
这是我对一些代码的第一次尝试,以及我对用于 Java 代码推理的其他 H2O 模型的一些猜测:
此代码实际编译并运行。但是,我真的不明白如何
- 正确配置 EasyPredictModelWrapper(或者我只需要实例化它?)
- 添加一个新的单个事件进行预测,因为我没有键,但只有 ECG 心跳的值。(我假设方法 row.putAll 对 ECG 数据集的各种特征来说是最好的?!)
- 从预测中获取 MSE(类似于我们在 R / Python 示例中看到的“recon_error <- as.data.frame(recon_error)”),您可以在其中看到所有 23 条 ECG 线的重建误差?(然后我可以定义一个阈值,并构建一个实时应用程序,如果达到阈值则创建警报)
我认为答案很简单,但没有文档不容易找到:-)
感谢帮助。
influxdb - 使用 Influxdb/Kapacitor 的接口带宽使用和异常检测
我已经建立了一个带有服务器的实验室,它使用 LibreNMS 每 5 分钟提取一些网络设备(主要是 Juniper 和 Brocades)的统计信息,并将收集到的数据转发到 influxdb。我每 5 分钟就会收到很多数据,但我想关注的是接口带宽使用情况。我有 ifOutOctets_rate 和 ifInOctets_rate 数据点,这些数据点似乎是从 LibreNMS 以及原始接口计数器计算的字节/秒。
我最初的目标是设置 influxdb 和 Kapacitor 来了解每个接口的使用历史,并检测任何异常情况。我希望检测到的异常情况是接口上的流量“最大”,或者在工作时间下降到零。当一个接口达到或超过过去 7 天看到的最大使用带宽并保持该速率至少 15 分钟(3 个轮询周期)时,该接口被视为“最大化”。
我是 influxdb/kapacitor 的新手,从来没有做过任何异常检测,所以我想我会边做边学。现在我已经建立了实验室并让组件工作和数据流动,我不知道下一步该去哪里。
我曾尝试在 Kapacitor 中使用 Holt-Winter 函数,但我想我陷入了“预测”。似乎我必须有一个“预测”来比较我的实时数据。但它似乎只能在 24 小时范围内工作,即便如此,当我更多地了解算法以及如何将其应用于数据时,也需要进行一些调整。
那时我想我应该看看是否有人有任何指示。我很难找到有关 influxdb 和网络流量数据的任何示例。这是我第一次涉足这些工具以及如此复杂的“数学”。我怀疑我需要执行一个 TICK 脚本来将输入/输出八位字节数据(分批?)分流到外部进程,该进程将对其进行处理并可能将结果保存回 influxdb 以进行可视化。(至少在我学习的时候。)
我的主要问题是,是否有人可以引用“网络带宽”特定示例来说明如何设置 kapacitor 来处理历史并了解 7 天的 24 小时周期。(因为周末/节假日的模式与正常工作日明显不同。)我不反对使用其他工具/方法,但更愿意在学习这个工具时坚持使用 Kapacitor 和 Influxdb 来帮助学习理论。当系统检测到带宽异常并且检测到它已经结束时,TICK 脚本只会被写入文件。
最后,我还要问我上面描述的方法是否实用?从某种意义上说,我并没有过度估计这些工具的能力,也没有不必要地过度复杂化我的学习场景?
time-series - 为什么我的 LSTM 模型重复以前的值?
我在 Keras 中构建了一个简单的 LSTM 模型,如下所示:
橙色线代表预测值,蓝色线代表大事实。
如您所见,网络重复以前的值,但这不是我想要的。我有几个特征(不仅仅是图片中显示的那个),我希望网络考虑到与其他时间序列的依赖关系,而不是只查看单个的过去数据并重复以前的数据。
我希望问题足够清楚!
我的数据
我有 36 个时间序列(分类和数值数据)。我使用长度为 W 的窗口并重新整理数据,以便以 Keras 所需的形式(num_samples、window、num_features)创建一个 numpy 向量。
编辑 1
个数据样本:
我有一个分类属性和两个数字属性。前三行指的是分类行(分类的one-hot encoding)。最后两个是指两个数字属性。
所以我执行model.fit(T, X)
.
我也尝试过使用少量隐藏节点,但结果是一样的。
编辑 2
考虑使用数值和分类特征的自定义损失函数:
我使用model.fit(T, X)
它是为了知道数字特征在哪里(在矩阵中)。
这是从 2D numpy 数组开始准备数据的函数,如带有 M,T,X 的图片所示: