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

我正在寻找一种算法或方法,用于学习用户在特定程序中的操作(输入),并基于已建立的用户操作信息库,向用户提供未来操作的建议。信息库应由使用同一软件的多个用户的操作构建。用户操作取决于它们发生的顺序。这意味着,建议应基于用户在一次会话中已完成的操作。会话是一个抽象的时间段,用户在此期间使用软件。

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

对于这个问题,已经有方法、算法、库等了吗?如果没有,我的方法如何?有替代方案或更好的想法吗?


回答:

看起来你在尝试做“推荐”,在你的案例中,特征是用户执行的“操作”。考虑到个性化(基于用户行为为每个用户构建模型)或协同过滤(通过寻找相似用户关联性构建模型)作为一个总体方向

你建议的类似于HMM,其中你认为观察是用户操作,状态是用户意图。根据你的实际应用,这可能有效也可能无效。

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注