Algorithms for learning user inputs, and for offering suggestions

170 views Asked by At

I'm searching for an algorithm respectively a method for learning user actions (inputs) in a certain program, and, based on a built information base of done user actions, to offer suggestions for future actions to the user. The information base should be built from the actions of multiple users using the same software. The user actions are dependent on the order in which they occur. This means, that a suggestion should be made based on already done user actions in a session. A session is an abstract time period, in which the user works with the software.

In my initial approach, I thought of moddeling the user actions in a directed graph, where each node represents a unique user action instance. A user action, done for the very first time, generates a new node. The nodes have a counter representing how often a user did this user action. A transition from one node to another exists, when a user action is done after another one (modelling the sequence of user actions). For every transition, the probability is computed based on the counters of the subsequent nodes (i.e. nodes, to which there is a transition). There is a root node as starting point, which directs to all initial nodes (user actions done first in a session). This could be a (hidden) Markov model, but I am not sure. It is definitely not a Bayesian network, because it can be a cyclic graph (desireable).

Are there already methods, algorithms, libraries etc. for this problem? If not, how is my approach? Any alternatives, better ideas?

1

There are 1 answers

0
dragonxlwang On BEST ANSWER

it seems that you are trying to do "recommendations", where in your case the feature is "actions" done by users. Considering both personalization (which builds model for each user based on his/her behavior) or collaborative filtering (which builds model associatively by finding similar users) as a general direction

What you are suggesting is something like a HMM in which you consider the observation is user action and state is the user intend. Based on your real application, this might work or not.

Another more promising way to model it is to directly build a discriminative model (logistic regression, svm) using the previous user action and user history as feature to predict the next move. If you have enough data, this would work not bad