我正在寻找一种算法或方法,用于学习用户在特定程序中的操作(输入),并基于已建立的用户操作信息库,向用户提供未来操作的建议。信息库应由使用同一软件的多个用户的操作构建。用户操作取决于它们发生的顺序。这意味着,建议应基于用户在一次会话中已完成的操作。会话是一个抽象的时间段,用户在此期间使用软件。
在我的初步方法中,我考虑将用户操作建模为一个有向图,其中每个节点代表一个独特的用户操作实例。首次执行的用户操作会生成一个新节点。节点有一个计数器,表示用户执行此操作的频率。当一个用户操作在另一个操作之后执行时,就存在从一个节点到另一个节点的转换(模拟用户操作的序列)。对于每次转换,根据后续节点的计数器计算概率(即,有转换的节点)。有一个作为起点的根节点,指向所有初始节点(会话中首先执行的用户操作)。这可能是一个(隐藏的)马尔可夫模型,但我并不确定。这肯定不是贝叶斯网络,因为它可以是一个循环图(这是可取的)。
对于这个问题,已经有方法、算法、库等了吗?如果没有,我的方法如何?有替代方案或更好的想法吗?
回答:
看起来你在尝试做“推荐”,在你的案例中,特征是用户执行的“操作”。考虑到个性化(基于用户行为为每个用户构建模型)或协同过滤(通过寻找相似用户关联性构建模型)作为一个总体方向
你建议的类似于HMM,其中你认为观察是用户操作,状态是用户意图。根据你的实际应用,这可能有效也可能无效。
另一种更有前景的方法是直接构建一个判别模型(逻辑回归、SVM),使用之前的用户操作和用户历史作为特征来预测下一步行动。如果你有足够的数据,这将效果不错