Tree-based models
TODO:
- https://medium.com/ai-in-plain-english/hyperparameter-tuning-of-decision-tree-classifier-using-gridsearchcv-2a6ebcaffeda
- Puesta en producción
Software
Sklearn proprocina muchos modelos de árbol como DecisionTree, RandomForest, ExtraTrees, AdaBoost y GradientBoosting. Lo malo de esta librería es que todos lo modelos corren sobre CPU y no GPU | |
dtreeviz |
dtreeviz es una librería para dibujar árboles de decisión. Actualmente tiene soporte para scikit-learn y XGBoost. |
La librería CuML de RAPIDS ofrece una implentación de RandomForest haciendo uso de la GPU para construir varios árboles en paralelo. | |
XGBoost significa eXtreme Gradient Boosting, y es una implementación de Gradient boosting diseñada para minimizar la velocidad de ejecución y maximizar el rendimiento. Es uno de los algoritmos que más domina recientemente en los problemas Machine Learning y las competiciones de Kaggle con datos estructurados o tabulares. | |
LightGBM es la implementación de Gradient boosting de Microsoft. Suele ofrecer buenos resultados en precisión y sobre todo en rendimiento (entrena más rapido que XGBoost). | |
CatBoost es una implementación de Gradient boosting desarrollada por Yandex especializada para trabajar con datasets con variables categóricas. Ofrece excelentes resultados gracias a sus métodos de codificación de categorías. |
Modelos basados en Árboles
Model | Import | |
---|---|---|
DT | Decision Tree | from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor |
RF | Random Forest | from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor |
RF | Random Forest (RAPIDS) | from cuml.ensemble import RandomForestClassifier, RandomForestRegressor |
ET | Extra (Randomized) Trees | from sklearn.ensemble import ExtraTreesClassifier, ExtraTreesRegressor |
AB | AdaBoost | from sklearn.ensemble import AdaBoostClassifier, AdaBoostRegressor |
GB | Gradient Boosting | from sklearn.ensemble import GradientBoostingClassifier, GradientBoostingRegressor |
XGB | XGBoost | from xgboost import XGBClassifier, XGBRegressor |
LGBM | LightGBM | from lightgbm import LGBMClassifier, LGBMRegressor |
CB | CatBoost | from catboost import CatBoostClassifier, CatBoostRegressor |
NGB | NGBoost | from ngboost import NGBClassifier, NGBRegressor |
RGF | Regularized Greedy Forest | from rgf.sklearn import RGFClassifier, RGFRegressor |
from rgf.sklearn import FastRGFClassifier, FastRGFRegressor |
Microsoft Hummingbird
Converts Tree models into Neural Nets.
from sklearn.ensemble import RandomForestClassifier
from hummingbird.ml import convert
# Create and train a model (scikit-learn RandomForestClassifier in this case)
tree_model = RandomForestClassifier(n_estimators=10, max_depth=10)
tree_model.fit(x, y)
# Use Hummingbird to convert the model to PyTorch
nn_model = convert(tree_model, 'pytorch')
# Run predictions on CPU
nn_model.predict(X)
# Run predictions on GPU
nn_model.to('cuda')
nn_model.predict(X)