Árboles de decisión y métodos de ensamble







Ivan Meza

Árboles

  • Estructura de datos altamente eficiente
  • Interpretables

¿Adivina quién?

Juego

Árbol de decisión binario

Definición

Un árbol de decisión binario es un grado $G=(V,A)$ dónde, $V$ son los nodos y $A$ las ramas de pares de nodos ordenados dónde:

  • $G$ está conectado y sin ciclos
  • Si un arco se remueve, ya no está conectado
  • Cada nodo está conectado a otros dos nodos, a menos que sea terminal (hoja)

Interpretación

Cada nodo representa una pregunta característica (dimensión de los datos)

Cada rama representa una decisión sobre la pregunta

Podemos pensar que con forme atravesamos el árbol vamos filtrando los datos

Algoritmo codicioso (greedy)... informado?

¿Cómo hacemos que cada pregunta sea la más informada?

¡Entropía!

Entropía

La entropía mide la incertidumbre de tomar una decisión aleatoriamente

$$ H(t) = -\sum_{i=1}^lP(t=i)log_2(P(t=i)) $$

Log binaria


$$ \begin{align} H(t)= &-P(t=happy)\cdot log_2(P(t=happy))\\ = &-(1\cdot log_2(1))\\ = & 0 \end{align} $$

$$ \begin{align} H(t)= &-(P(t=happy)\cdot log_2(P(t=happy))\\ &+P(t=sad)\cdot log_2(P(t=sad)))\\ = &-(\frac{3}{4}\cdot log_2(\frac{3}{4})+\frac{1}{4}\cdot log_2(\frac{1}{4}) )\\ = & 0.81 \end{align} $$

$$ \begin{align} H(t)= &-(P(t=happy)\cdot log_2(P(t=happy))\\ &+P(t=sad)\cdot log_2(P(t=sad)))\\ = &-(\frac{1}{2}\cdot log_2(\frac{1}{2})+\frac{1}{2}\cdot log_2(\frac{1}{2}) )\\ = & 1.0 \end{align} $$

$$ \begin{align} H(t)=1.5\\ \end{align} $$

$$ \begin{align} H(t)=3.58\\ \end{align} $$

Cambio de pregunta

¿Cómo hacemos que cada pregunta sea la más informada?

Cambia

¿Cómo escogemos un pregunta que reduzca la entropía?

Entropías

Entropía de todo el dataset

$$ H(\mathcal{D},Y)=-\sum_{y\in \tau(Y)} P(Y=y)\cdot log_2(Y=y) \\ $$

Entropía de una parte del dataset con respecto a una característica $F$

$$ R(\mathcal{D},F)=-\sum_{f\in \tau(F)} \frac{|\mathcal{D}_{F=f}|}{|\mathcal{D}|} \cdot H(\mathcal{D}_{F=f},Y) \\ $$

Ganancia de la información

Que diferencia hay entre la entropía del dataset comparada con la respecto la característica $F$

$$ IG(\mathcal{D},F) = H(\mathcal{D},Y)-R(\mathcal{D},F)\\ $$

Algoritmo ID3

Entrada: $X$, $Y$ con $X={f_1,...,f_m}i$ y $Y$ con $k$ clases

Salida: Árbol de decisión

def id3(X,Y):
  if total_clases(Y)=1:
    return node(class(Y))
  elif total_feature(X)==0:
    return node(most_frequent(Y))
  else:
    F_i = argmax(F,IG(X,F))
    for f in values(F_i):
      tree.add(brach(f))
      X_f,Y_f=X[F_i=f/F_i]
      tree[f].add(id3(X_f,Y_f))
  return tree

Entradas continuas

Uso de bins

Uso de umbral

Regresión

Remplazamos $H(\mathcal{D},Y) \rightarrow S(Y)$ i.e., desviación estándar

Regresión

Remplazamos $R(Y,F) \rightarrow S(Y,F)$ i.e., desviación estándar de $Y$ dado $F$ $$ S(Y,F)=\sum_{f\in\tau(F)}P(f)S(Y_f) $$

Regresión

Remplazamos $IG(\mathcal{D},F) \rightarrow SDR(Y,F)$ i.e., reducción de desviación estándar $$ SDR(Y,F)=S(Y)-S(Y,F) $$

Condiciones de paro

Porcentaje de las reducción

Se regresa el promedio

Sobreajuste

Pre o post podado

Podemos pensar que cada modelo que entrenamos es un experto

Si tenemos múltiple expertos...los podemos preguntar por su opinión dada una entrada $X$

¡Métodos de ensamble!

Para una entrada $X$ y una colección de $B$ expertos $f$ $$y=f_1(X)\bigoplus f_2(X)\bigoplus \ldots \bigoplus f_B(X)$$

Probabilidad de las decisiones por mayoría

La probabilidad para que un ensamble de clasificadores de tamaño $B$ nos de la respuesta correcta

$$\sum_{B/2+1}^B \left(\begin{matrix} B\\k \end{matrix}\right) p^k(1-p)^{B-k} $$

Con $p>0.5$ si $B\rightarrow \infty$ entonces la se acerca a 1.0, con cien un buen trabajo

¿De dónde sacamos B expertos?

Tenemos $B$ datasets del mismo fenómenos y una metodología

Tenemos $B$ metodologías y un dataset

Una metodologías y un dataset, bootstrap

Bootstrap aggretating

Bagging para regresión $$f_{avg}(X)=\frac{1}{B} \sum_{b=1}^B f_b(X) $$

Bootstrap aggregating

Voting para classificación $$f_{avg}(X)= \begin{cases} 1, & if \frac{1}{B} \sum_{b=1}^B f_b(x) \leq 0.5 \\ 0, & otherwise \end{cases}$$

Más aleatorio que'l dataset

Preguntas aleatorias

Random forest

Un conjunto de árboles de decisión, un bosque

$B$ Boostraps para el dataset

Cada pregunta se decide del la característica más informativa de entre $p$ características aleatoria

Algoritmo random forest

Entrada: $X$, $Y$ con $X={f_1,...,f_m}i$ y $Y$ con $k$ clases, $B$ y $p$

Salida: Un bosque ${T_i}_b^B$

def random_forest(X,Y,B,p):
  for b=1 to N do
    X_b,Y_b set to boostrap(n,X)
	T_b set to random_tree(X_b,Y_b,p)

Algoritmo random tree

Entrada: $X$, $Y$ con $X={f_1,...,f_m}i$ y $Y$ con $k$ clases y $p$

Salida: Un bosque ${T_i}_b^B$

def random_tree(X,Y,p):
  if total_clases(Y)=1:
    return node(class(Y))
  elif total_feature(X)==0:
    return node(most_frequent(Y))
  else:
    F_p = random_feature(X,p)
    F_i = argmax(F_p,IG(X,F_p))
    for f in values(F_i):
      tree.add(brach(f))
      X_f,Y_f=X[F_i=f/F_i]
      tree[f].add(random_tree(X_f,Y_f))
  return tree

Algoritmo ID3

Entrada: $X$, $Y$ con $X={f_1,...,f_m}i$ y $Y$ con $k$ clases, $B$ y $p$

Salida: Un bosque ${T_i}_b^B$

def random_forest(X,Y):
  for b=1 to N do
    X_b set to boostrap(n,X)
	T_b set to id3(X_b,Y,p)
Licencia de Creative Commons
Regresión lineal y, sub y sobre ajusto by Ivan V. Meza Ruiz is licensed under a Creative Commons Reconocimiento 4.0 Internacional License.
Creado a partir de la obra en http://turing.iimas.unam.mx/~ivanvladimir/slides/rpyaa/02_regresión.html.