Clase 10: Árboles de Decisión
Técnica de clasificación supervisada que genera una decisión basada en
árboles de decisión
para clasificar instancias no conocidas.
Visualmente, un árbol de decisión segmenta el espacio separando los datos en subgrupos.
Esto permite la generacion de fronteras de decisión sumamente complejas.
Supongamos el siguiente ejemplo:
Una vez construido el árbol de decisión
basta con recorrerlo para poder generar la predicción para una instancia dada:
Clasificación
o Regresíon
.Pruning
.Occam's Razor
).El principio de Parsimonia recomienda encontrar soluciones a problemas utilizando la menor cantidad de elementos/parámetros.
Los CARTs son por lejos los árboles más utilizados en las librerías más famosas y potentes: Scikit-Learn
, XGboost
, LightGBM
, Catboost
.
El árbol de Decisión busca crear Nodos lo más puro posible
. Para ello puede utilizar las siguentes métricas:
\[Gini(X) = 1 - \sum_{x_i}p(x_i)^2\]
\[H(X) = -\sum_{x_i}p(x_i)log_2p(x_i)\]
A mayor valor, mayor nivel de impureza. 0 implica Nodo completamente puro.
Los cortes de posibles Splits se calculan como el promedio de los valores adyacentes
una vez que han sidos ordenados de mayor a menor
.
Los cortes de posibles Splits se calculan como el promedio de los valores adyacentes
una vez que han sidos ordenados de mayor a menor
.
Los cortes de posibles Splits se calculan como el promedio de los valores adyacentes
una vez que han sidos ordenados de mayor a menor
.
Los cortes de posibles Splits se calculan como el promedio de los valores adyacentes
una vez que han sidos ordenados de mayor a menor
.
Los cortes de posibles Splits se calculan como el promedio de los valores adyacentes
una vez que han sidos ordenados de mayor a menor
.
Los cortes de posibles Splits se calculan como el promedio de los valores adyacentes
una vez que han sidos ordenados de mayor a menor
.
Escogeremos el Split más pequeño que representa el que genera más pureza.
El nodo que no le gusta la Soda quedó completamente puro. Por lo tanto, no puede seguir dividiéndose. Seguiremos trabajando sólo con aquellos que sí les gusta la Soda
.
Overfitting
.Para solucionar esto se aplica regularización. En el caso de Árboles esto se denomina prunning
.
¿Cómo se ve la complejidad/simplicidad en un árbol de Decisión?
from sklearn.tree import DecisionTreeClassifier, plot_tree
dt = DecisionTreeClassifier(criterion="gini", max_depth=None, min_sample_split=2,
min_samples_leaf=1,min_impurity_decrease=0,
ccp_alpha=0, random_state=42)
dt.fit(X_train, y_train)
y_pred = dt.predict(X_test)
y_proba = dt.predict_proba(X_test)
## Permite Visualizar el Árbol de Decisión
plt_tree(dt, filled = True, feature_names=None, class_names=None)
"gini"
.None
, significa todos los que pueda.