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

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

我正在寻找一种算法或一种方法,用于在某个程序中学习用户操作(输入),并基于已完成的用户操作的内置信息库,为用户提供 future 操作的建议。信息库应该根据使用同一软件的多个用户的操作来构建。用户操作取决于它们发生的顺序。这意味着,应该根据 session 中已完成的用户操作提出建议。 session 是一个抽象的时间段,用户在此期间使用软件。

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

是否已经有解决这个问题的方法、算法、库等?如果没有,我的方法如何?有什么替代方案、更好的想法吗?

最佳答案

您似乎正在尝试执行“推荐”,在您的情况下,该功能是用户完成的“操作”。将个性化(根据每个用户的行为为每个用户构建模型)或协作过滤(通过查找相似用户关联地构建模型)作为总体方向

您所建议的类似于隐马尔可夫模型(HMM),其中您认为观察是用户操作,而状态是用户意图。根据您的实际应用程序,这可能有效,也可能无效。

另一种更有前景的建模方法是使用之前的用户操作和用户历史记录作为预测下一步 Action 的特征,直接构建判别模型(逻辑回归,SVM)。如果你有足够的数据,这会很有效

关于用于学习用户输入并提供建议的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18490341/

相关文章:

algorithm - 为什么皇后在棋盘覆盖中只有 10 个独特位置?

graph - Titan 需要多大的 Faunus 图形分析框架?

python - kNN 中一个点的最远点

Java:检查字符串是否在字典中

algorithm - 最短路径算法的变体

algorithm - 如果 X ≤ p Y Y ≤ p X 可以吗?

python - 为什么在神经网络中将误差乘以 sigmoid 的导数?

Python:对体素组件进行网格划分以计算表面积

r - 在 r 中添加了置信区间(箱线图和 wisker 图)的 xyplot

python - 针对神经网络 tensorflow 的 1 个标签使用多个实例预处理数据