Showing posts with label leo breiman. Show all posts
Showing posts with label leo breiman. Show all posts

Thursday, February 6, 2014

Random Forest Almighty

Random Forests are awesome. They do not overfit, they are easy to tune, they tell you about important variables, they can be used for classification and regression, they are implemented in many programming languages and they are faster than their competitors (neural nets, boosting, support vector machines, ...)

Let us take a moment to appreciate them:




The Random Forest™ is my shepherd; I shall not want.
     He makes me watch the mean squared error decrease rapidly.
He leads me beside classification problems.
    He restores my soul.
He leads me in paths of the power of ensembles
    for his name's sake. 

Even though I walk through the valley of the curse of dimensionality,
    I will fear no overfitting,
for you are with me;
    your bootstrap and your randomness,
    they comfort me.

 You prepare a prediction before me
    in the presence of complex interactions;
you anoint me data scientist;
    my wallet overflows.
 Surely goodness of fit and money shall follow me
    all the days of my life,
and I shall use Random Forests™ 
    forever.


Joke aside: Random Forests proved to give very stable and good predictions in many prediction settings (like in the See Click Predict Fix kaggle challenge, in which the winner used the Random Forests implementation in R), but they are not the solution to all problems. In a very simple setting, where the true relationship between the response and the covariates is linear, a linear model will perform better than a random forest. You find a good explanation why this happens on Cross Validated.
One thing I learned the hard way was that you should not get to attached to an algorithm for prediction. This probably applies to other areas as well. When I participated in the Observing Dark Worlds challenge, I  fell into this trap by sticking to Random Forests. My model performed poorly, but instead of thinking about another algorithm I thought about better features. The winner of this competition used a Bayesian approach.

You can find implementations in R (randomForest package) or in Python (scikit-learn library).

Monday, January 20, 2014

Statistical modeling: two ways to see the world.

This a machine-learning-vs-traditional-statistics kind of blog post inspired by Leo Breiman's "Statistical Modeling: The Two Cultures". If you're like: "I had enough of this machine learning vs. statistics discussion,  BUT I would love to see beautiful beamer-slides with an awesome font.", then jump to the bottom of the post and for my slides on this subject plus source code.

I prepared presentation slides about the paper for a university course. Leo Breiman basically argued, that there are two cultures of statistical modeling:
  • Data modeling culture: You assume to know the underlying data-generating process and model your data accordingly. For example if you choose to model your data with a linear regression model you assume that the outcome y is normally distributed given the covariates x. This is a typical procedure in traditional statistics. 
  • Algorithmic modeling culture:  You treat the true data-generating process as unkown and try to find a model that is good at predicting the outcome y given the covariates x. So you basically try to find a function of your covariates x that minimizes the loss between prediction and true outcome y. This culture is associated with machine learning. 
Breiman was a supporter of the algorithmic modeling culture and argued that in many cases this culture is superior to the other. I recommend to read the paper when you have a quiet hour. I think it is a compulsive reading for everyone who seriously analyses data. 

The paper is 13 years old and I guess most people in the statistics community still live the data modeling culture (at least at the statistics department where I study). But the world is not black and white: There are also professors and research associates who research in the field of the algorithmic modeling culture: Extention of boosting algorithms to a more flexible model class, introduction of permutation tests to random forests, study of the effect of different cross validation schemas, ... Not only can the traditional statistics be enhanced by machine learning, but there is also a need to bring more statistics into machine learning. I think there is a lot of room for mutual benefit

My personal opinion on this subject is very pragmatic. I use predictive accuracy now more often as an evaluation of model goodness and added Random Forests, (Tree-) Boosting and others to my tool kit. But sometimes it is okay to pay some MSE, AUC or Gini to replace a complex random forest with a glm with a nice interpretation. Even if you assumed the wrong data-generating process, your conclusions from the fitted model is not deadly wrong in most cases. 

So here are the slides. They contain notes so they should be easy to follow:
If you want to now how to reproduce them please visit my Github account.








Explaining the decisions of machine learning algorithms

Being both statistician and machine learning practitioner, I have always been interested in combining the predictive power of (black box) ma...