EpistasisLab / EpistasisLab/tpot
TPOTEnsemble idea
- Dominant language
- Jupyter Notebook
- Stars
- 10.1k
- Forks
- 1.6k
- PR merge metrics
- No merged PRs in 30d
Description
Many people have been asking for a version of TPOT that creates ensembles of pipelines, as that's what often wins Kaggle competitions etc. We've created prototypes of TPOT that ensemble the Pareto front or final population, but those prototypes didn't work so well because TPOT pipelines are optimized to perform well on a dataset by themselves. In other words, there is no pressure from TPOT to create pipelines that work well with other pipelines.
Here's my proposal for allowing TPOT to create ensembles of pipelines: What if we treated the TPOT optimization procedure as a sort of boosting procedure? It could work as follows:
1) Create initial population (P0) and evaluate them on the dataset as normal.
2) Take the best pipeline from P0 and put it into a [VotingClassifier](http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.VotingClassifier.html)
3) Generate the next population (P1) using the normal fitness scores.
4) When evaluating the individuals in P1, their fitness is computed by evaluating them in the VotingClassifier with the best pipeline from P0
5) Take the best pipeline from P1 and put it into the VotingClassifier with the best pipeline from P0
6) Generate the next population using these "ensemble fitness scores"
7) Evaluate the pipelines in the new generation by evaluating them in a VotingClassifier with the best individuals from the previous generations
8) etc.
That way, TPOT is directly optimizing for pipelines that ensemble well with the previously-best pipelines, and the final ensemble is composed of one pipeline from each generation. Is this idea crazy enough to work?
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.