我有一堆(数百万)小实验的日志。
每个日志都包含一个条目列表(数十到数百个)。每个条目是一个时间戳和一个事件 ID(有数千个事件 ID,每个可能在日志中出现多次):
1403973044 阿尔法 1403973045 测试版 1403973070 伽玛 1403973070 阿尔法 1403973098 三角洲
我知道一个事件可能会在以后触发其他事件。
我正在研究这个数据集。我正在寻找在实验中经常发生的“稳定”事件序列。
有没有办法在不编写太多代码且不使用专有软件的情况下做到这一点?该解决方案应该具有足够的可扩展性,并且可以处理大型数据集。
我认为这个任务类似于生物信息学所做的——在 DNA 中寻找序列等。只有我的任务在一个字母表中包含四个以上的字母......(更新,感谢@JayInNyc:蛋白质组学处理比我更大的字母表。)
(注意,顺便说一句,我事先不知道我想要我的序列有多稳定和相似,最小序列长度是多少等。我正在研究数据集,并且必须在旅途中弄清楚这一点。)
无论如何,对我可以使用的方法/工具/库有什么建议吗?
更新:评论中问题的一些答案:
稳定序列:在实验中经常发现。(多久才够?还不知道。看来我需要计算链的顶部,并丢弃最稀有的。)
相似序列:看起来相似的序列。“根据您,序列'ABCD E'和'ABCE D'(序列上的微小差异)是否相似?序列'ABCD E'和'ABC 1 D E'(所选事件的发生顺序相同)是否也相似给你?” ——对这两个问题都是。更剧烈的突变可能也可以。同样,我希望能够计算出一个顶部并丢弃最不同的......
计时:我现在可以丢弃计时信息(但不能丢弃订单)。但是将它放在相似性指数公式中会很酷。
更新 2:预期输出。
最后,我想对最受欢迎的最长稳定链进行评级。所有三个因素的组合都应该对评分的计算产生影响。
显然,这种评级中的链更像是足够相似的链的集群。
链簇的合成示例:
α 测试版 伽玛 [垃圾] [垃圾] 三角洲
其他:
α 测试版 伽马|zeta|ε 三角洲
(或者我现在没有想到的任何变体。)
所以,最终输出会是这样的(在这个例子中数字是完全随机的):
链簇ID | 发现时间 | 时间刺。因素 | 链刺。因素 | 长度 | 分数 一个 | 12345 | 123 | 3 | 5 | 100000 乙| 54321 | 12 | 30 | 3 | 700000