如何找到特征之间的相关性?

数据挖掘 机器学习 Python 相似 相关性
2022-02-28 22:44:56

问题

我想弄清楚路由器之间是如何相互关联的。就像,如果路由器 A 中发生了特定错误,而路由器 B 中几乎同时发生错误,它们之间可能有某种联系(在一条线上)。

数据

假设我有一个如下所示的数据框:

|Router|Error|Duration|Timestamp          |    
|DB-XX |GSM  |26.5374 |2019-05-01 00:20:14|     
|DT-XY |AUC  |15.5400 |2019-05-01 01:15:01|     
|DR-YY |AUC  |02.0333 |2019-05-01 01:17:13|     
|DP-YX |LOC  |45.2609 |2019-05-01 00:01:10|    

问题

处理它的最佳方法是什么?每个路由器的回归(一个与其余)?问题是,有数百个模型,我还想降低计算成本......

2个回答

Pandas 中的盲目虚拟编码错误会在不同类型的错误之间引入不合理的数值关系,这无助于您找到真正的相似性。

首先,您希望将数据转换为每个路由器的时间序列数据,并针对每个错误以相等的时间步长进行采样。发生错误的时间步长为1s,不发生的时间步长为0s。这样,您将每个路由器的数据转换为每个特定错误的二进制向量

接下来,计算二进制向量之间的 Pearson 或 Spearman 相关性并不是一个好主意。正如这里出色地解释的那样,

对于一些涉及 0 和 1 的问题,例如在时间或空间中的二进制过程的研究中,相关性自然会出现。然而,总体而言,将有更好的方式来思考这些数据,这在很大程度上取决于此类研究的主要动机。例如,相关性很有意义这一事实并不意味着线性回归是对二元响应建模的好方法。

您想使用专为二进制向量设计的相似度度量。例如,Jaccard Similarity计算联合上的交集(两个向量为一的次数除以任一向量为一的次数)是一个不错的选择。可以在本文中找到此类相似向量的一个很好的总结。

涉及这些相似性计算的计算不会是计算密集型的。

根据数据的稀疏性,最好进行频繁项集挖掘,以便您知道何时发生错误,哪些路由器一起关闭。

相关性是当两个特征具有相同数量的总观察值时可以使用的度量。鉴于您的情况,每个路由器可能会失败的次数不同。因此,我们无法估计两个路由器之间的相关性,因为它们将具有不同数量的观察值。

您可以做的一件事是使用提供的持续时间和开始时间将每个路由器转换为时间序列信号。然后你可以计算相关性。但是,它可能无法真正提供实际情况的信息,因为信号主要是稀疏的