Predicting the job switching period of an employee I have a machine learning problem to solve. Given the data about employees, is there a way by which we could possibly predict that when an employee is going to switch his current job?
We can make use of all the publicly available data like the user's public profile on LinkedIn, Stack Overflow, Github etc. (Not sure if we even need these profiles or not). Also, if there is a way to solve the problem using Machine Learning, please suggest me what model should I use for it and the input variable involved.
My current approach involves using a user-user collaborative filtering where we try to predict the employees switching period based on the switching period of similar employees in his/her neighborhood. The parameters that can be used to find similarity among the employees could be:


*

*The time they have spent in their previous companies.

*Their qualifications, like number of degrees, types of companies they have worked in etc.

*Total years of experience.

*Location of the users.


I have't thought deep into the problem yet. I wanted some suggestions before starting with it. Any kind of help on this question will be really appreciated.
 A: This is not really a question one can answer on SO, since a full solution will require iterations by a data scientist looking at the data, an progressively building out a model.
The best we can do in this context is to provide an initial approach that one might follow in the first iterations.  I will make such an attempt here:
It is my guess that the signals that will turn out to be salient will not be deeply interacting (this is a good thing, means we can arrive at a model even with a very large number of features with much less data).  So a classifier simple classifier like naive-bayes would suffice.
The features themselves will be the trick.  It is my intuition that basic demographic data (like years worked, and years at prior company) etc. combined into a few features that could provide some background estimate of the likely hood of switching jobs  (for example the percentage that the current job stay is of the average over prior job stays, etc.)  But the real timely indicators will probably come from social signals like changes to ones linked-in profile, number of new linked-in contacts created per week, spikes in tweeting behavior, etc.
The idea here would be to create dozens of hypotheses about things people do when getting ready to switch jobs, and the creating data features that could detect such shifts.
After building the best demographic model I could, and building the best social signals model I could, then I would look for ONE level of interacting features.
Specifically I would look to see if there were secondary tempering signals that would suggest cases where a social signal did or did not indicate a job move.
One would use ones training data to search for all pairs of features where P(job-change|f1) was quite different from P(job-change|f1,f2).  These are cases where a secondary signal is providing confirming evidence of intent to change jobs, or an alternate explanation for the signal.
e.g. for example a spike is tweets is an interesting signal, and is more interesting in the context of a edits the the social profiles on line, but is less interesting in the context of an annual conference where many of their peers in the same linked-in groups also show a spike in postings.
It is the idiosyncratic analysis of these signals that will really pay off in the biggest ways.
