1

目前我正在为我的电子商务服务器构建我的监控服务,主要关注 CPU/RAM 的使用。这可能是对时间序列数据的异常检测。

我的方法是构建 LSTM 神经网络来预测图表趋势上的下一个 CPU/RAM 值,与 STD(标准偏差)值乘以某个数字(当前为 10)进行比较

但在现实生活条件下,它取决于许多不同的条件,例如:

1- 维护时间(此时“异常”不是“异常”)

2- 休息日、节假日等销售时间,RAM/CPU 使用率增加是正常的,当然

3- 如果 CPU/RAM 减少的百分比在 3 次观察中相同:5 分钟、10 分钟和 15 分钟 -> 异常。但是如果 5 分钟减少了 50%,但 10 分钟并没有减少太多(-5% ~ +5%)-> 不是“异常”。

目前我在公式上检测到异常,如下所示:

isAlert = (Diff5m >= 10 && Diff10m >= 15 && Diff30m >= 40)

其中 Diff 是绝对值的不同百分比。

不幸的是,我没有保存我的“纯”数据来构建神经网络,例如,当它检测到异常时,我修改它不再是异常。

我想为模型的输入添加一些属性,例如isMaintenance、isPromotion、isHoliday 等,但有时会导致过度拟合。

我还希望我的 NN 可以随着时间的推移调整基线,例如,当我的服务更受欢迎时等。

这些目标有什么提示吗?

谢谢

4

1 回答 1

1

我会说异常是一个不寻常的结果,即在给定输入的情况下不预期的结果。如您所见,预计有一些变量影响 CPU 和 RAM 的使用。那么,为什么不将它们提供给网络呢?这就是机器学习的全部意义所在。您的网络将根据销量、是否存在(或曾经)维护窗口等因素来预测 CPU 使用率。

isPromotion请注意,如果您包括实际销售量,您可能不需要输入。前者是离散输入,仅捕获totalSales输入中存在的一小部分信息

机器学习肯定需要数据。如果你把它扔掉了,你将不得不重新开始捕捉它。至于调整基线,您可以通过加权最近的输入数据来实现。

于 2018-01-31T16:18:31.303 回答