Está en la página 1de 12

Hemos visto las ideas básicas de varios métodos de aprendizaje automático y estudiado en detalle

cómo evaluar su rendimiento en problemas prácticos de minería de datos. Ahora estamos bien
preparados para mirar algoritmos reales, de fuerza industrial, de aprendizaje automático. Nuestro
objetivo es explicar estos algoritmos tanto a nivel conceptual y con una cantidad justa de detalle
técnico para que usted pueda entenderlos completamente y apreciar los problemas clave de
implementación que surgen.

En verdad, hay un mundo de diferencia entre los métodos simplistas descritos en el Capítulo 4 y
los algoritmos reales que son ampliamente utilizados en la práctica. Los principios son los mismos.
Lo mismo ocurre con las entradas y salidas -métodos de representación del conocimiento. Pero los
algoritmos son mucho más complejos, principalmente porque tienen que tratar de forma robusta
y sensible con problemas del mundo real tales como atributos numéricos, valores faltantes y - el
más desafiante de todos los datos ruidosos. Para entender cómo los diferentes esquemas
enfrentan el ruido, tendremos que basarnos en algunos de los conocimientos estadísticos que
aprendimos en el capítulo 5.

El capítulo 4 se abrió con una explicación de cómo inferir reglas rudimentarias y luego examinó el
modelado estadístico y los árboles de decisión. Luego regresamos a la inducción de reglas y
continuamos con reglas de asociación, modelos lineales, el método de aprendizaje basado en
instancia más cercano y agrupación. Este capítulo desarrolla todos estos temas.

Comenzamos con la inducción del árbol de decisión y trabajamos hasta una descripción completa
del sistema C4.5, un programa de árbol de decisión de referencia que es probablemente el caballo
de batalla de aprendizaje de la máquina más ampliamente utilizado en la práctica hasta la fecha.
Luego describimos la inducción de la regla de decisión. A pesar de la simplicidad de la idea, la
inducción de reglas de decisión que se desempeñan comparativamente con los árboles de decisión
de vanguardia resulta bastante difícil en la práctica. La mayoría de inductores de reglas de alto
rendimiento encuentran un conjunto de reglas inicial y luego lo refinan usando una etapa de
optimización bastante compleja que descarta o ajusta reglas individuales para hacerlas trabajar
mejor juntas. Describimos las ideas que subyacen en el aprendizaje de reglas en presencia de ruido
y luego pasamos a cubrir un esquema que opera formando árboles de decisión parcial, un enfoque
que se ha demostrado que funciona bien evitando heurísticas complejas y ad hoc. Después de
esto, examinamos brevemente cómo generar reglas con excepciones, que fueron descritas en la
Sección 3.4, y examinamos estructuras de datos rápidas para aprender reglas de asociación.

Ha habido un resurgimiento del interés en modelos lineales con la introducción de máquinas


vectoriales de apoyo, una mezcla de modelado lineal y aprendizaje basado en la instancia.

Las máquinas vectoriales de soporte seleccionan un pequeño número de instancias límite críticas
llamadas vectores de soporte de cada clase y construyen una función discriminante lineal que los
separa lo más ampliamente posible. Este enfoque basado en la instancia trasciende las
limitaciones de los límites lineales al hacer práctico incluir términos extra lineales adicionales en la
función, haciendo posible formar límites de decisión cuadráticos, cúbicos y de orden superior. Las
mismas técnicas pueden aplicarse al perceptron descrito en la Sección 4.6 para implementar
límites de decisión complejos, y también a la regresión de mínimos cuadrados. Una técnica más
antigua para extender el perceptron es conectar las unidades en "redes neuronales" de múltiples
capas. Todas estas ideas se describen en la Sección 6.4.
En la sección 6.5 se describen los alumnos clásicos basados en instancias, desarrollando el método
simple del más cercano vecino introducido en la Sección 4.7 y mostrando algunas alternativas más
potentes que realizan la generalización explícita. A continuación, extendemos la regresión lineal
para la predicción numérica a un procedimiento más sofisticado que surge con la representación
de árboles presentada en la Sección 3.3 y seguimos describiendo la regresión localmente
ponderada, una estrategia basada en instancia para la predicción numérica. Luego examinamos las
redes bayesianas, una forma potencialmente muy poderosa de extender el método Naïve Bayes
para que sea menos "naïve" al tratar con conjuntos de datos que tienen dependencias internas. A
continuación regresamos a la agrupación y revisamos algunos métodos que son más sofisticados
que los simples k-means, métodos que producen clústeres jerárquicos y clusters probabilísticos.
También miramos el aprendizaje semi-supervisado, que puede ser visto como la combinación de
agrupación y clasificación. Finalmente, discutiremos esquemas más avanzados para el aprendizaje
multi-instancia que aquellos cubiertos en la Sección 4.9.

Debido a la naturaleza del material que contiene, este capítulo difiere de los otros en el libro. Las
secciones pueden ser leídas independientemente, y cada una es autónoma, incluyendo las
referencias a lecturas adicionales, que se reúnen en las secciones de Discusión.

6.1 ÁRBOLES DE DECISIÓN

El primer esquema de aprendizaje automático que desarrollaremos en detalle, el algoritmo C4.5,


deriva del simple algoritmo de división y conquista para producir árboles de decisión que fue
descrito en la Sección 4.3. Tiene que ser ampliado de varias maneras antes de que esté listo para
su uso en problemas del mundo real. En primer lugar, consideramos cómo tratar los atributos
numéricos y, después de eso, los valores perdidos. Luego observamos el importante problema de
la poda de árboles de decisión, ya que aunque los árboles construidos por el algoritmo dividir y
conquistar, como se describe, funcionan bien en el conjunto de entrenamiento, por lo general
están sobrecargados de los datos de entrenamiento y no generalizan bien a conjuntos de pruebas
independientes. A continuación, considerar brevemente cómo convertir los árboles de decisión a
las reglas de clasificación y examinar las opciones proporcionadas por el algoritmo C4.5 en sí. Por
último, observamos una estrategia de poda alternativa que se implementa en el famoso sistema
CART para el aprendizaje de árboles de clasificación y regresión.

Atributos numéricos

El método que describimos en la Sección 4.3 sólo funciona cuando todos los atributos son
nominales, mientras que, como hemos visto, la mayoría de los conjuntos de datos reales
contienen algunos atributos numéricos. No es demasiado difícil extender el algoritmo para tratar
con estos. Para un atributo numérico restringiremos las posibilidades a una división bidireccional,
o binaria. Supongamos que usamos la versión de los datos meteorológicos que tiene algunas
características numéricas (ver Tabla 1.3). Entonces, cuando se considera la temperatura para la
primera división, los valores de temperatura implicados son
Los valores repetidos se han colapsado juntos y sólo hay 11 posiciones posibles para el punto de
interrupción-8 si no se permite que el punto de interrupción separe elementos de la misma clase.
La ganancia de información para cada uno se puede calcular de la manera habitual. Por ejemplo, la
temperatura de prueba <71,5 produce cuatro sí y dos no, mientras que la temperatura> 71,5
produce cinco sí y tres no, por lo que el valor de información de esta prueba es

Es común situar los umbrales numéricos a mitad de camino entre los valores que delimitan los
límites de un concepto, aunque algo podría ser adquirido adoptando una política más sofisticada.
Por ejemplo, veremos a continuación que aunque la forma más simple de aprendizaje basado en
instancias pone la línea divisoria entre conceptos en el medio del espacio entre ellos, se han
sugerido otros métodos que implican más que sólo los dos ejemplos más cercanos.

Al crear árboles de decisión utilizando el método dividir y conquistar, una vez que se ha
seleccionado el primer atributo para dividir, se crea un nodo de árbol de nivel superior que se
divide en ese atributo y el algoritmo procede recursivamente en cada uno de los nodos
secundarios. Para cada atributo numérico, parece que el subconjunto de instancias en cada nodo
hijo debe ser reordenado de acuerdo a los valores de ese atributo -y, de hecho, es así como los
programas para inducir árboles de decisión suelen ser escritos. Sin embargo, en realidad no es
necesario volver a ordenar porque el orden de clasificación en un nodo padre se puede utilizar
para derivar el orden de clasificación para cada hijo, lo que conduce a una implementación más
rápida. Considere el atributo de temperatura en los datos meteorológicos, cuyo orden (esta vez
incluyendo duplicados) es

64 65 68 69 70 71 72 72 75 75 80 81 83 85

7 6 5 9 4 14 8 12 10 11 2 13 3 1

Los números en cursiva debajo de cada valor de temperatura dan el número de la instancia que
tiene ese valor. Así, el número de instancia 7 tiene un valor de temperatura 64, el instante 6 tiene
una temperatura 65 y así sucesivamente. Supongamos que decidimos dividir en el nivel superior
en la perspectiva de atributo. Considere el nodo hijo para el cual outlook = soleado; de hecho, los
ejemplos con este valor de outlook son los números 1, 2, 8, 9 y 11. Si la secuencia en cursiva se
almacena con el conjunto de ejemplo (y una secuencia diferente debe ser almacenada para cada
atributo numérico), es decir, la instancia 7 contiene un puntero a la instancia 6, la instancia 6 a la
instancia 5, la instancia 5 a la instancia 9, etcétera, entonces es fácil leer los ejemplos para los
cuales perspectiva = soleado en orden. Todo lo que se necesita es escanear las instancias en el
orden indicado, comprobando el atributo outlook para cada uno y anotando los que tengan el
valor apropiado:

9 8 11 2 1

Por lo tanto, la clasificación repetida puede evitarse almacenando con cada subconjunto de
instancias el orden de clasificación para ese subconjunto de acuerdo con cada atributo numérico.
El orden de clasificación debe determinarse para cada atributo numérico al principio; no se
necesita otra clasificación posterior.

Cuando un árbol de decisión prueba un atributo nominal como se describe en la Sección 4.3, se
hace una rama para cada posible valor del atributo. Sin embargo, hemos restringido las divisiones
en los atributos numéricos para ser binario. Esto crea una diferencia importante entre los
atributos numéricos y los nominales: Una vez que se ha ramificado en un atributo nominal, se ha
utilizado toda la información que ofrece; sin embargo, las divisiones sucesivas en un atributo
numérico pueden continuar proporcionando nueva información. Mientras que un atributo
nominal sólo se puede probar una vez en cualquier camino desde la raíz de un árbol a la hoja, un
numérico se puede probar muchas veces. Esto puede producir árboles que son desordenados y
difíciles de entender porque las pruebas en cualquier atributo numérico único no se encuentran
juntos, pero pueden estar dispersos a lo largo del camino. Una alternativa, que es más difícil de
lograr, pero que produce un árbol más legible, es permitir una prueba multipunto en un atributo
numérico, probando contra varias constantes diferentes en un único nodo del árbol. Una solución
más simple pero menos potente es prediscretar el atributo como se describe en la Sección 7.2.

Valores faltantes

La siguiente mejora del algoritmo de creación de árboles de decisión se ocupa de los problemas de
los valores perdidos. Los valores faltantes son endémicos en conjuntos de datos del mundo real.
Como se explicó en el capítulo 2 (página 58), una forma de tratarlos es tratarlos como un posible
valor del atributo; esto es apropiado si el hecho de que el atributo falte sea significativo de alguna
manera. En ese caso, no es necesario tomar ninguna otra medida. Pero si no hay una significación
particular en el hecho de que una instancia determinada tiene un valor de atributo faltante, se
necesita una solución más sutil. Es tentador ignorar simplemente todos los casos en que faltan
algunos de los valores, pero esta solución suele ser demasiado draconiana para ser viable. Las
instancias con valores que faltan a menudo proporcionan mucha información. A veces los
atributos con valores que faltan no juegan ningún papel en la decisión, en cuyo caso estas
instancias son tan buenas como cualquier otra.

Una pregunta es cómo aplicar un árbol de decisión dado a una instancia en la que algunos de los
atributos a probar tienen valores faltantes. Hemos esbozado una solución en la sección 3.3 que
implica la división de la instancia en pedazos, utilizando un esquema de ponderación numérica, y
el envío de parte de ella por cada rama en proporción al número de instancias de formación que
desciende de esa rama. Eventualmente, las diversas partes de la instancia cada uno alcanzará un
nodo de la hoja, y las decisiones en estos nodos de la hoja se deben recombinar usando los pesos
que han filtrado a las hojas. Los cálculos de la ganancia de información y la relación de ganancia
descritos en la Sección 4.3 también pueden aplicarse a instancias parciales. En lugar de contar con
números enteros, los pesos se usan al calcular ambas cifras de ganancia.

Otra pregunta es cómo dividir el conjunto de entrenamiento una vez que se ha elegido un atributo
de división, para permitir la aplicación recursiva del procedimiento de formación del árbol de
decisión en cada uno de los nodos secundarios. Se utiliza el mismo procedimiento de ponderación.
Las instancias para las que falta el valor de atributo relevante se dividen teóricamente en piezas,
una pieza para cada rama, en la misma proporción en que las instancias conocidas pasan por las
diversas ramas. Las partes de la instancia contribuyen a las decisiones en los nodos inferiores de la
forma habitual a través del cálculo de la ganancia de información, excepto que se ponderan en
consecuencia. Se pueden dividir más en nodos inferiores, por supuesto, si los valores de otros
atributos son desconocidos también.

Poda

Los árboles de decisión completamente expandidos a menudo contienen estructura innecesaria, y


generalmente es recomendable simplificarlos antes de que se desplieguen. Ahora es el momento
de aprender a podar los árboles de decisión.

Construyendo el árbol completo y podándolo después, estamos adoptando una estrategia de post-
pruning (a veces llamada poda hacia atrás) en lugar de prepruning (o poda delantera). Prepruning
implicaría intentar decidir durante el proceso del treebuilding cuando dejar de desarrollar los
subtrees - una perspectiva bastante atractiva porque eso evitaría todo el trabajo de desarrollar
subtrees solamente para lanzarlos lejos después. Sin embargo, postpruning parece ofrecer algunas
ventajas. Por ejemplo, ocurren situaciones en las que dos atributos individualmente parecen no
tener nada que aportar pero son poderosos predictores cuando se combinan, una especie de
efecto de bloqueo combinado en el cual la combinación correcta de los dos valores de atributo es
muy informativa pero los atributos tomados individualmente no lo son. La mayoría de los
constructores de árbol de decisión postprune; sin embargo, la prepruning puede ser una
alternativa viable cuando el runtime es una preocupación particular.

Dos operaciones bastante diferentes han sido consideradas para post-pruning: reemplazo de
subárbol y levantamiento de subárboles. En cada nodo, un esquema de aprendizaje puede decidir
si debe realizar el reemplazo de subárbol, subir el subárbol, o dejar el subárbol tal como está, sin
corregir. El reemplazo de subárbol es la operación primaria de poda, y lo miramos primero. La idea
es seleccionar algunos subárboles y reemplazarlos con hojas simples. Por ejemplo, todo el
subárbol de la figura 1.3 (a), que involucra dos nodos internos y cuatro nodos de hoja, ha sido
reemplazado por el único malo de hoja. Esto ciertamente hará que la precisión en el conjunto de
entrenamiento disminuya si el árbol original fue producido por el algoritmo de árbol de decisión
descrito anteriormente, porque continuó construyendo el árbol hasta que todos los nodos de las
hojas estuvieran puros (o hasta que todos los atributos hayan sido probados).

Cuando el reemplazo de subárbol se implementa, procede de las hojas y funciona de nuevo hacia
la raíz. En el ejemplo de la Figura 1.3, el subárbol entero en (a) no sería reemplazado de una vez.
En primer lugar, se tendría en cuenta la sustitución de los tres nodos hijos en el subárbol de
contribución del plan de salud con un nodo de una sola hoja. Supongamos que se toma una
decisión para realizar este reemplazo; explicaremos cómo se toma esta decisión en breve. Luego,
siguiendo trabajando de regreso de las hojas, se consideraría reemplazar el subtrama de horas de
trabajo por semana, que ahora tiene sólo dos nodos hijos, por un nodo de una sola hoja. En el
ejemplo de la Figura 1.3, este reemplazo fue efectivamente hecho, lo que explica que todo el
subárbol en (a) sea reemplazado por una sola hoja marcada como mala. Por último, se tendría en
cuenta el reemplazo de los dos nodos hijos en el subárbol del primer año de aumento salarial con
un nodo de una sola hoja. En este caso, esa decisión no se hizo, por lo que el árbol permanece
como se muestra en la Figura 1.3 (a). Una vez más, examinaremos cómo se toman estas decisiones
en breve.
La segunda operación de poda, el subárbol que eleva, es más compleja, y no está claro que
necesariamente valga la pena. Sin embargo, debido a que se usa en el influyente sistema de
creación de árboles de decisión C4.5, lo describimos aquí. Subtree aumento no se produce en la
figura 1.3 ejemplo, por lo que utilizamos el ejemplo artificial de la figura 6.1 para ilustración. Aquí,
se considera la poda del árbol en la Figura 6.1 (a), y el resultado se muestra en la Figura 6.1 (b). El
subárbol entero de C hacia abajo ha sido "elevado" para reemplazar el subárbol B. Tenga en
cuenta que aunque las hijas de B y C se muestran como hojas, pueden ser subárboles enteros. Por
supuesto, si realizamos esta operación de elevación, es necesario reclasificar los ejemplos en los
nodos marcados 4 y 5 en el nuevo subárbol encabezado por C. Por eso las hijas de ese nodo están
marcadas con números primos-1 ', 2' , y 3 '- para indicar que no son iguales a las hijas originales 1,
2 y 3 pero difieren por la inclusión de los ejemplos originalmente cubiertos por 4 y 5.

Subtree levantar es una operación que lleva mucho tiempo. En las implementaciones reales
generalmente se restringe a elevar el subárbol de la rama más popular. Es decir, consideramos
realizar la elevación ilustrada en la Figura 6.1, siempre que la rama de B a C tenga más ejemplos de
entrenamiento que las ramas de B al nodo 4 o de B al nodo 5. De lo contrario, si (por ejemplo)
mayoritaria de B, consideraríamos elevar el nodo 4 para reemplazar a B y reclasificar todos los
ejemplos bajo C, así como los ejemplos del nodo 5, al nuevo nodo.

Estimación de las tasas de error

Tanto para las dos operaciones de poda. Ahora debemos abordar la cuestión de cómo decidir si se
reemplaza un nodo interno por una hoja (para el reemplazo de subárbol) o si se reemplaza un
nodo interno por uno de los nodos por debajo de él (para el subárbol). Para tomar esta decisión
racionalmente, es necesario estimar la tasa de error que se esperaría en un nodo determinado
dado un conjunto de pruebas elegido independientemente. Necesitamos estimar el error tanto en
los nodos internos como en los nodos de las hojas. Si tuviéramos tal estimación, estaría claro si
reemplazar o elevar un subárbol particular simplemente comparando el error estimado del
subárbol con el de su reemplazo propuesto. Antes de estimar el error para un subárbol propuesto
para elevar, los ejemplos que se encuentran bajo hermanos del nodo actual -los ejemplos en 4 y 5
de la figura 6.1- tendrían que ser reclasificados temporalmente en el árbol elevado.
A cualquier poda porque el árbol se ha construido expresamente para ese sistema de
entrenamiento particular. Una forma de llegar con una estimación de error es la técnica de
verificación estándar: Retener algunos de los datos originalmente dados y utilizarlo como un
conjunto de pruebas independientes para estimar el error en cada nodo. Esto se llama reducción
de error de poda. Sufre de la desventaja de que el árbol real se basa en menos datos.

La alternativa es intentar hacer alguna estimación del error basándose en los propios datos de
entrenamiento. Eso es lo que C4.5 hace, y describiremos su método aquí. Es una heurística basada
en algún razonamiento estadístico, pero el fundamento estadístico es bastante débil. Sin embargo,
parece funcionar bien en la práctica. La idea es considerar el conjunto de instancias que alcanzan
cada nodo e imaginar que la clase mayoritaria es elegida para representar ese nodo. Esto nos da
un cierto número de "errores", E, del número total de instancias, N. Ahora imaginemos que la
verdadera probabilidad de error en el nodo es q, y que las N instancias son generadas por un
proceso de Bernoulli con parámetro q, de los cuales E resultan ser errores.

Esta es casi la misma situación que se consideró al examinar el método de retención en la Sección
5.2, donde se calcularon los intervalos de confianza sobre la probabilidad de éxito verdadero p
dada una determinada tasa de éxito observada. Hay dos diferencias. Uno es trivial: Aquí estamos
viendo la tasa de error q en lugar de la tasa de éxito p; estas son simplemente relacionadas por p +
q = 1. La segunda es más grave: Aquí las cifras E y N se miden a partir de los datos de
entrenamiento, mientras que en la Sección 5.2 estamos considerando datos de prueba
independientes. Debido a esta diferencia hacemos una estimación pesimista de la tasa de error
usando el límite superior de confianza en lugar de indicar la estimación como un rango de
confianza.

Las matemáticas involucradas son las mismas que antes. Dada una confianza particular c (la cifra
por defecto utilizada por C4.5 es c = 25%), encontramos límites de confianza z tales que

Donde N es el número de muestras, f = E / N es la tasa de error observada, y q es la tasa de error


verdadera. Como antes, esto conduce a un límite de confianza superior para q. Ahora usamos ese
límite de confianza superior como una estimación (pesimista) para la tasa de error e en el nodo:

Observe el uso del signo + antes de la raíz cuadrada en el numerador para obtener el límite de
confianza superior. Aquí, z es el número de desviaciones estándar correspondientes a la confianza
c, que para c = 25% es z = 0,69.
Para ver cómo todo esto funciona en la práctica, volvamos a mirar el árbol de decisión de
negociaciones laborales de la Figura 1.3, cuyas partes destacadas se reproducen en la Figura 6.2
con el número de ejemplos de entrenamiento que alcanzan las hojas agregadas. Utilizamos la
fórmula anterior con una cifra de confianza del 25%, es decir, con z = 0,69. Consideremos la hoja
inferior izquierda, para la cual E = 2, N = 6, y así f = 0,33. Conectando estas cifras a la fórmula, el
límite de confianza superior se calcula como e = 0,47. Eso significa que en lugar de usar la tasa de
error de conjunto de entrenamiento para esta hoja, que es del 33%, usaremos la estimación
pesimista de 47%. Esto es pesimista de hecho, considerando que sería un mal error dejar que la
tasa de error exceda el 50% para un problema de dos clases. Pero las cosas son peores para la hoja
vecina, donde E = 1 y N = 2, porque el límite superior de confianza se convierte en e = 0,72. La
tercera hoja tiene el mismo valor de e que la primera. El siguiente paso es combinar las
estimaciones de error para estas tres hojas en la proporción del número de ejemplos que cubren,
6: 2: 6, lo que conduce a una estimación de error combinado de 0,51. Ahora consideramos la
estimación de error para el nodo padre, la contribución del plan de salud. Esto cubre nueve malos
ejemplos y cinco buenos, por lo que la tasa de error del conjunto de entrenamiento es f = 5/14.
Para estos valores, la fórmula anterior produce una estimación de error pesimista de e = 0,46.
Debido a que esto es menor que la estimación del error combinado de los tres hijos, se los poda.

El siguiente paso es considerar el nodo de horas de trabajo por semana, que ahora tiene dos hijos
que son ambas hojas. La estimación del error para la primera, con E = 1 y N = 2, es e = 0,72,
mientras que para la segunda es e = 0,46, como acabamos de ver. La combinación de estos en la
proporción apropiada de 2:14 conduce a un valor que es mayor que la estimación de error para el
nodo de horas de trabajo, por lo que el subárbol se elimina y reemplaza por un nodo de hoja.

Las cifras estimadas de error obtenidas en estos ejemplos deben tomarse con un grano de sal
porque la estimación es sólo heurística y se basa en una serie de suposiciones inestables: el uso
del límite superior de confianza; la asunción de una distribución normal; y el hecho de que se
utilicen estadísticas del conjunto de formación. Sin embargo, el comportamiento cualitativo de la
fórmula de error es correcto y el método parece funcionar razonablemente bien en la práctica. Si
es necesario, el nivel de confianza subyacente, que hemos considerado un 25%, puede ser
modificado para producir resultados más satisfactorios.
Complejidad de la inducción del árbol de decisión

Ahora que hemos aprendido a realizar las operaciones de poda, finalmente hemos cubierto todos
los aspectos centrales de la inducción del árbol de decisión. Hagamos balance y examinemos la
complejidad computacional de la inducción de árboles de decisión. Utilizaremos la notación de
orden estándar: O (n) representa una cantidad que crece como máximo linealmente con n, O (n2)
crece a lo sumo cuadráticamente con n, y así sucesivamente.

Suponga que los datos de entrenamiento contienen n instancias y m atributos. Necesitamos hacer
alguna suposición sobre el tamaño del árbol, y asumiremos que su profundidad está en el orden
de log n, que es O (log n). Esta es la tasa de crecimiento normal de un árbol con n hojas, siempre
que se mantenga "espeso" y no se degenere en unas pocas ramas muy largas y filosas. Tenga en
cuenta que estamos tácitamente suponiendo que la mayoría de las instancias son diferentes entre
sí y -esto es casi lo mismo- que los atributos m proporcionan pruebas suficientes para permitir que
las instancias se diferencien. Por ejemplo, si sólo había unos cuantos atributos binarios,
permitirían que sólo se diferenciaran tantos casos y el árbol no pudiera crecer más allá de un
cierto punto, haciendo un análisis "en el límite" sin sentido.

El coste computacional de construir el árbol en primer lugar es O (mnlog n). Considere la cantidad
de trabajo realizado para un atributo sobre todos los nodos del árbol. No todos los ejemplos
deben ser considerados en cada nodo, por supuesto. Pero en cada profundidad de árbol posible, el
conjunto entero de n instancias debe considerarse en el peor de los casos. Y porque hay log n
diferentes profundidades en el árbol, la cantidad de trabajo para este atributo es O (n log n). En
cada nodo se consideran todos los atributos, por lo que la cantidad total de trabajo es O (mn log
n).
Este razonamiento hace algunos supuestos. Si algunos atributos son numéricos, deben ser
ordenados, pero una vez realizada la ordenación inicial, no es necesario volver a ordenar en cada
profundidad del árbol si se utiliza el algoritmo apropiado (descrito anteriormente). El tipo inicial
toma operaciones O (n log n) para cada uno de los atributos m; por lo tanto, la cifra de
complejidad anterior no se modifica. Si los atributos son nominales, no es necesario considerar
todos los atributos en cada nodo del árbol porque los atributos que se utilizan más arriba en el
árbol no se pueden volver a utilizar. Sin embargo, si los atributos son numéricos, pueden ser
reutilizados y deben ser considerados en cada nivel de árbol.

A continuación, considere la poda por reemplazo de subárbol. En primer lugar, se debe realizar
una estimación de error para cada nodo de árbol. Siempre que los conteos se mantengan
adecuadamente, esto es lineal en el número de nodos en el árbol. Entonces cada nodo necesita
ser considerado para el reemplazo. El árbol tiene como máximo n hojas, una para cada caso. Si
fuera un árbol binario, cada atributo sería numérico o de dos valores, lo que le daría 2n - 1 nodos;
multiway ramas sólo serviría para disminuir el número de nodos internos. Por lo tanto, la
complejidad del reemplazo de subárbol es O (n).

Finalmente, el levantamiento de subárbol tiene una complejidad básica igual al reemplazo de


subárbol. Pero hay un costo adicional porque los casos deben ser reclasificados durante la
operación de elevación. Durante todo el proceso, cada instancia puede tener que ser reclasificada
en cada nodo entre su hoja y la raíz, es decir, tantos como O (log n) veces. Esto hace que el
número total de reclasificaciones O (n log n). Y la reclasificación no es una sola operación: Una que
ocurre cerca de la raíz tomará operaciones O (log n), y una de profundidad media tomará la mitad
de esto. Por lo tanto, la complejidad total del levantamiento de subárbol es la siguiente: O (n (log
n) 2).

Teniendo en cuenta todas estas operaciones, toda la complejidad del árbol de decisión inducción

De los árboles a las reglas

Es posible leer un conjunto de reglas directamente de un árbol de decisión, como se indica en la


Sección 3.4, generando una regla para cada hoja y haciendo una conjunción de todas las pruebas
encontradas en el camino desde la raíz a esa hoja. Esto produce reglas que son inequívocas en que
no importa en qué orden se ejecutan. Sin embargo, las reglas son más complejas de lo necesario.

La tasa de error estimada descrita anteriormente proporciona exactamente el mecanismo


necesario para podar las reglas. Dada una regla particular, cada condición en ella se considera
suprimida eliminándola tentativamente, determinando cuáles de los ejemplos de entrenamiento
están ahora cubiertos por la regla, calculando a partir de ésta una estimación pesimista de la tasa
de error de la nueva regla y comparando esto con la estimación pesimista de la regla original. Si la
nueva regla es mejor, borre esa condición y continúe, buscando otras condiciones para eliminar.
Deje la regla cuando no haya condiciones restantes que mejoren si se eliminan. Una vez que todas
las reglas han sido podadas de esta manera, es necesario ver si hay duplicados y eliminarlos del
conjunto de reglas.

Este es un método codicioso para detectar condiciones redundantes en una regla, y no hay
garantía de que se eliminará el mejor conjunto de condiciones. Una mejora sería considerar todos
los subconjuntos de condiciones, pero esto es generalmente prohibitivamente caro. Otra solución
podría ser utilizar una técnica de optimización como el recocido simulado o un algoritmo genético
para seleccionar la mejor versión de esta regla. Sin embargo, la simple solución codiciosa parece
producir conjuntos de reglas bastante buenas.

El problema, incluso con el método codicioso, es el coste computacional. Para cada condición que
es un candidato para supresión, el efecto de la regla debe ser reevaluado en todas las instancias
de entrenamiento. Esto significa que la generación de reglas de los árboles tiende a ser muy lenta.
La siguiente sección describe métodos mucho más rápidos que generan reglas de clasificación
directamente sin formar primero un árbol de decisión.

C4.5: Opciones y Opciones

El programa de árboles de decisión C4.5 y su sucesor C5.0 fueron diseñados por Ross Quinlan
durante un período de 20 años que comenzó a finales de los años setenta. Una descripción
completa de C4.5, la versión de los años 90, aparece como un libro excelente y legible (Quinlan,
1993), junto con el código fuente completo. La versión más reciente, C5.0, está disponible
comercialmente. Su inducción de árbol de decisión parece ser esencialmente la misma que la
utilizada por C4.5, y las pruebas muestran algunas diferencias, pero las mejoras son insignificantes.
Sin embargo, su generación de reglas es muy acelerada y claramente utiliza una técnica diferente,
aunque esto no se ha descrito en la literatura abierta.

C4.5 funciona esencialmente como se describe en las secciones anteriores. El valor de confianza
predeterminado se establece en 25% y funciona razonablemente bien en la mayoría de los casos;
posiblemente debería ser alterado a un valor más bajo, lo que provoca una poda más drástica, si la
tasa de error real de los árboles podados en los conjuntos de prueba se encuentra que es mucho
mayor que la tasa de error estimada. Hay otro parámetro importante cuyo efecto es eliminar las
pruebas para las cuales casi todos los ejemplos de entrenamiento tienen el mismo resultado. Tales
pruebas son a menudo de poco uso. En consecuencia, las pruebas no se incorporan al árbol de
decisiones a menos que tengan al menos dos resultados que tengan al menos un número mínimo
de instancias. El valor predeterminado para este mínimo es 2, pero es controlable y quizás debería
aumentarse para las tareas que tienen muchos datos ruidosos.

Otra heurística en C4.5 es que el candidato se divide en atributos numéricos sólo se consideran si
cortan un cierto número mínimo de instancias: por lo menos el 10% del número promedio de
instancias por clase en el nodo actual o 25 instancias cualquiera que sea el valor menor (pero el
mínimo que se acaba de mencionar, 2 por defecto, también se aplica).

C4.5 Versión 8, la última versión no comercial de C4.5, incluye un ajuste basado en MDL a la
ganancia de información para divisiones en atributos numéricos. Más específicamente, si hay S
splits candidato en un cierto atributo numérico en el nodo actualmente considerado para la
división, log2 (S) / N se resta de la ganancia de información, donde N es el número de instancias en
el nodo. Esta heurística, descrita por Quinlan (1986), está diseñada para evitar la sobreequipación.
La ganancia de información puede ser negativa después de la resta, y el crecimiento del árbol se
detendrá si no hay atributos con ganancia de información positiva -una forma de prepruning.
Mencionamos esto aquí porque puede ser sorprendente para obtener un árbol podado incluso si
postpruning ha sido apagado! Esta heurística también se implementa en el software descrito en la
Parte 3 de este libro.

Costo-Complejidad Poda

Pag202

Pag pdf 237

También podría gustarte