用于学习用户输入和提供建议的算法

时间:2013-08-28 14:09:36

标签: algorithm graph machine-learning hidden-markov-models markov

我正在寻找一种算法,分别是用于学习某个程序中的用户动作(输入)的方法,并且基于完成的用户动作的构建信息库,向用户提供对未来动作的建议。信息库应该使用相同的软件从多个用户的操作构建。用户操作取决于它们发生的顺序。这意味着,应根据会话中已完成的用户操作建议。会话是一个抽象的时间段,用户可以在其中使用该软件。

在我最初的方法中,我想到了在有向图中修改用户操作,其中每个节点代表一个唯一的用户操作实例。第一次完成的用户操作会生成新节点。节点具有表示用户执行此用户操作的频率的计数器。当用户操作在另一个节点之后完成(建模用户操作序列)时,存在从一个节点到另一个节点的转换。对于每个转换,基于后续节点(即,存在转换的节点)的计数器来计算概率。有一个根节点作为起始点,它指向所有初始节点(在会话中首先完成的用户操作)。这可能是一个(隐藏的)马尔可夫模型,但我不确定。它绝对不是贝叶斯网络,因为它可以是一个循环图(可取)。

此问题是否已有方法,算法,库等?如果没有,我的方法怎么样?任何替代方案,更好的想法?

1 个答案:

答案 0 :(得分:2)

似乎您正在尝试执行“推荐”,在您的情况下,功能是用户完成的“操作”。考虑个性化(基于他/她的行为为每个用户构建模型)或协同过滤(通过寻找类似用户以关联方式构建模型)作为总体方向

您所建议的是类似于HMM,您认为观察是用户操作,状态是用户想要的。根据您的实际应用,这可能有效或无效。

另一种更有前景的模型建模方法是使用先前的用户操作和用户历史作为特征直接构建判别模型(逻辑回归,svm)来预测下一步行动。如果你有足够的数据,那就不错了