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)