# A machine learning application question

I am familiar with basic probabilities, random processes but not so much of machine learning methods. This is the problem I am trying to solve.

I want to predict the nature of user activity on a social network. Given that a user has $x$ posts that were his own (original) and $y$ posts that were reactions to friends I want to know what is the probability that his next post will be

(a) Original or Influenced by friends (b) If Influenced what is the probability that it will come from a particular connection

• I am not aware of machine learning approaches but one thing that occurs to me is that the probability might be conditional on the previous type of post. For example 2 consecutive originals are less likely than one original followed by one post motivated by friends who commented on the original post. – Fernando Pimentel May 23 '13 at 20:10

I'm not sure I see a clear question. Yes, this is studied in machine learning. It's related to data compression, too. If you can model a stream of bits more accurately, then you can compress it more efficiently.

One tool which has been used well recently is a recurrent neural network. See Sustskever, Martens, Hinton. "Generating Text with Recurrent Neural Networks." ICML 2011. Hinton has argued that recurrent neural networks are much more efficient than a hidden Markov model, but they have been hard to train until recently. They had some cute applications, such as training a neural network to predict English Wikipedia pages character by character, which works surprisingly well at generating plausible phrases. Even though it generates the text character by character, sampling from the predicted distribution of characters, it rarely makes spelling errors, nor is it stuck in a loop like "the United States of the United States of the ..." which happens if you just take the most likely character. Then they started the neural network with, "The meaning of life is" and checked what continuations their model generated.

Recurrent neural networks ignore timing and other information that you might have about the past actions. You may adapt the techniques to use some of that information.

I don't know if you know the time stamp of each post. If not, then one possible model is that for each node $i$ with state $(x_i, y_{i1}, y_{i2}, \ldots, y_{ij})$, where $x_i$ is the number of original post for user $i$ and $y_{ij}$ is the number of posts influenced by other user $j$, define the probability model as follows:

$$P(\mathrm{next\ post\ is\ original\ for\ user\ }i) = \frac{x_i}{x_i+y_i + \alpha}$$ where $y_i = \sum_{j} y_{ij}$.

Similarly, if user $i$ and user $j$ is previously connected, then

$$P(\mathrm{next\ post\ of\ user\ }i\ \mathrm{is\ related\ to\ user\ }j) = \frac{y_{ij}}{x_i+y_i+\alpha}$$

And with probability $\alpha/(x_i+y_i+\alpha)$, user $i$ will react on a post by user $j$, who has not been connected before. In both cases, $\alpha > 0$ is a tunable constant.

This model is similar to Chinese Restaurant Processes. See link text. The intuition is that if a user $i$ has been connected to $j$ for many times, then he/she is likely to have more connections in the future. Similarly, if a user tends to post originally for many times, then he will behave similarly in the future.