I started with Emanuele's code and switched to data generated with scikit's "make classification" algorithm. I also added a Jupyter notebook blending demo : https://github.com/denson/kaggle_pbr
The general concept is that if we build multiple different models trained on different samples of our training data we get multiple predictions that are substantially better than chance and that are uncorrelated with each other.
In step 1 we take stratified fold samples of our training data and build multiple models (in this case RDF entropy,RDF-gini ET-entropy,ET-gini and GBT) on each fold. We then use the trained models to predict the training sample not in the training part of this fold. It is super important that you do not use a given model to predict training data that was used to train that model on that fold. We also predict all the test data with each model. These predictions are a way of transforming the training data and the test data into a different space with the predicted probabilities as the transformed information. We take a simple average of the predictions of each type of model (eg RDF-gini) and that becomes the transformed data for the next step. If we have 5 different models as in this case our input data for step 2 will have 5 columns and the same number of rows as the training set and test set respectively.
In step 2 we use a train a logistic regresson on the transformed training data and use it to predict the transformed test data. We take the predicted probabilities from the logistic regression as our final answer.
This method usually results in an improvement over a single highly tuned model for "hard" problems and not "simple" problems. By hard I mean that the decision boundary between classes is highly non-linear. Overlapping classes and non-linear relationships between features contribute to making problems hard.
This academic paper describes the concept:
Stacked Regressions
I found this at Kaggle:
Kaggle competion question
Showing posts with label extremely randomized tree. Show all posts
Showing posts with label extremely randomized tree. Show all posts
Saturday, April 1, 2017
Thursday, December 4, 2014
Visualizing decision trees in scikit-learn
For single decision trees:
http://scikit-learn.org/dev/modules/tree.html
http://stackoverflow.com/questions/10570042/visualizing-a-decision-tree-example-from-scikit-learn
Hints on how to do it for a Random Forest or Extra Tree classifier:
http://stackoverflow.com/questions/17057139/how-to-find-key-trees-features-from-a-trained-random-forest
http://stackoverflow.com/questions/17362576/random-forest-implementation-in-python
http://scikit-learn.org/dev/modules/tree.html
http://stackoverflow.com/questions/10570042/visualizing-a-decision-tree-example-from-scikit-learn
Hints on how to do it for a Random Forest or Extra Tree classifier:
http://stackoverflow.com/questions/17057139/how-to-find-key-trees-features-from-a-trained-random-forest
http://stackoverflow.com/questions/17362576/random-forest-implementation-in-python
Wednesday, September 17, 2014
Decision Forests for Computer Vision and Medical Image Analysis book from Microsoft Research
This is the best resource I have found for understanding and using decision tree based machine learning algorithms. It is very thorough on both theory and practical use with comparisons with other algorithms such as SVM's and AdaBoost.
There are also a bunch of supplemental materials available for free including a very nice PowerPoint with great explanations. The supplemental materials include C++ and C# code.
Decision Forests - Microsoft Research
There are also a bunch of supplemental materials available for free including a very nice PowerPoint with great explanations. The supplemental materials include C++ and C# code.
Decision Forests - Microsoft Research
Decision Forests for Classification, Regression, Density Estimation, Manifold Learning and Semi-Supervised Learning
This technical report from Microsoft Research is an A-Z tutorial on how decision tree machine learning algorithms work. It includes in depth explanations of random forests, extra tree classifiers, random ferns and other variations for both classification and regression.
It is in report format and compares decision forests to other types of machine learning algorithms such as SVM. Some simple toy problems give the basics and some real life applications such as body position recognition and medical image are included.
There is also an accompanying PowerPoint with some nice animations.
http://research.microsoft.com/pubs/155552/decisionForests_MSR_TR_2011_114.pdf is not available
It is in report format and compares decision forests to other types of machine learning algorithms such as SVM. Some simple toy problems give the basics and some real life applications such as body position recognition and medical image are included.
There is also an accompanying PowerPoint with some nice animations.
http://research.microsoft.com/pubs/155552/decisionForests_MSR_TR_2011_114.pdf is not available
Exploiting tree-based variable importances to selectively identify relevant variables
This paper proposes a novel statistical procedure based on permutation tests for extracting a subset of truly relevant variables from multivariate importance rankings derived from tree-based supervised learning methods. It shows also that the direct extension of the classical approach based on permutation tests for estimating false discovery rates of univariate variable scoring procedures does not extend very well to the case of multivariate tree-based importance measures.
jmlr.org/proceedings/papers/v4/huynhthu08a/huynhthu08a.pdf
jmlr.org/proceedings/papers/v4/huynhthu08a/huynhthu08a.pdf
Extremely randomized trees by Pierre Geurts Damien Ernst Louis Wehenkel
This paper proposes a new tree-based ensemble method for supervised classification and regression problems. It essentially consists of randomizing strongly both attribute and cut-point choice while splitting a tree node. In the extreme case, it builds totally randomized trees whose structures are independent of the output values of the learning sample. The strength of the randomization can be tuned to problem specifics by the appropriate choice of a parameter. We evaluate the robustness of the default choice of this parameter, and we also provide insight on how to adjust it in particular situations. Besides accuracy, the main strength of the resulting algorithm is computational efficiency. A bias/variance analysis of the Extra-Trees algorithm is also provided as well as a geometrical and a kernel characterization of the models induced.
orbi.ulg.ac.be/bitstream/2268/9357/1/geurts-mlj-advance.pdf
orbi.ulg.ac.be/bitstream/2268/9357/1/geurts-mlj-advance.pdf
Subscribe to:
Posts (Atom)