查找数据中的重复模式

数据挖掘 机器学习 模式识别
2022-02-05 18:35:34

我有多个动物的顺序事件数据库。事件由整数表示,因此它看起来像:

Animal A: [1,6,4,2,5,7,8] 
Animal B: [1,6,5,4,1,6,7]
Animal C: [5,4,2,1,6,4,3]

我可以手动看到每个事件 6 事件 1 首先发生。事件 4 在 1,6 组合后迅速发生。但这些在如此小的数据集中很容易发现,真正的列表是每只动物 10000 多个事件。有没有办法使用算法或机器学习来搜索这些类型的模式?

2个回答

有几种方法可以解决这个问题。最终,这将取决于您的数据代表哪种方法最适合。一些选项包括:

序列挖掘:

  • n-gram 频率。您可以将 tf-idf 标记器应用于您的数据以生成不同大小的矩阵n1,n2,...nx克。这将在您的数据中产生集合组合的普遍性,包括 [1,6] 和 [1,6,4]。
  • 设置相似度。上述 ngram 方法假设模式是集合。其中 [1,6,4] 和 [1,6,5,4] 是不同的。然后,您可以应用一些相似性分数来找到相似的集合,例如每只动物内部和之间的 jaccard。

然后根据所识别集合的数量和相似性的某种度量来比较每只动物。

相关性和时间序列:

这不会找到独特的模式和序列本身,但会产生序列相似性的信息。

  • 滑动窗口。您可以在系列上传递不同大小的滑动窗口来计算滚动平均值和总和。然后应用相关性、协方差和时间序列分析来确定每个动物作为一个系列的相似性。同样,这取决于您的数字数据值代表什么,这是否适用。

我认为这个问题可以表示为Markov Chain

也许可以使用马尔科夫模型(或马尔科夫随机场)来估计概率。通常它比使用更标准的隐马尔可夫模型更容易,因为没有隐藏状态。

我的建议是从数据中估计模型(参数)的概率,然后应该更容易根据这些概率发现模式。