检测和存储路径组合以便以后分析的最佳方法

时间:2010-10-30 01:27:52

标签: path storage design-patterns pattern-recognition

我正在寻找关于如何从用户存储路径模式的想法/示例 - 目的是分析他们的行为并优化“最常用的路径”,当我们以某种方式检测它们时。

EG。他们之后采取了哪些行动,以便我们以后可以检查某些行动是否一遍又一遍地进行 - 从而开发一条捷径或将一些行动组合成一个综合的多重行动。

我的第一个猜测是某种“简单日志”,可能以某种SQL方式存储,我们可以将每个操作保存为索引,然后记录所有内容。

问题是路径/动作可能会动态改变 - 即使在记录时 - 所以我们也需要能够在以后查找模式时处理这个事实。

您是否会首先记录“bigtime”,然后在一段时间后对每一段细节进行POST处理,或者您是否对其他策略有很好的经验?

我担心这会占用空间,大量时间,每天记录1000个用户一个月或更长时间。

希望这是有道理的,我很想知道是否有人可以提供示例代码,伪代码或者链接到有用的东西。

我们的工具将是C#,SQL数据库,XML和.NET 3.5 - 如果需要,客户端也可以获得.NET 4.0。

我们期望的模式示例

...
User #1001: A-B-A-A-A-B-C-E-F-G-H-A-A-A-C-B-A
User #1002: B-A-A-B-C-E-F
User #1003: F-B-B-A-E-C-A-A-A   
User #1002: C-E-F
...

等。没有真正的方法可以知道他们接下来会做什么,也不知道他们会使用多少,他们会多久做一次。

如果可能的话,如果我们以后添加一个名为G的新“动作”(仅用于说明,将会有数百个动作),我们如何检测这些新行为对先前模式的影响,这是次要目标。

为了更好地解释它,我的想法是在某种程度上检测“模式中的模式”,有点像压缩如何工作,所以“重复模式”是spottet。我们不知道这些模式可能有多长,也不知道它们可能会出现多长时间。我们如何将其分解为“小点点” - 你认为最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

我不确定你的路径是什么意思,但是,如果你在路径中给每个动作一个唯一的符号,你可以将问题减少到最长的公共子串或子序列。

或者有一个路径映射到行动发生的次数。每当某个路径发生时,增加该路径的计数。然后排序找到最常见的。

答案 1 :(得分:0)

到目前为止的伪想法/实施

  1. 将用户操作记录到列表/一系列操作中,批量有点样式(textfiles / SQL - 无论如何,只存储整个事务以进行后处理)

  2. 开始计算每个“1个动作”,“2个动作”,“3个动作”直到一定数量(比如说30个等级)

  3. 通过为某些操作提供重要值(可能是产生最终结果的那些)来对它们进行排序

  4. 也许有用的结果?

    如果我们计算所有[A],[AA],[AB],[AC],[AAA],[AAB]等等,它会生成一个很长的列表,列出了经常在行中使用的动作,这是正确的方向,因为如果其中一些结果太高,我们可能需要更短的路径。那么问题是,要优化的动作太少,需要搜索最长的动作列表是什么?我的猜测是我们需要先计算,然后检查数字。

    问题是,这将是我们正在开发的分析工具的一部分,我们在实现之前没有数据,因此我们不知道在实际完成之前要查找什么。嗯...想知道这个答案是否确实存在。