如何表示多渠道事件序列

时间:2016-07-13 19:57:22

标签: sequence sequences traminer complex-event-processing

我尝试使用TraMineR,但我愿意接受反馈/参考/链接,了解如何表示多渠道或分层事件序列以及处理它的算法。

我有一个复杂的事件结构,我试图弄清楚如何表示为一个序列。有不同类型的事件。每种事件类型可以具有不同的字段集(以及不同数量的字段)。例如,age可能是一种事件类型中的字段,而height可能是另一种事件类型中的字段。我的第一直觉(我相信一种常见的方法)就是“压扁”一切,例如:事件的每个可能的值组合构成唯一的事件类型。但是,这可能会错过通用事件类型中的模式。

例如,让我们说我是一只狗饲养员,喝了很多咖啡,我想知道我的咖啡/狗的购买习惯是否有模式(是的,愚蠢的例子)。我可能会有以下活动:

- Bought dog
- Breed: hound
- Sex: female

- Bought coffee
- Store: Starbucks
- Roast: dark

- Bought dog
- Breed: hound
- Sex: female

- Bought coffee 
- Store: Starbucks
- Roast: light

- Bought dog
- Breed: Doberman pincher
- Sex: male

为了平整数据,我可以说商店和烤肉的每个独特组合都是独特的咖啡购买活动。此外,品种和性别的每一个独特组合是一个独特的狗买事件。这种方法将上面的例子变成5种不同的事件类型(而不是带有字段的2种事件类型)。这种表现形式可以检测到以下模式:如果我从星巴克喝2种黑咖啡,那么我更有可能是男性的杜宾咖啡。

但是,这种表示可能会错过更多不依赖于事件中字段值的一般模式。例如,一般情况下,我可能只是在买了两只咖啡后才买狗。

我希望能够在两个"水平上检测到模式"我不确定如何代表这样做的事件。当然,一种方法是使用两种表示,然后将两者的结果结合起来。

所以,问题是: 1.与论文有关的任何链接/引用? 这是一个常见的问题吗? 3.有关如何代表这些事件的任何建议? 4.有关如何在TraMineR中使用它们的任何建议 5.对处理此类事情的算法的任何建议/链接/参考? 6.有什么想法吗?

感谢!!!

1 个答案:

答案 0 :(得分:2)

这实际上与此处提出的问题类似(虽然他们不知道引用“多渠道”且标题含糊不清):Multiple events in traminer

TraMineR支持处理具有以下功能的多通道序列: seqdistmc

我认为,一般的做法是完全按照我所说的“扁平化”解决方案。在这种情况下,您将每个通道的值组合为一个事件类型。例如在我的示例中,dog.hound.female将是一个具有一个通道/字段的事件,以替换我的示例中具有3个单独字段/通道的第一个事件。然后,您可以使用典型函数来查找距离,子序列等。您可以选择设置替换成本和查找距离,因此它有一些额外的选项可用于执行此多通道方法。如果您的通道长度不同或有间隙,它还会处理缺失值。

这也与使用原生R函数interaction在上面链接的主题的答案中建议的类似。