如何从数据集开始预测?

数据挖掘 机器学习 预测建模 阿帕奇火花
2021-10-09 09:43:41

我在无事实表中有事件数据集。它有事件列表

timestamp-> event name -> node ( In network)

总是有一系列事件发生。那么如何根据过去的事件开始预测未来的事件并发现将受过去经验影响的节点列表。

我是没有机器学习知识的程序员。我已经安装了 spark、R 并在 oracle 数据库中有数据集。是否有任何教程/算法可以用来入门。我自学了 scala/R,但不知道如何开始。我的数据集很大,即 3 个月内超过 90 亿行。

Node            Eventtime       alarmname
192.168.1.112   6/14/2016 19:41 Main power supply has a fault alarm
192.168.1.113   6/14/2016 19:23 Association path broken
192.168.1.113   6/14/2016 19:23 NA
192.168.1.113   6/14/2016 19:23 Association broken
192.168.1.112   6/14/2016 19:23 Mains Failure
192.168.1.112   6/14/2016 19:23 Mains Failure

附加信息:

我有 98 个节点。我想预测:

一世。单个节点宕机时有报警或宕机的节点数 例如,如果节点 A 有报警,如果在 1 个月内同时有报警的节点列表

ii. 事件发生的顺序,即如果一个节点发生电源故障,那么下一个事件将是节点停机。

2个回答

您面临的问题是时间序列问题。您的事件是分类的,这是一种特殊情况(因此最常见的技术,如arima傅里叶变换是无关紧要的)。

在进入分析之前,尝试找出节点之间的事件是否独立。如果它们是独立的,您可以将它们分解为每个节点的序列并分析它们。如果它们不是(例如,节点 x 上的“主电源有故障警报”指示节点 y 上的相同事件),您应该组合序列。有时即使序列是依赖的,您也可以从使用每个节点序列作为额外数据中获益。

您的数据集非常大,这意味着计算需要时间。您的数据可能很嘈杂,因此您可能会遇到一些错误。因此,我建议从简单的模型逐步推进到更复杂的模型。

从描述性统计开始,只是为了探索数据。你有多少活动?它们有多常见?你试图预测的事件的概率是多少?您能否删除一些无意义的事件(例如,通过使用领域知识)?

如果您有领域知识表明最近的事件是重要的,我会尝试根据最后的 n 个事件进行预测。从 1 开始并缓慢增长,因为组合的数量会增长得非常快,并且每个组合的样本数量会变小并且可能会引入错误。

如果重要事件不是最近发生的,请尝试以过去的这些事件为条件。

在大多数情况下,这种简单的模型将帮助您稍微高于基线,但不会太多。然后您将需要更复杂的模型。我建议使用适合您的情况并具有大量实现的关联规则。

您可以进一步推进,但首先尝试这些技术。

前面提到的技术将为您提供一个模型,该模型将预测节点关闭的概率,回答您的问题 (ii)。在节点序列上运行它将使您能够预测无法回答问题 (i) 的节点数。

对于您提到的目标,将有很多后续步骤(基于步骤 1 中的结果)。我提到了将分析提升到新水平的开始步骤。

对于第一个目标,您可以计算某个时间窗口时间范围内每个节点的简单条件概率。在这里,您将看到每个节点如何影响其他节点。此外,探索数据上的贝叶斯网络。对于第二个要求,正如 Dan Levin 所建议的,关联规则是一个很好的起点。为了简化流程,您可以从可用事件中的两个主要事件(可能是电源故障和关联路径断开)开始。将关联规则中的 RHS 修复为提到的两个主要事件。LHS 将是在 RHS 事件之前发生的事件(考虑一些时间窗口)。现在对数据运行关联规则。您将能够找到所考虑的两个事件的一些前兆。您可以在以下论文中找到 Spark 中关联规则的实现:

R-Apriori:基于 Spark 的高效 Apriori 算法

链接:http ://www.iith.ac.in/~mkaul/papers/pikm09-rathee.pdf

此外,要使用关联规则进行预测,考虑以下几点将有助于

  1. LHS 和 RHS 之间必须存在时间滞后,即前件(如果一个节点发生电源故障)和规则的结果(下一个事件将是节点关闭)之间的时间间隔

  2. 预测规则必须相对于应用领域确定的时间范围有相对稳定的置信度,即对整个 3 个月的数据运行关联规则,你会得到一些有一定置信度的规则。现在按月运行关联规则并查看相同规则的置信度,如果置信度一致,您可以自信地使用这些规则进行预测

更多详情请参考:

http://link.springer.com/chapter/10.1007%2F11548706_11#page-1

您还可以通过考虑 LHS 中的节点 1 并考虑 RHS 中节点 1 事件之后的所有事件来使用目标 1 的关联规则。

希望这可以帮助!!!