You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从序列集中挖掘带变量推断的通用序列模式?

带可变事件的序列公共特征提取问题

问题说明

需要从一组序列中提取能覆盖所有序列公共特征的模式序列。这类序列是事件的有序列表,每个事件为特征多重集(bag)——事件内元素可重复、顺序无关,但序列中事件的顺序固定。

单个序列示例

[{'a', 'y'}, {'H', 'b'}, {'C', 'F', 'c'}]

输入输出示例

输入序列集

[
[{'a', 'y'}, {'H', 'b'}, {'x'}, {'C', 'F', 'c'}],
[{'a', 'd'}, {'b', 's'}, {'l'}, {'F', 'c', 'k'}],
[{'J', 'a'}, {'H', 'b'}, {'b'}, {'c', 'c', 'm'}],
[{'W', 'a'}, {'H', 'b'}, {'m'}, {'K', 'c', 'z'}],
[{'a', 'h', 'm'}, {'L', 'b', 'y'}, {'b', 'x'}, {'H', 'c', 'g'}]
]

期望输出

[{'a', '*'}, {'b', '*'}, {'*'}, {'c', '*', '*'}]

输出含义

  • 所有序列的第一个事件必含固定元素'a',且至少带一个可变元素(用*表示);
  • 第二个事件必含固定元素'b',且至少带一个可变元素;
  • 第二个事件与最后一个事件之间,存在至少一个包含任意元素的事件(用单独*表示);
  • 最后一个事件必含固定元素'c',且至少带两个可变元素。

传统算法的局限性

传统序列模式挖掘算法(如BIDE、PrefixSpan、Apriori等)仅能处理元素固定的事件序列,无法识别这类包含可变元素的事件模式。

以下是用Python prefixspan包测试PrefixSpan算法的结果,完全无法得到预期模式:

测试代码

from prefixspan import PrefixSpan

# 函数要求事件为可哈希类型,因此将每个事件转为元组
db = [[('y', 'a'), ('H', 'b'), ('x',), ('F', 'C', 'c')],
     [('a', 'd'), ('b', 's'), ('l',), ('F', 'k', 'c')],
     [('J', 'a'), ('H', 'b'), ('b',), ('m', 'c')],
     [('a', 'W'), ('H', 'b'), ('m',), ('z', 'K', 'c')],
     [('h', 'm', 'a'), ('b', 'y', 'L'), ('x', 'b'), ('g', 'H', 'c')]]

# 初始化PrefixSpan对象
ps = PrefixSpan(db)

# 获取支持度为5(覆盖所有序列)的闭序列模式
print(ps.frequent(5, closed=True))

>>[]

将支持度降至2时,结果仅为:

print(ps.frequent(2, closed=True))
>>[(3, [('H', 'b')])]

内容的提问来源于stack exchange,提问作者Leen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:01:28