Want to create interactive content? It’s easy in Genially!

Get started free

Infografía 13. Árboles de decisión en acción

Modelos predictivos

Created on July 11, 2021

Start designing with a free template

Discover more than 1500 professional designs like these:

Gear Diagram

Square Timeline Diagram

Timeline Diagram

Timeline Diagram 3

Timeline Diagram 4

Timeline Diagram 2

Triangle Diagram 3

Transcript

Árboles de decisión en acción

Ya conocemos que, para determinar el mejor test de atributo en cada paso de construcción del árbol, podemos utilizar métricas que nos permitan medir la pureza de una partición.

Veamos en acción estas métricas, en este caso la entropía, para la generación del árbol de decisión a partir del conjunto de datos de lentes de contacto, el cual se muestra a continuación:

Podemos ver que la partición inicial es el conjunto de datos el cual se caracteriza por una distribución de clases

Datos = {𝟏, 𝟐, 𝟑, 𝟒, 𝟓, 𝟔, 𝟕, 𝟖, 𝟗, 𝟏𝟎, 𝟏𝟏, 𝟏𝟐, 𝟏𝟑, 𝟏𝟒, 𝟏𝟓, 𝟏𝟔, 𝟏𝟕, 𝟏𝟖, 𝟏𝟗, 𝟐𝟎, 𝟐𝟏, 𝟐𝟐, 𝟐𝟑, 𝟐𝟒}

Clases: ninguno (azul) duros (roja) blandos (verde)

¿ ?

Nodo raíz

Tenemos que determinar cuál variable del conjunto de datos utilizaremos como test de atributo en el nodo raíz ¿Cómo podemos hacerlo?

Para determinar el rendimiento de un test de atributo, se compara el grado de impureza del nodo padre (antes de la división), con el grado de impureza de los nodos hijos (después de la división). A más grande la diferencia, mejor será el test.

La ganancia de información (Δ), es un criterio que podemos utilizar para determinar la bondad de una división:

I = medida de impureza del nodo N = número de registros en el nodo padre k = número de valores del atributo (divisiones) N = número de registros asociados al nodo hijo

Donde:

Así, para saber “cuánto ganamos de pureza” al utilizar una determinada variable como test de atributo debemos calcular la entropía del nodo padre y la entropía de la partición que resultaría si utilizamos este test en particular.

Recuerda que la entropía se calcula como:

donde p ( i │t) = fracción de registros pertenecientes a la clase i en el nodo t

Entonces, primero calculamos la entropía del nodo raíz:

Datos = {𝟏, 𝟐, 𝟑, 𝟒, 𝟓, 𝟔, 𝟕, 𝟖, 𝟗, 𝟏𝟎, 𝟏𝟏, 𝟏𝟐, 𝟏𝟑, 𝟏𝟒, 𝟏𝟓, 𝟏𝟔, 𝟏𝟕, 𝟏𝟖, 𝟏𝟗, 𝟐𝟎, 𝟐𝟏, 𝟐𝟐, 𝟐𝟑, 𝟐𝟒}

Clases: ninguno (azul) duros (roja) blandos (verde)

¿ ?

Nodo raíz

Ahora veamos qué pasa si utilizamos la variable edad como test de atributo ¿Cuál será la ganancia de información?

Edad

{𝟏, 𝟐, 𝟑, 𝟒, 𝟓, 𝟔, 𝟕, 𝟖, 𝟗, 𝟏𝟎, 𝟏𝟏, 𝟏𝟐, 𝟏𝟑, 𝟏𝟒, 𝟏𝟓, 𝟏𝟔, 𝟏𝟕, 𝟏𝟖, 𝟏𝟗, 𝟐𝟎, 𝟐𝟏, 𝟐𝟐, 𝟐𝟑, 𝟐𝟒}

joven

t1

{𝟏, 𝟐, 𝟑, 𝟒, 𝟓, 𝟔, 𝟕, 𝟖}

présbita

t3

{𝟏𝟕, 𝟏𝟖, 𝟏𝟗, 𝟐𝟎, 𝟐𝟏, 𝟐𝟐, 𝟐𝟑, 𝟐𝟒}

Pre-présbita

t2

{𝟗, 𝟏𝟎, 𝟏𝟏, 𝟏𝟐, 𝟏𝟑, 𝟏𝟒, 𝟏𝟓, 𝟏𝟔}

En los nodos hijos se genera una partición disjunta, donde se han agrupado los datos según su valor en la variable “edad”. Se calcula entonces la entropía en cada uno de estos nodos.

Ahora, hay que calcular el segundo término en la ecuación de ganancia de información con base en la entropía en cada nodo hijo y el número de datos que llegan a cada uno de ellos.

Entonces, si utilizamos la variable “edad” como test de atributos obtendríamos una ganancia de 0.534.

¿Qué pasaría si partimos de la variable "producción_de_lágrimas"?

producción de lágrimas

{𝟏, 𝟐, 𝟑, 𝟒, 𝟓, 𝟔, 𝟕, 𝟖, 𝟗, 𝟏𝟎, 𝟏𝟏, 𝟏𝟐, 𝟏𝟑, 𝟏𝟒, 𝟏𝟓, 𝟏𝟔, 𝟏𝟕, 𝟏𝟖, 𝟏𝟗, 𝟐𝟎, 𝟐𝟏, 𝟐𝟐, 𝟐𝟑, 𝟐𝟒}

reducida

normal

t1

t2

{𝟐, 𝟒, 𝟔, 𝟖, 𝟏𝟎, 𝟏𝟐, 𝟏𝟒, 𝟏𝟔, 𝟏𝟖, 𝟐𝟎, 𝟐𝟐, 𝟐𝟒}

{𝟏, 𝟑, 𝟓, 𝟕, 𝟗, 𝟏𝟏, 𝟏𝟑, 𝟏𝟓, 𝟏𝟕, 𝟏𝟗, 𝟐𝟏, 𝟐𝟑}

Entonces, si utilizamos la variable “producción de lágrimas” como test de atributos obtendríamos una ganancia de 0.685.

Si repetimos este proceso para las variables “astigmatismo” y “prescripción”, obtendríamos lo siguiente:

Se selecciona esta variable como test de atributo en el nodo raíz ya que proporciona la mayor ganancia de información (genera particiones más puras).

producción de lágrimas

producción de lágrimas

A continuación, se distribuyen los datos según su valor en la variables “producción_de_lágrimas”.

reducida

normal

normal

reducida

t2

t1

t2

t1

{𝟏, 𝟑, 𝟓, 𝟕, 𝟗, 𝟏𝟏, 𝟏𝟑, 𝟏𝟓, 𝟏𝟕, 𝟏𝟗, 𝟐𝟏, 𝟐𝟑}

{𝟐, 𝟒, 𝟔, 𝟖, 𝟏𝟎, 𝟏𝟐, 𝟏𝟒, 𝟏𝟔, 𝟏𝟖, 𝟐𝟎, 𝟐𝟐, 𝟐𝟒}

Como todos los datos de esta partición pertenecen a la misma clase (es una partición pura) este nodo se convierten en un nodo hoja con la etiqueta de clases “ninguno”.

Como la partición no es pura (hay datos de diferentes clases) se repite el proceso de buscar el mejor test de atributo, pero ahora solo utilizando los datos de esta partición.

Una vez alcanzada la condición de parada, el árbol resultante es:

¿Condición de parada?

Datos = {𝟏, 𝟐, 𝟑, 𝟒, 𝟓, 𝟔, 𝟕, 𝟖, 𝟗, 𝟏𝟎, 𝟏𝟏, 𝟏𝟐, 𝟏𝟑, 𝟏𝟒, 𝟏𝟓, 𝟏𝟔, 𝟏𝟕, 𝟏𝟖, 𝟏𝟗, 𝟐𝟎, 𝟐𝟏, 𝟐𝟐, 𝟐𝟑, 𝟐𝟒}

  • Parar la expansión de un nodo cuando todos los registros pertenezcan a la misma clase.
  • Parar la expansión de un nodo cuando todos los registros presenten valores similares.
  • Establecer un número máximo de iteraciones.
  • Establecer un número máximo de niveles o de hojas.

Además, es posible aplicar técnicas de poda para control de la complejidad. Por ejemplo, parar la expansión del árbol cuando se observa que la medida de impureza o la capacidad de predicción caen por debajo de un cierto umbral. En general, estas técnicas de poda son implementadas por el algoritmo.

Una vez obtenido el árbol ¿Cómo podemos interpretarlo?

Es posible trasladar el árbol a un conjunto de reglas de clasificación. Por ejemplo, para la clase “ninguno” serían:

Por otra parte, vemos que algunos nodos hojas no son “puros”. Igual podemos hacer una predicción utilizando la clase mayoritaria con la que se ha etiquetado este e indicar la probabilidad de que un dato pertenezca a la clase.

Si “producción_de_lágrimas” es “reducida” entonces “lentes recomendados” es “ninguno”.

Regla 1:

Si “producción_de_lágrimas” es “normal” y “astigmatismo” es “si” y prescripción es “miope” entonces “lentes recomendados” es “ninguno”.

Regla 2:

Mas adelante, veremos cómo podemos derivar la importancia de las variables a partir del árbol utilizando scikit-learn.

Además, podemos deducir cuáles son las variables más importantes para hacer las predicciones: serán las que se encuentran en los primeros niveles del árbol. Por ejemplo, en este caso, la “producción_de_lágrimas” parece ser un factor determinante en la recomendación de lentes de contacto.

Referencias

Decision Trees. En: Andreas C. Müller, Sarah Guido (2016). Introduction to Machine Learning with Python. A Guide for Data Scientists. O’Reilly Media. Capítulo 2, páginas: 70 – 83.

Créditos

Profesora: Haydemar María Núñez CastroMonitor: Julián Camilo Montoya Rodriguez