Is it possible to build a statistical model that predicts the next move in a graph solely based on past movements and the structure of the graph?
I have made an example to illustrate the problem:
- Time is discrete. In every round you either stay at your current node/vertex or you move to one of the connected nodes. Since time is discrete and you at most can advance one node each round there is no velocity.
- Past route / movement history: {A, B, C} -- And the current position is: C
Valid next moves: C, B, X, Y, Z
- If you choose C you stay fixed,
- if B you move backwards,
- and if X, Y, or Z implies moving forward.
There are no weights on either links or nodes.
- There is no final destination node. Part of the movement behaviour observed is random and part of it will have some regularity to it.
A very simple model -- that does not take account of the movement history -- would just predict that C, B, X, Y, and Z each had a 1/5 probability to be the next move.
But based on the structure and the movement history, I am guessing it is possible to make a better statistical model. Fore instance X should have a lower probability, since one could have moved there directly from node B in the previous round. Similarly B should also have a lower probability since the person could have remained fixed in the previous round.
If the user moves back to B, then the movement history will look like this {A, B, C, B} and the valid moves will be A, B, C, D, E, X. Moving to C should have lower probability, since you could have remained fixed. Moving to X should also have a lower probability, since you could have move there from C in the previous round. Earlier history may also influence the prediction, but should be given less weight than recent history -- ie. 2 rounds ago you could have stayed in B, or you could have moved to A, D, E, X -- 3 rounds ago you could have stayed at A.
Looking around I discovered that similar problems are faced in:
- mobile telecommunication, where the operaters try to predict which cell tower the user will move to next so they can smoothly hand over the call/data transmission.
- web navigation, where browsers/search engines try to predict which page you will go to next such that they can pre-load and cache the page, such that waiting time is reduced. Similarly map applications try to predict which map tiles you will request next, and preload these.
- and of course the transport industry.