0% encontró este documento útil (0 votos)
84 vistas24 páginas

Taller de Árboles de Decisión

El documento describe un taller sobre aprendizaje computacional y árboles de decisión usando el conjunto de datos germancredit. Se piden varios análisis incluyendo eliminar atributos numéricos, convertir atributos a nominales, tomar muestras aleatorias y construir modelos de árbol de decisión para evaluar el error esperado y la importancia de variables.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
84 vistas24 páginas

Taller de Árboles de Decisión

El documento describe un taller sobre aprendizaje computacional y árboles de decisión usando el conjunto de datos germancredit. Se piden varios análisis incluyendo eliminar atributos numéricos, convertir atributos a nominales, tomar muestras aleatorias y construir modelos de árbol de decisión para evaluar el error esperado y la importancia de variables.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

PROFESOR

OSWALDO VELEZ LANGS

APRENDIZAJE COMPUTACINAL

TALLER ARBOLES DE
DECISIÓN

Camilo Andrés espitia zapata


Luis Alfredo durante moreno

UNIVERSIDAD DE CÓRDOBA
FACULTAD DE
INGENIERÍAS INGENIERÍA
DE SISTEMAS

2023
Teniendo en cuenta el conjunto de datos proporcionados (germancredit_data.arff): Como
predictor (clase de salida) use el atributo APROBAR, el cual tiene valores: 1, 2
(Bueno, malo)

1. Examine los atributos de tipo numérico. • ¿Cuántos de estos atributos hay?


• ¿Porque no es correcto construir un modelo predictivo de arbol de decisión (J48) de
Weka usando atributos numéricos?

Cuando se trabaja con atributos numéricos en el algoritmo J48, es importante tener en cuenta que se
supone que los datos son discretos y se utilizan medidas como la ganancia de información para
dividirlos en diferentes ramas del árbol de decisión. Sin embargo, esta técnica puede llevar a la pérdida
de información importante en los datos y puede resultar en un árbol de decisión menos preciso.
Además, los árboles de decisión que emplean atributos numéricos pueden ser más complicados de
interpretar y visualizar, ya que las divisiones en las ramas no son tan claras como en el caso de los
atributos nominales.

Para mejorar los resultados y facilitar la interpretación, es recomendable convertir los atributos
numéricos a atributos nominales antes de utilizar el algoritmo J48. De esta manera, se pueden obtener
mejores resultados y se puede hacer que el árbol de decisión sea más fácil de interpretar. En resumen,
si se desea utilizar el algoritmo J48 con atributos numéricos, es necesario convertirlos a atributos
nominales para obtener resultados más precisos y una interpretación más sencilla.
2. Ahora por favor remueva (elimine) todos los atributos numéricos (OJO no elimine la
clase de salida, quizás usted deba convertir esta clase de numérica a nominal).
Renombre este conjunto como germancredit_data2.arff
Si se desea trabajar con atributos numéricos en un conjunto de datos y se quiere utilizarlos en un
algoritmo de clasificación, puede resultar útil convertir la clase de salida a atributos nominales. Para
hacer esto, se puede utilizar la función NumericToNominal y especificar el índice de la clase para
convertir solo la salida a nominal.
Además, si se desea remover los atributos numéricos del conjunto de datos, se puede utilizar la función
RemoveType y seleccionar el tipo de datos a remover. De esta forma, se pueden eliminar fácilmente
los atributos numéricos y trabajar solo con los atributos nominales.
En resumen, si se desea trabajar con atributos numéricos en un conjunto de datos y utilizarlos en un
algoritmo de clasificación, se pueden utilizar las funciones NumericToNominal y RemoveType para
convertir la clase de salida a nominal y eliminar los atributos numéricos, respectivamente.
El programa elimina los atributos numericos y nos quedan los siguientes

Conteste las siguientes preguntas usando un modelo tipo Decision Tree sobre
germancredit_data2.arff (mire video Clasificación J48) en WEKA (la parametrización
la decide usted) para los datos modificados y reducidos:
• ¿Qué árbol se obtiene?

Si se desea simplificar un árbol de decisión generado a partir de un conjunto de datos utilizando un


algoritmo determinado, se puede hacer uso del parámetro minNumObj. Este parámetro establece el
número mínimo de instancias que deben existir en una hoja del árbol para que esta sea creada.

Al establecer un valor adecuado para el parámetro minNumObj, se pueden reducir las hojas del árbol y,
por lo tanto, simplificarlo. Sin embargo, es importante tener en cuenta que la simplificación excesiva
puede llevar a la pérdida de información y, por lo tanto, a una menor precisión en la clasificación.

• ¿Cuál es el error esperado?

El error es el valor de campo Mean absolute error, 0.4256


¿Cuáles son las variables que importan y su importancia relativa de acuerdo a su modelo?

El algoritmo utilizado seleccionó solo algunas variables relevantes, ignorando otras que no tienen tanta
relación con la variable objetivo. Por lo tanto, se concluyó que las variables seleccionadas son las más
importantes para el modelo.

4. Usando el archivo original ahora por favor convierta a nominales (aplique los filtros
necesarios), TODOS los atributos numérico (incluida la clase), , renombre este conjunto
como germancredit_data3.arff por favor vuelva y responda las preguntas del numeral
anterior

Para simplificar el conjunto de datos y facilitar su interpretación, se puede utilizar el método Discretize
para dividir los atributos numéricos en distintos rangos. De esta forma, se puede reducir la complejidad
del conjunto de datos y convertir los atributos numéricos en atributos nominales.
Este proceso de conversión de atributos numéricos a nominales es útil para ciertos tipos de algoritmos
de análisis de datos, que pueden tener dificultades para manejar valores numéricos continuos. Al
convertir los atributos numéricos a nominales, se pueden aplicar estos algoritmos sin problemas.

5. Ahora realice 10 muestras aleatorias (hay un filtro para ello en WEKA) (para cada
conjunto de datos germancredit_data2.arff y germancredit_data3.arff) del 40% y
ejecute de nuevo J48 para cada muestra (usando cross validation y percentage split
en cada una de esas muestras). OJO: el filtro de muestreo trabaja solo con clases
nominales

Para obtener una muestra aleatoria de un conjunto de datos, se puede utilizar el método Resample. Al
aplicar este método, se puede indicar el tamaño de la muestra deseada, como en el caso de size=40%,
que indica una muestra del 40% del conjunto de datos original.
Una vez obtenida la muestra aleatoria, se puede aplicar el algoritmo J48 para construir un modelo
predictivo. Es importante destacar que se puede realizar el proceso de resampling y construcción del
modelo varias veces, con distintas muestras aleatorias del conjunto de datos, para evaluar la estabilidad
y consistencia del modelo.
En este caso específico, se realizaron 10 muestras aleatorias en dos conjuntos de datos distintos. La
aplicación de Resample y J48 permitió construir modelos predictivos para cada muestra y evaluar su
rendimiento en la predicción de la variable objetivo.
aquí unos de los arboles obtenidos
germancredit_data2 cross validation
germancredit_data2 percentage split

germancredit_data3 cross validation


Tabulación de error esperado de las muestras aleatorias
CROSS PERCENTAGE
VALIDATION(GERMANCREDI SPLIT(GERMANCREDIT_DATA2)
T_DATA2)
0.275 0.237
0.375 0.321
0.414 0.345
0.322 0.322
0.421 0.423
0.146 0.146
0.342 0.342
0.237 0.234
0.231 0.179
0.256 0.256

CROSS PERCENTAGE
VALIDATION(GERMANCREDI SPLIT(GERMANCREDIT_DATA3)
T_DATA3)
0.275 0.014
0.375 0.034
0.414 0.205
0.322 0.322
0.421 0.423
0.146 0.126
0.342 0.022
0.237 0.024
0.231 0.179
0.256 0.256
Visualización e interpretación de los datos
Se describe una interpretación del árbol de decisión generado a partir de un conjunto de datos. este
árbol, se puede inferir que la posesión de una vivienda propia (A152) es un factor importante para
determinar la aprobación de una solicitud de préstamo. Si el solicitante tiene una vivienda gratuita
(A153) y otros pagos, también es probable que su solicitud sea aprobada.
Por otro lado, si la persona tiene una vivienda en alquiler (A151) y otros pagos, es menos probable que
su solicitud sea aprobada. Si la persona tiene una vivienda gratuita pero no tiene otros pagos, entonces
es poco probable que su solicitud sea aprobada. Por último, si la persona tiene una vivienda en alquiler
y no tiene otros pagos, es menos probable que su solicitud sea aprobada.

La tasa de verdaderos positivos para la clase 1 es alta, lo que significa que la mayoría de los
ejemplos de la clase 1 se clasificaron correctamente. Sin embargo, la tasa de verdaderos
positivos para la clase 2 es baja, lo que indica que muchos ejemplos de la clase 2 fueron
clasificados incorrectamente como pertenecientes a la clase 1. El recall es alto en la clase
1, lo que indica que la mayoría d los miembros de la clase 1 fueron clasificados
correctamente, mientras que en la clase 2 es bajo, lo que sugiere que el modelo no es muy
bueno para identificar los miembros de esa clase. La curva ROC es moderada para la clase
1, lo que indica que el modelo está haciendo una clasificación razonablemente buena, pero
no óptima. En la clase 2, la curva ROC es baja, lo que sugiere que el modelo no es muy
bueno para clasificar los ejemplos de esa clase. Finalmente, el área bajo la curva ROC es
moderada para la clase 1, lo que indica que el modelo es razonablemente bueno en la
clasificación de esa clase, pero para la clase 2 es baja, lo que sugiere que el modelo no es
muy bueno en la clasificación de esa clase.
Acontunuacion el resultado del árbol que nos dio el algoritmo

La matriz muestra las dos clases 1 y 2. La clase 1 se predijo correctamente en 94 casos y


se clasificó incorrectamente como clase 2 en 5 casos. La clase 2 se predijo correctamente
en 13 casos y se clasificó incorrectamente como clase 1 en 31 casos. Por lo tanto, el
modelo tuvo un rendimiento mejor para la clase 1 que para la clase 2.
Interpretación de germancredit_data3.arff percentage Split
Árbol de problemas
Al evaluar el modelo, encontramos que la precisión para la clase 1 es alta, lo que indica que la mayoría
de las predicciones para la clase 1 son correctas. Sin embargo, la precisión para la clase 2 es baja, lo
que sugiere que muchas de las predicciones para la clase 2 son incorrectas. El recall es alto para la
clase 1, lo que indica que la mayoría de los miembros de la clase 1 fueron identificados correctamente,
mientras que el recall para la clase 2 es bajo, lo que sugiere que el modelo no es muy bueno para
identificar los miembros de esa clase. La curva ROC es moderada para la clase 1, lo que indica que el
modelo está haciendo una clasificación razonablemente buena para esa clase, pero no óptima. Para la
clase 2, la curva ROC es baja, lo que sugiere que el modelo no es muy bueno para clasificar los
ejemplos de esa clase. Finalmente, el área bajo la curva ROC es moderada para la clase 1, lo que indica
que el modelo es razonablemente bueno en la clasificación de esa clase, pero para la clase 2 es baja, lo
que sugiere que el modelo no es muy bueno en la clasificación de esa clase.
Parte 2
Construya el árbol de decisión de acuerdo al algoritmo ID3 para los siguientes datos donde se
concluye dar o no un crédito respecto a un cliente bancario de acuerdo a ciertos atributos (nivel
de ingreso, tipo de contrato, etc.)

Solución

Analizaremos el nodo raíz. para ello calculamos primero la entropía global hay 4 SI
y 6 NO por lo tanto la entropía seria:
Eglobal = (−6/10 ∗ log26/10) + (−4/10 ∗ log24/10) = 0,

97 Atributos disponibles:

Morosos:
Moroso=si: hay 4 casos de los cuales 4 son
”no” Esi =(−1∗log21)+(−0∗log20)=0
Moroso=no: hay 6 casos de los cuales 4 son ”si” y 2 son
”no” Eno = (−2/3 ∗ log22/3) + (−1/3 ∗ log21/3) ≈ 0, 92
Por tanto la entropía para Moroso (la media ponderada de las dos) es:
EMoroso =4/10∗0+6/10∗0,92≈0,54
Con ello se obtiene la ganancia para el atributo moroso:
Gmoroso = Eglobal −Emoroso = 0,97−0,54 ≈

0, 43

Antiguedad:
Antiguedad=< 1: 3 casos de los cuales 2 son ”si”

y 1 ”no” E<1 = (−2/3 ∗ log22/3) + (−1/3 ∗

log21/3) ≈ 0, 92

Antiguedad=1-5: hay 4 casos de los cuales 3 son

”no” y 1 ”si” E1−5 = (−3/4 ∗ log23/4) + (−1/4 ∗

log21/4) ≈ 0, 81 Antiguedad=> 5: hay 3 casos de los

cuales 2 son ”no” y 1 ”si” E>5 = (−2/3 ∗ log22/3) +

(−1/3 ∗ log21/3) ≈ 0, 92

Por tanto la entropía para Antiguedad ( la media ponderada de

las tres) es: EAntiguedad

=3/10∗0,92+4/10∗0,81+3/10∗0,92≈0,87

Con ello se obtiene la ganancia para el atributo

Antiguedad: GAntiguedad = Eglobal −EAntigueda =

0,97−0,87 ≈ 0,1

Ingresos:
Ingresos=< 600: 2 casos de los cuales 2 son

”no” E<600 =(−1∗log21)+(−0∗log20)=0

Ingresos=600-1200: hay 4 casos de los cuales 3 son

”no” y 1 ”si” E600−1200 = (−3/4 ∗ log23/4) + (−1/4 ∗

log21/4) ≈ 0, 81 Ingresos=> 1200: hay 4 casos de los

cuales 3 son ”si” y 1 ”no” E>1200 = (−3/4 ∗ log23/4)

+ (−1/4 ∗ log21/4) ≈ 0, 81

Por tanto la entropía para Ingresos ( la media ponderada de las tres)

es: EIngresos =2/10∗0+8/10∗0,81≈0,64

Con ello se obtiene la ganancia para el atributo


Ingresos: GIngresos = Eglobal − EIngresos =

0,97−0,64 ≈ 0,33

TrabajoFijo:
TrabajoFijo=si: 7 casos de los cuales 3 son ”si”

y 4 ”no” Esi = (−3/7 ∗ log23/7) + (−4/7 ∗

log24/7) ≈ 0, 98

TrabajoFijo=no: hay 3 casos de los cuales 2 son ”no” y

1 ”si” Eno = (−2/3 ∗ log22/3) + (−1/3 ∗ log21/3) ≈ 0,

92

Por tanto para TrabajoFijo ( la media ponderada de las dos) es:

ETrabajoFijo =7/10∗0,98+3/10∗0,92≈0,97

Con ello se obtiene la ganancia para el atributo

TrabajoFijo: GTrabajoFijo = Eglobal − ETrabajoFijo =

0,97−0,97

≈0

Después de analizar los atributos de nuestro conjunto de datos, hemos determinado


que el atributo con mayor ganancia es "Moroso". Por lo tanto, hemos elegido este
atributo como el atributo para el nodo raíz de nuestro árbol de decisión. Al explorar
los ejemplos con "Moroso=Si", hemos descubierto que todos ellos pertenecen a la
clase "no". En consecuencia, hemos etiquetado este nodo con la clase "no". Así,
nuestro árbol de decisión se ha actualizado para reflejar esta nueva información y ha
quedado de la siguiente manera

Moroso
Si

Si No

?T
Se procede a analizar el nodo de los ejemplos con Moroso=no, para lo cual se debe determinar
nuevamente el mejor atributo. En este caso, se tomarán en cuenta solamente los 6 ejemplos que llegan
a este nodo, es decir, aquellos que tienen el valor Moroso=no.
Nivel 2:

Calculamos de nuevo la entropía global, ahora sobre los 6 ejemplos no morosos de los cuales
4 son ”si” y 2 son ”no”:
Eglobal = −2/3 ∗ log22/3) + (−1/3 ∗ log21/3) ≈ 0,

92 analizamos los diferentes atributos disponibles:

Antiguedad:
Antiguedad=< 1: 3 casos de los cuales 2 son ”si”

y 1 ”no” E<1 = (−2/3 ∗ log22/3) + (−1/3 ∗

log21/3) ≈ 0, 92 Antiguedad=1-5: 1 caso que es

un ”si”

E1−5 = 0

Antiguedad=> 5: hay 2 casos un ”no” y

un ”si” E>5 = (−1/2 ∗ log21/2) + (−1/2

∗ log21/2) = 1

Por tanto la entropía para Antiguedad ( la media ponderada de

las tres) es: EAntiguedad =3/6∗0,92+1/6∗0+2/6∗1≈0,79

Con ello se obtiene la ganancia para el atributo

Antiguedad: GAntiguedad = Eglobal − EAntiguedad =

0,92−0,79

≈ 0,13

Ingresos:

Ingresos=< 600: 1 casos que es un

”no” E<600 = 0

Ingresos=600-1200: hay 2 casos un ”no” y

un ”si” E600−1200 = (−1/2 ∗ log21/2) +

(−1/2 ∗

log21/2) = 1

Ingresos=> 1200: hay 3 casos de los cuales 3 son


”si” E>1200 = 0
Por tanto para Ingresos ( la media ponderada de las tres) es: E Ingresos

=4/6∗0+2/6∗1≈0,33

Con ello se obtiene la ganancia para el atributo

Ingresos: GIngresos = Eglobal – Eingresos =

0,92−0,33 ≈ 0,59

TrabajoFijo:
TrabajoFijo=si: 4 casos de los cuales 3 son ”si”

y 1 ”no” Esi = (−3/4 ∗ log23/4) + (−1/4 ∗

log21/4) ≈ 0, 81 TrabajoFijo=no: hay 2 casos

uno es ”no” y uno es ”si” Eno = (−1/2 ∗

log21/2) + (−1/2 ∗ log21/2) =1

Por tanto la entropía para TrabajoFijo ( la media ponderada de

las dos) es: ETrabajoFijo =4/6∗0,81+2/6∗1≈0,87

Con ello se obtiene la ganancia para el atributo

TrabajoFijo: GTrabajoFijo = Eglobal − ETrabajoFijo =

0,92−0,87

≈ 0,05
Después de analizar los datos, se ha encontrado que el atributo de mayor ganancia es
Ingresos, lo que lo convierte en la mejor opción para ser elegido como atributo para el
siguiente nodo del árbol. Al explorar las nuevas ramas del árbol, se pudo observar que
dos de ellas llegaron a una resolución (terminaron), ya que todos sus ejemplos
pertenecían a la misma clase. Como resultado, el árbol se ha simplificado y ahora
tiene la siguiente estructura

Moroso

Si

Si No

Ingreso

<600
600-1200
>1200

No is Si
Teniendo en cuenta los resultados obtenidos hasta ahora, el siguiente paso consiste en identificar el
mejor atributo para el nodo aún no etiquetado. Es importante destacar que únicamente se tienen en
cuenta dos ejemplos que llegan a este nodo en concreto: el número 2 y el número 9.
Nivel 3.

Calculamos de nuevo la entropía global, ahora sobre los 2 ejemplos un ”si” y un ”no”:

Eglobal = 1

Ahora analizamos los diferentes atributos

disponibles: TrabajoFijo:

TrabajoFijo=si: 1 casos que es ”si”

Esi = 0

TrabajoFijo=no: 1 caso que es un

”no” Eno = 0

Por tanto la entropía para TrabajoFijo ( la media ponderada de

las dos) es: ETrabajoFijo =0

Con ello se obtiene la ganancia para el atributo

TrabajoFijo: GTrabajoFijo = Eglobal − ETrabajoFijo =

1−0 = 1
Podemos notar que la ganancia máxima la presenta el atributo TrabajoFijo, por lo que
se elige como atributo para el siguiente nodo. Esto evita tener que calcular la ganancia
para el atributo Antiguedad, ya que no podría superar la ganancia del atributo elegido.
Con la determinación de las clases de los nuevos nodos, el resultado final del árbol de
decisión quedaría representado de la siguiente forma

Moroso

Si
No

Si

Ingreso

<600
600-1200
>1200

No Trabajofijo Si

No Si

No Si

En el último paso del análisis, se observa que si se hubiera evaluado el atributo


Antigüedad, se habría obtenido la misma ganancia que con el atributo actual. En otras
palabras, ambos atributos tienen la misma relevancia en la toma de decisiones. No
obstante, al elegir el atributo Antigüedad, se habría creado un nodo sin ejemplos, lo que
requeriría una decisión acerca de la clase a asignar a ese nodo. Por lo tanto, se opta por el
atributo actual ya que no presenta este problema

También podría gustarte