Minería de Datos Análisis de Datos mediante WEKA

Anuncio
Minería de Datos
Análisis de Datos
mediante WEKA
Julio Escribano Barreno
([email protected])
Inteligencia en redes de Comunicaciones
5º Ingeniería de Telecomunicación
Índice
1. Introducción
1
2. Definiciones
1
3. Análisis de los datos
4
3.1. Conjunto de datos nominales (vowel.arff)
4
3.1.1. Resultados con Decision Stump
4
3.1.2. Resultados con C4.5
7
3.1.3. Comparativa entre varios métodos
10
3.2. Conjunto de datos numérico (housing.arff)
11
3.2.1. Resultados con Decision Stump
11
3.2.2. Resultados con M5’
12
3.2.3. Comparativa entre varios métodos
15
4. Referencias
17
Inteligencia en Redes de Comunicaciones
1. Introducción
Un árbol de decisión es importante no porque resume lo que sabemos, sino
porque esperamos que clasifique correctamente nuevos casos que podamos tener. Así,
cuando construimos modelos de clasificación debemos tener datos de entrenamiento así
como datos de test para saber cómo funciona realmente.
El algoritmo más básico es el ID3 (que no utilizaremos), y las ideas básicas son:
• En el árbol de decisión cada nodo corresponde con un atributo no-categórico y
un arco con el valor posible de ese atributo. Una hoja del árbol especifica el
valor esperado del atributo para los valores descritos en el camino desde el nodo
inicial hasta la hoja.
•
En el árbol de decisión cada nodo debe estar asociado al atributo no-categórico
que da más información acerca de los atributos que aún no hayan sido
considerados.
•
Se utiliza la entropía para medir la información que tiene un nodo.
C.45 es una extensión de ID3 que tiene en cuenta valores no disponibles, rangos
de valores continuos en los atributos, derivación de reglas, etc.
Utilizaremos varios algoritmos a lo largo de la práctica para conocer mejor el
funcionamiento de los mismos, estudiando diferentes estrategias de entrenamiento
utilizando los parámetros disponibles para cada uno. Finalmente analizaremos los
resultados y sacaremos conclusiones acerca de los mismos.
2. Definiciones
Si hay n mensajes con la misma probabilidad de ocurrencia, entonces, la
probabilidad p de cada uno es 1/n y la información proporcionada por un mensaje es
-log2(p) = log2(n)
Lo que significa que si hay 16 mensajes posibles, entonces log(16) = 4 y
necesitamos 4 bits para identificar cada mensaje.
En general, si tenemos una distribución de probabilidades de P = (p1, p2,…, pn)
entonces, la información proporcionada por esa distribución, llamada entropía de P, es
I(P)= - (p1*log(p1) + p2*log(p2) + … + pn*log(pn))
Por ejemplo, si P es (0.5,0.5), entonces I(P) es 1, si P es (0.67,0.33), entonces
I(P) es 0.92, si P es (1,0), entonces I(P)=0. Cuanto más uniforme es la distribución de la
probabilidad, mayor es la información.
Si un conjunto de T registros se divide en clases inconexas C1, C2,…,Ck,
entonces la información necesaria para evaluar la clase de un elemento de T es Info(T)
= I(P), donde P es la distribución de probabilidades de la partición (C1, C2,…,Ck):
P = (|C1|/T, |C2|/T, …, |Ck|/T)
Si primero dividimos T en la base de un valor no categórico X en conjuntos T1,
T2,…,Tn, entonces, la información que necesitamos para identificar la clase de un
elemento de T es:
n T
i
Info(X, T ) =
Info(Ti )
i =1 T
y se define la ganancia como
Ganancia(X, T ) = Info(T ) Info(X, T )
Esto representa la diferencia entre la información que se necesita para identificar
un elemento de T y la información necesitada para identificar un elemento de T después
Minería de Datos
1
Inteligencia en Redes de Comunicaciones
de obtener el valor del atributo X, esto es, la ganancia en información debida al atributo
X.
Se puede utilizar esta noción de ganancia para clasificar atributos y para
construir árboles de decisión donde se localiza en cada nodo el atributo con mayor
ganancia entre los atributos todavía no considerados desde el nodo raíz. Veremos que es
lo que se utiliza en el algoritmo ID3.
Matriz de confusión
También se llama tabla de contingencia. Es de tamaño n*n, siendo n el número
de clases. El número de instancias clasificadas correctamente es la suma de los números
en la diagonal de la matriz; los demás están clasificados incorrectamente.
True Positive (TP) Rate
Es la proporción de elementos que están clasificados dentro de la clase x, de
entre todos los elementos que realmente son de la clase x. Es la parte de la clase que ha
sido capturada. En la matriz de confusión es el elemento diagonal dividido por la suma
de todos los elementos de la fila.
False Positive (FP) Rate
La proporción de ejemplos que han sido clasificados dentro de la clase x, pero
pertenecen a una clase diferente. En la matriz de confusión es la suma de la columna de
la clase x menos el elemento diagonal menos la suma de las filas del resto de las clases.
Precisión
Proporción de ejemplos que realmente tienen clase x de entre todos los
elementos que se han clasificado dentro de la clase x. En la matriz de confusión es el
elemento diagonal dividido por la suma de la columna en la que estamos.
Todas estas medidas son útiles para comparar clasificadores, y las utilizaremos
nosotros.
Algoritmo ID3
El algoritmo ID3 se utiliza para construir un árbol de decisión. El algoritmo es el
siguiente:
Entradas:
R: conjunto de atributos no-categóricos
C: El atributo categórico.
S: Conjunto de datos de entrenamiento
Salidas:
Árbol de decisión
Begin
Si S está vacío, devuelve un único nodo con el valor ‘Fallo’
Si S contiene todos los registros con el mismo valor para el atributo
Categórico, devuelve un único nodo con ese valor;
Si R está vacío, devuelve un único nodo cuyo valor es el más frecuente
de los valores del atributo categórico que haya encontrado en los
registros de S; [fíjese que entonces habrá errores, esto es,
registros que no estarán bien clasificados];
Se define D como el atributo con la mayor ganancia(D,S) de los atributos
de R;
Se define {dj| j=1,2,…,m} los valores del atributo D;
Se define {Sj| j=1,2,…,m} los subconjuntos de S consistentes
respectivamente en registros con valor dj para el atributo D;
Devuelve un árbol cuya raíz está etiquetada con D y los arcos
Minería de Datos
2
Inteligencia en Redes de Comunicaciones
etiquetados d1, d2, …, dm que van respectivamente a los árboles
que se crearán como ID3(R-{D},C,S1), ID3(R-{D},C,S2), …, ID3(R{D},C,Sm)
end
Algoritmo C4.5
C4.5 es una extensión del algoritmo ID3.
• Cuando se construye el árbol de decisión, se pueden tratar registros que tienen
valores de atributos desconocidos, evaluando la ganancia o la relación de
ganancia de un atributo considerando sólo los registros que tienen definidos ese
atributo.
•
Cuando vamos a utilizar el árbol de decisión, se pueden clasificar registros que
tienen no definido el valor de algún atributo estimando la probabilidad de los
posibles resultados.
También se puede trabajar con atributos que tienen valores continuos. Sea un
atributo Ci que tiene un rango de valores continuo. Examinamos los valores para este
atributo en el conjunto de entrenamiento, que son, en orden creciente, A1, A2,…,Am.
Entonces, para cada valor Aj (J=1,2,…m), dividimos los registros en los que tienen un
valor de Ci hasta un Aj, y los que tiene valores mayores que Aj. Para cada una de estas
divisiones calculamos la ganancia, o la relación de ganancia, y escogemos la partición
que maximiza la misma.
Decisión Stump
Es un árbol de decisión con una única división (con una rama adicional para
valores no definidos). Es muy efectivo para problemas con dos clases, y para más clases
no es fácil conseguir tasas de error menores que 0.5. Es muy simple, pero puede servir
como base para comparar el modelo que queremos estudiar o implementar.
El tiempo de cálculo del Decisión Stump es proporcional al número de ejemplos
de entrenamiento. Necesita memoria proporcional a
Número de clases * número de atributos * número de valores
Esto puede ser mucho en el caso de atributos con rango continuo de valores (en el peor
caso habrá un valor para cada instancia del atributo, aunque se puede utilizar el
argumento maxThresholds para controlarlo.
Minería de Datos
3
Inteligencia en Redes de Comunicaciones
3. Análisis de los datos
3.1. Conjunto de datos nominales (vowel.arff)
En este caso se trata de poder reconocer las vocales. Hay varios atributos en el
fichero original (vowel.arff), que son los siguientes:
Column
Description
------------------------------0
Train or Test
1
Speaker Number
2
Sex
3
Feature 0
4
Feature 1
5
Feature 2
6
Feature 3
7
Feature 4
8
Feature 5
9
Feature 6
10
Feature 7
11
Feature 8
12
Feature 9
13
Class
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
Para comprobar la eficiencia del método se han utilizado distintos locutores para
entrenamiento y prueba. Así, utilizaremos las instancias con el primer atributo de valor
Train para generar el modelo, y las que tengan el valor Test las utilizaremos para
comprobar su eficiencia. Además lo compararemos con el método de cross-validación,
para ver cómo funciona realmente este método.
Para separar los datos de entrenamiento de los datos de prueba, utilizamos dos
filtros:
• weka.filters.unsupervisied.instance.RemoveRange 529-last: Como las 528
primeras entradas del fichero son de entrenamiento y el resto de prueba, este
filtro elimina de la 529 en adelante. Así primero nos quedamos con las de
entrenamiento. Luego haremos lo mismo con las de prueba.
•
weka.filters.unsupervisied.attribute.Remove 1 2: Así eliminamos el primer
atributo (train/test), con lo que nuestro resultado será más eficiente, al tener un
atributo menos que clasificar. Además, eliminamos también el atributo que
indica el locutor, ya que los locutores que se utilizan para el entrenamiento son
distintos que los que se utilizan para la prueba.
Dejaremos el atributo hombre/mujer, porque suponemos que nos dará más
precisión a la hora de clasificar las vocales.
Una vez aplicados los dos filtros en cada caso, almacenamos los resultados en
los archivos vowel.train.arff y vowel.test.arff.
3.1.1. Resultados con Decision Stump
Iremos comentando el archivo de salida que obtenemos:
El Decision Stump no tiene propiedades editables.
Lo primero que aparece es el algoritmo que se ha utilizado y un resumen del
archivo con los datos que vamos a utilizar. Lo hemos incluido antes porque es el mismo
para los dos análisis:
Scheme:
weka.classifiers.trees.DecisionStump
Relation:
vowel-weka.filters.unsupervised.instance.RemoveWithValues-S0.0-C1-L529last-weka.filters.unsupervised.attribute.Remove-R1weka.filters.unsupervised.attribute.Remove-R1
Instances:
528
Minería de Datos
4
Inteligencia en Redes de Comunicaciones
Attributes:
12
Sex
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Class
0
1
2
3
4
5
6
7
8
9
Aquí aparece el modelo de clasificación. Recordemos que este modelo es un
árbol de un único nivel, así que en el nodo raíz sólo coge un atributo. El mejor que ha
encontrado es el Feature-1.
Test mode:
user supplied test set: 462 instances
=== Classifier model (full training set) ===
Decision Stump
Classifications
Feature 1 <= 1.09 : hEd
Feature 1 > 1.09 : hYd
Feature 1 is missing : hid
Class distributions
Feature 1 <= 1.09
hid
hId
hEd
hAd
hYd
had
hOd
hod
hUd
hud
hed
0.2625 0.2625 0.28125 0.04375 0.0
0.0125 0.01875 0.0
0.025 0.01875 0.075
Feature 1 > 1.09
hid
hId
hEd
hAd
hYd
had
hOd
hod
hUd
hud
hed
0.016304347826086956 0.016304347826086956 0.008152173913043478 0.11141304347826086
0.13043478260869565
0.125 0.12228260869565218
0.13043478260869565
0.11956521739130435
0.12228260869565218
0.09782608695652174
Feature 1 is missing
hid
hId
hEd
hAd
hYd
had
hOd
hod
hUd
hud
hed
0.09090909090909091
0.09090909090909091
0.09090909090909091
0.09090909090909091
0.09090909090909091
0.09090909090909091
0.09090909090909091
0.09090909090909091
0.09090909090909091
0.09090909090909091
0.09090909090909091
Time taken to build model: 0.03 seconds
A continuación aparece el error que tiene nuestro clasificador, según el conjunto
de datos de test que hemos introducido. Como preveíamos, no es muy bueno, ya que
sólo clasifica bien un 12% de las instancias. Recordemos que en la parte teórica de esta
trabajo dijimos que era difícil encontrar una tasa de error menor que 0.5. Aquí tenemos
un error absoluto relativo de un 87%, lo que no dice mucho a favor de este modelo.
El estadístico kappa mide la coincidencia de la predicción con la clase real (1.0
significa que ha habido coincidencia absoluta). Como vemos, este estadístico tiene un
valor de 0.04.
=== Evaluation on test set ===
=== Summary ===
Correctly Classified Instances
Incorrectly Classified Instances
Kappa statistic
Mean absolute error
Root mean squared error
Relative absolute error
Root relative squared error
Total Number of Instances
Minería de Datos
59
403
0.0405
0.1578
0.2821
95.4596 %
98.1234 %
462
12.7706 %
87.2294 %
5
Inteligencia en Redes de Comunicaciones
Aquí vemos la precisión de nuestro modelo de forma más detallada,
especificando por clases:
=== Detailed Accuracy By Class ===
TP Rate
0
0
0.405
0
1
0
0
0
0
0
0
FP Rate
0
0
0.193
0
0.767
0
0
0
0
0
0
Precision
0
0
0.173
0
0.115
0
0
0
0
0
0
Recall
0
0
0.405
0
1
0
0
0
0
0
0
F-Measure
0
0
0.243
0
0.207
0
0
0
0
0
0
Class
hid
hId
hEd
hAd
hYd
had
hOd
hod
hUd
hud
hed
La matriz de confusión, que nos indica cómo se han clasificado las distintas
instancias:
=== Confusion Matrix ===
a
0
0
0
0
0
0
0
0
0
0
0
b c
0 37
0 27
0 17
0 3
0 0
0 0
0 4
0 0
0 0
0 6
0 4
d
0
0
0
0
0
0
0
0
0
0
0
e
5
15
25
39
42
42
38
42
42
36
38
f
0
0
0
0
0
0
0
0
0
0
0
g
0
0
0
0
0
0
0
0
0
0
0
h
0
0
0
0
0
0
0
0
0
0
0
i
0
0
0
0
0
0
0
0
0
0
0
j
0
0
0
0
0
0
0
0
0
0
0
k
0
0
0
0
0
0
0
0
0
0
0
|
|
|
|
|
|
|
|
|
|
|
<-- classified as
a = hid
b = hId
c = hEd
d = hAd
e = hYd
f = had
g = hOd
h = hod
i = hUd
j = hud
k = hed
Si nos fijamos un poco en esta matriz podemos ver que sólo reconocemos las
vocales hEd y hYd, puesto que se trata de un árbol de un único nivel.
Ahora vamos a ver los resultados para el método de cross-validación que es el
que se utiliza cuando no tenemos valores de prueba para nuestro clasificador. No
reproducimos todo, sólo los resultados acerca de los datos de test:
=== Stratified cross-validation ===
=== Summary ===
Correctly Classified Instances
Incorrectly Classified Instances
Kappa statistic
Mean absolute error
Root mean squared error
Relative absolute error
Root relative squared error
Total Number of Instances
91
437
0.0896
0.1547
0.2783
93.62
%
96.8046 %
528
17.2348 %
82.7652 %
=== Detailed Accuracy By Class ===
TP Rate
0
0
0.938
0
0.792
0
0
0.167
0
0
0
FP Rate
0
0
0.24
0
0.538
0
0
0.133
0
0
0
Precision
0
0
0.281
0
0.128
0
0
0.111
0
0
0
Recall
0
0
0.938
0
0.792
0
0
0.167
0
0
0
F-Measure
0
0
0.433
0
0.221
0
0
0.133
0
0
0
Class
hid
hId
hEd
hAd
hYd
had
hOd
hod
hUd
hud
hed
=== Confusion Matrix ===
a
0
0
b c
0 42
0 42
d
0
0
e
6
4
f
0
0
Minería de Datos
g
0
0
h
0
2
i
0
0
j
0
0
k
<-- classified as
0 | a = hid
0 | b = hId
6
Inteligencia en Redes de Comunicaciones
0
0
0
0
0
0
0
0
0
0 45
0 7
0 0
0 2
0 3
0 0
0 4
0 3
0 12
0
0
0
0
0
0
0
0
0
3
32
38
36
35
40
37
36
29
0
0
0
0
0
0
0
0
0
0 0
0 9
0 10
0 10
0 10
0 8
0 7
0 9
0 7
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
|
|
|
|
|
|
|
|
|
c
d
e
f
g
h
i
j
k
=
=
=
=
=
=
=
=
=
hEd
hAd
hYd
had
hOd
hod
hUd
hud
hed
Aunque aquí sí que reconocemos más vocales, la eficiencia sigue siendo muy
baja, con cerca de un 83% de errores en la clasificación. El hecho de que los resultados
sean similar pero un poco mejores puede indicar la imperfección que introduce el hecho
de utilizar el método de cross-validación en vez de datos reales.
3.1.2. Resultados con C4.5
=== Run information ===
Scheme:
weka.classifiers.trees.j48.J48 -C 0.25 -M 2
En este caso es un árbol de decisión. El nodo raíz es el es el atributo Feature-1,
que determina la primera decisión y coincide con el nodo raíz del método de Decision
Stump. Los números entre paréntesis al final de cada hoja son el número de ejemplos en
la hoja. Si una o más hojas no son puras (no todos los elementos son de la misma clase),
se da también el número de ejemplos no clasificado. Se utilizan números decimales y no
enteros por la forma en que el algoritmo trabaja con los valores no definidos.
En el segundo nivel del árbol están Feature-1 (otra vez), Feature-0, y así
sucesivamente para los siguientes niveles.
Weka también da la posibilidad de visualizar el árbol de decisión de forma
gráfica, pero no lo vamos a reproducir aquí porque al tener tantos atributos la página se
queda pequeña.
Test mode:
user supplied test set: 462 instances
=== Classifier model (full training set) ===
J48 pruned tree
-----------------Feature 1 <= 1.078
|
Feature 1 <= 0.624
|
|
Feature 1 <= -0.137: hid (26.0)
|
|
Feature 1 > -0.137
|
|
|
Feature 0 <= -3.57: hid (15.0)
|
|
|
Feature 0 > -3.57
|
|
|
|
Feature 5 <= 0.955
|
|
|
|
|
Feature 4 <= 0.56: hEd (12.0)
|
|
|
|
|
Feature 4 > 0.56: hId (9.0)
|
|
|
|
Feature 5 > 0.955: hId (31.0/1.0)
|
Feature 1 > 0.624
|
|
Feature 8 <= 0.144
|
|
|
Feature 3 <= 0.085
|
|
|
|
Feature 0 <= -2.205: hed (6.0)
|
|
|
|
Feature 0 > -2.205: hAd (4.0)
|
|
|
Feature 3 > 0.085
|
|
|
|
Feature 3 <= 1.595
|
|
|
|
|
Feature 6 <= 0.192: hEd (31.0)
|
|
|
|
|
Feature 6 > 0.192
|
|
|
|
|
|
Sex = Male: hEd (3.0/1.0)
|
|
|
|
|
|
Sex = Female: hAd (4.0/1.0)
|
|
|
|
Feature 3 > 1.595: hId (3.0)
|
|
Feature 8 > 0.144
|
|
|
Feature 0 <= -2.826
|
|
|
|
Feature 0 <= -3.389: hud (3.0)
|
|
|
|
Feature 0 > -3.389
|
|
|
|
|
Feature 0 <= -3.105: hUd (3.0)
Minería de Datos
7
Inteligencia en Redes de Comunicaciones
|
|
|
|
|
Feature 0 > -3.105: hOd (3.0)
|
|
|
Feature 0 > -2.826: hed (7.0/1.0)
Feature 1 > 1.078
|
Feature 0 <= -3.145
|
|
Feature 7 <= 0.226
|
|
|
Feature 2 <= 0.352
|
|
|
|
Feature 0 <= -4.125
|
|
|
|
|
Feature 1 <= 2.131
|
|
|
|
|
|
Feature 5 <= 0.112: hEd (3.0)
|
|
|
|
|
|
Feature 5 > 0.112: hed (3.0)
|
|
|
|
|
Feature 1 > 2.131
|
|
|
|
|
|
Feature 7 <= 0.085
|
|
|
|
|
|
|
Feature 0 <= -4.261: hud (18.0)
|
|
|
|
|
|
|
Feature 0 > -4.261: hed (2.0)
|
|
|
|
|
|
Feature 7 > 0.085
|
|
|
|
|
|
|
Feature 6 <= 0.516: hUd (7.0)
|
|
|
|
|
|
|
Feature 6 > 0.516: hud (2.0)
|
|
|
|
Feature 0 > -4.125
|
|
|
|
|
Feature 1 <= 2.064: had (6.0/1.0)
|
|
|
|
|
Feature 1 > 2.064
|
|
|
|
|
|
Feature 1 <= 2.488: hYd (4.0)
|
|
|
|
|
|
Feature 1 > 2.488: hOd (2.0)
|
|
|
Feature 2 > 0.352
|
|
|
|
Feature 0 <= -4.836: hid (6.0)
|
|
|
|
Feature 0 > -4.836: hId (6.0)
|
|
Feature 7 > 0.226
|
|
|
Feature 1 <= 3.066
|
|
|
|
Feature 4 <= -1.12
|
|
|
|
|
Feature 3 <= 1.108
|
|
|
|
|
|
Feature 3 <= 0.593: hUd (4.0/1.0)
|
|
|
|
|
|
Feature 3 > 0.593: hOd (7.0)
|
|
|
|
|
Feature 3 > 1.108
|
|
|
|
|
|
Feature 2 <= -0.167: hOd (2.0/1.0)
|
|
|
|
|
|
Feature 2 > -0.167: hod (12.0)
|
|
|
|
Feature 4 > -1.12
|
|
|
|
|
Feature 1 <= 1.222
|
|
|
|
|
|
Sex = Male: hud (2.0)
|
|
|
|
|
|
Sex = Female: hAd (5.0)
|
|
|
|
|
Feature 1 > 1.222
|
|
|
|
|
|
Feature 0 <= -4.384: hud (11.0)
|
|
|
|
|
|
Feature 0 > -4.384
|
|
|
|
|
|
|
Feature 5 <= 0.304: hOd (8.0/1.0)
|
|
|
|
|
|
|
Feature 5 > 0.304
|
|
|
|
|
|
|
|
Feature 2 <= -1.313: hud (7.0/1.0)
|
|
|
|
|
|
|
|
Feature 2 > -1.313
|
|
|
|
|
|
|
|
|
Feature 2 <= 0.441
|
|
|
|
|
|
|
|
|
|
Feature 1 <= 2.711: hUd (25.0/1.0)
|
|
|
|
|
|
|
|
|
|
Feature 1 > 2.711
|
|
|
|
|
|
|
|
|
|
|
Feature 0 <= -4.036: hUd (4.0)
|
|
|
|
|
|
|
|
|
|
|
Feature 0 > -4.036: hOd (4.0)
|
|
|
|
|
|
|
|
|
Feature 2 > 0.441: hud (3.0)
|
|
|
Feature 1 > 3.066
|
|
|
|
Feature 0 <= -4.65: hud (3.0/1.0)
|
|
|
|
Feature 0 > -4.65
|
|
|
|
|
Feature 0 <= -3.689: hod (37.0/2.0)
|
|
|
|
|
Feature 0 > -3.689: hOd (5.0/1.0)
|
Feature 0 > -3.145
|
|
Feature 0 <= -2.52
|
|
|
Feature 1 <= 2.027
|
|
|
|
Feature 7 <= -0.178
|
|
|
|
|
Sex = Male: had (3.0)
|
|
|
|
|
Sex = Female
|
|
|
|
|
|
Feature 1 <= 1.727: hAd (4.0)
|
|
|
|
|
|
Feature 1 > 1.727: had (2.0)
|
|
|
|
Feature 7 > -0.178
|
|
|
|
|
Feature 9 <= 0.659
|
|
|
|
|
|
Feature 5 <= 0.028: hYd (3.0/1.0)
|
|
|
|
|
|
Feature 5 > 0.028
|
|
|
|
|
|
|
Sex = Male
|
|
|
|
|
|
|
|
Feature 1 <= 1.832: hed (18.0)
|
|
|
|
|
|
|
|
Feature 1 > 1.832: hYd (3.0)
|
|
|
|
|
|
|
Sex = Female
|
|
|
|
|
|
|
|
Feature 6 <= 0.345
|
|
|
|
|
|
|
|
|
Feature 4 <= -0.561: had (3.0)
|
|
|
|
|
|
|
|
|
Feature 4 > -0.561: hed (13.0/1.0)
|
|
|
|
|
|
|
|
Feature 6 > 0.345: had (3.0)
|
|
|
|
|
Feature 9 > 0.659: hOd (3.0)
Minería de Datos
8
Inteligencia en Redes de Comunicaciones
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Feature 1 > 2.027
|
|
Feature 0 <= -3.012
|
|
|
Feature 1 <= 2.447: had (3.0)
|
|
|
Feature 1 > 2.447: hOd (8.0)
|
|
Feature 0 > -3.012
|
|
|
Feature 7 <= 1.193
|
|
|
|
Feature 8 <= -1.004: had (2.0)
|
|
|
|
Feature 8 > -1.004: hYd (30.0/1.0)
|
|
|
Feature 7 > 1.193: hOd (6.0)
Feature 0 > -2.52
|
Feature 4 <= -1.077: hYd (10.0/1.0)
|
Feature 4 > -1.077
|
|
Feature 2 <= -0.469
|
|
|
Feature 7 <= 0.956
|
|
|
|
Feature 0 <= -2.415
|
|
|
|
|
Feature 1 <= 1.43: hAd (2.0)
|
|
|
|
|
Feature 1 > 1.43: had (4.0)
|
|
|
|
Feature 0 > -2.415: hAd (29.0)
|
|
|
Feature 7 > 0.956: had (3.0)
|
|
Feature 2 > -0.469: had (18.0/2.0)
Number of Leaves
:
63
Size of the tree :
125
Tamaño del árbol = número de nodos del árbol.
El árbol de decisión se evalúa muy rápidamente:
Time taken to build model: 0.16 seconds
Podemos ver que obtenemos resultados algo mejores que con el anterior
clasificador, ya que hay un 39% de las instancias clasificadas correctamente y el
estadístico kappa es 0.33. Esto era de esperar por todo lo que vimos en la parte de teoría.
=== Evaluation on test set ===
=== Summary ===
Correctly Classified Instances
Incorrectly Classified Instances
Kappa statistic
Mean absolute error
Root mean squared error
Relative absolute error
Root relative squared error
Total Number of Instances
182
280
0.3333
0.1108
0.3232
67.0389 %
112.4318 %
462
39.3939 %
60.6061 %
=== Detailed Accuracy By Class ===
TP Rate
0.643
0.405
0.214
0.214
0.69
0.381
0.643
0.643
0.119
0.381
0
FP Rate
0.005
0.055
0.048
0.043
0.136
0.1
0.117
0.043
0.043
0.021
0.057
Precision
0.931
0.425
0.31
0.333
0.337
0.276
0.355
0.6
0.217
0.64
0
Recall
0.643
0.405
0.214
0.214
0.69
0.381
0.643
0.643
0.119
0.381
0
F-Measure
0.761
0.415
0.254
0.261
0.453
0.32
0.458
0.621
0.154
0.478
0
Class
hid
hId
hEd
hAd
hYd
had
hOd
hod
hUd
hud
hed
También podemos ver en la matriz de confusión que hay muchos más elementos
en la diagonal que en el anterior caso, lo que indica que se han clasificado
correctamente más elementos.
=== Confusion Matrix ===
a b c d
27 12 3 0
0 17 13 0
0 5 9 13
0 0 0 9
e f
0 0
3 6
0 6
9 18
Minería de Datos
g
0
0
3
4
h
0
0
0
0
i
0
1
0
0
j
0
2
0
0
k
0
0
6
2
|
|
|
|
<-- classified as
a = hid
b = hId
c = hEd
d = hAd
9
Inteligencia en Redes de Comunicaciones
0
0
0
0
0
2
0
0
0
0
0
1
4
1
0
0
1
0
0
2
1
5 29 2 6 0 0 0
0 18 16 0 0 0 0
0 6 5 27 0 0 1
0 0 0 14 27 1 0
0 5 1 8 15 5 5
0 7 0 3 3 1 16
0 9 4 11 0 15 1
0
8
2
0
2
4
0
|
|
|
|
|
|
|
e
f
g
h
i
j
k
=
=
=
=
=
=
=
hYd
had
hOd
hod
hUd
hud
hed
3.1.3. Comparativa entre varios métodos
Por lo tanto, para modelar este problema siempre será mejor utilizar el segundo
algoritmo al primero, aunque seguirá sin ser suficiente para modelar nuestro problema.
Hemos probado con otros clasificadores (no con todos), y los resultados que obtenemos
son los siguientes (entre paréntesis indicamos si hemos modificado algún parámetro que
nos mejore el resultado):
Método
Instancias bien clasificadas
trees.DecisionStump
12.7706 %
rules.DecisionTable
23.1602 %
rules.OneR
28.1385 %
rules.part.PART
38.5281 %
trees.j48.J48 (unpruned=False)
39.3939 %
trees.j48.J48 (unpruned=True)
40.6926 %
bayes.NaiveBayes
46.1039 %
lazy.IBk (no Normalization=False) 48.4848 %
lazy.IBk (no Normalization=True)
54.7619 %
Parece que habría que hacer más refinada la búsqueda del método a utilizar o
buscar otros parámetros mejores.
Quitando el atributo del Sexo, curiosamente obtenemos los mismos valores, pero
en algunos casos mejoran el resultado ligeramente:
Método
trees.DecisionStump
rules.DecisionTable
rules.OneR
rules.part.PART
trees.j48.J48 (unpruned=False)
trees.j48.J48 (unpruned=True)
bayes.NaiveBayes
lazy.IBk (no Normalization=False)
lazy.IBk (no Normalization=True)
Instancias bien clasificadas
12.7706 %
23.1602 %
28.1385 %
41.7749 %
38.5281 %
39.8268 %
46.1039 %
56.2771 %
56.2771 %
3.2. Conjunto de datos numéricos (housing.arff)
En esta caso analizaremos datos numéricos, con el archivo housing.arff, que
incluye información acerca del valor de la vivienda en barrios de Boston. El nombre de
los atributos es el siguiente:
Relation:
Instances:
Attributes:
housing
506
14
CRIM
ZN
INDUS
CHAS
Minería de Datos
10
Inteligencia en Redes de Comunicaciones
NOX
RM
AGE
DIS
RAD
TAX
PTRATIO
B
LSTAT
class
3.2.1. Resultados con Decision Stump
Ahora el árbol de decisión es muy simple: Es un árbol de decisión de un nivel en
el que el atributo elegido es RM:
=== Classifier model (full training set) ===
Decision Stump
Classifications
RM <= 6.941 : 19.933720930232564
RM > 6.941 : 37.23815789473678
RM is missing : 22.532806324110652
En este caso el error es mayor, ya que tenemos un error del 84%.
Time taken to build model: 0.01 seconds
=== Cross-validation ===
=== Summary ===
Correlation coefficient
Mean absolute error
Root mean squared error
Relative absolute error
Root relative squared error
Total Number of Instances
0.5804
5.6124
7.5044
84.4331 %
81.6759 %
506
3.2.2. Resultados con M5’
En este caso se ha generado primero un árbol de decisión, ya asociado a cada
una de las hojas del mismo hay 19 modelos lineales. Para clasificar un valor, primero
utilizamos el árbol de decisión, que nos llevará al modelo lineal correspondiente, de
donde sacaremos el valor final.
Las expresiones que aparecen en los modelos lineales sirven para sustituir los
valores de los atributos correspondientes y así obtener el valor de la predicción deseada.
== Classifier model (full training set) ===
M5 pruned model tree:
(using smoothed predictions)
LSTAT <= 9.725 :
|
RM <= 6.941 :
|
|
DIS <= 3.325 :
|
|
|
RAD <= 7.5 : LM1 (23/53.169%)
|
|
|
RAD > 7.5 :
|
|
|
|
CRIM <= 4.727 : LM2 (3/31.324%)
|
|
|
|
CRIM > 4.727 : LM3 (4/0%)
|
|
DIS > 3.325 :
|
|
|
RM <= 6.545 : LM4 (72/20.836%)
|
|
|
RM > 6.545 :
|
|
|
|
LSTAT <= 4.915 :
|
|
|
|
|
PTRATIO <= 17.75 : LM5 (11/12.22%)
|
|
|
|
|
PTRATIO > 17.75 : LM6 (4/14.956%)
|
|
|
|
LSTAT > 4.915 :
|
|
|
|
|
RM <= 6.611 : LM7 (7/12.839%)
|
|
|
|
|
RM > 6.611 : LM8 (18/20.153%)
|
RM > 6.941 :
|
|
RM <= 7.437 :
|
|
|
AGE <= 76.95 : LM9 (29/31.464%)
|
|
|
AGE > 76.95 :
Minería de Datos
11
Inteligencia en Redes de Comunicaciones
|
|
|
|
B <= 394.7 : LM10 (8/56.187%)
|
|
|
|
B > 394.7 : LM11 (3/9.054%)
|
|
RM > 7.437 : LM12 (30/48.724%)
LSTAT > 9.725 :
|
LSTAT <= 15 : LM13 (132/39.048%)
|
LSTAT > 15 :
|
|
CRIM <= 5.769 :
|
|
|
CRIM <= 0.654 :
|
|
|
|
DIS <= 1.906 : LM14 (10/22.692%)
|
|
|
|
DIS > 1.906 : LM15 (36/36.717%)
|
|
|
CRIM > 0.654 : LM16 (37/31.47%)
|
|
CRIM > 5.769 :
|
|
|
LSTAT <= 19.73 : LM17 (29/24.372%)
|
|
|
LSTAT > 19.73 :
|
|
|
|
NOX <= 0.675 : LM18 (16/48.899%)
|
|
|
|
NOX > 0.675 : LM19 (34/21.354%)
LM num: 1
Linear Regression Model
class =
7.5335 * CRIM +
-0.7461 * INDUS +
5.0016 * RM +
-3.494
LM num: 2
Linear Regression Model
class =
+
27.5333
LM num: 3
Linear Regression Model
class =
+
50
LM num: 4
Linear Regression Model
class =
4.5295
-26.4372
6.0435
-0.0389
-0.4177
-0.0164
5.2821
*
*
*
*
*
*
CRIM +
NOX +
RM +
AGE +
DIS +
TAX +
LM num: 5
Linear Regression Model
class =
-0.1237 * AGE +
0.2713 * B +
-70.2259
LM num: 6
Linear Regression Model
class =
-28.0303 * CRIM +
30.0354
LM num: 7
Linear Regression Model
class =
Minería de Datos
12
Inteligencia en Redes de Comunicaciones
-68.3616 * RM +
473.6934
LM num: 8
Linear Regression Model
class =
-0.0986 * AGE +
-1.1417 * DIS +
-0.4622 * PTRATIO +
46.27
LM num: 9
Linear Regression Model
class =
0.1081 * B +
-8.5281
LM num: 10
Linear Regression Model
class =
2.6335 * CRIM +
33.3089
LM num: 11
Linear Regression Model
class =
+
24.1667
LM num: 12
Linear Regression Model
class =
-10.5429
1.1087
5.6467
-1.8862
28.4631
*
*
*
*
CRIM +
INDUS +
RM +
PTRATIO +
LM num: 13
Linear Regression Model
class =
-0.124
1.9152
-0.0354
-0.7268
-0.4399
22.8122
*
*
*
*
*
CRIM +
RM +
AGE +
DIS +
PTRATIO +
LM num: 14
Linear Regression Model
class =
11.7456 * CRIM +
0.0993 * B +
-26.7485
LM num: 15
Linear Regression Model
class =
+
19.5611
Minería de Datos
13
Inteligencia en Redes de Comunicaciones
LM num: 16
Linear Regression Model
class =
0.1244 * RAD +
14.1304
LM num: 17
Linear Regression Model
class =
3.889 * DIS +
0.008 * B +
3.6544
LM num: 18
Linear Regression Model
class =
-63.4932 * NOX +
54.9979
LM num: 19
Linear Regression Model
class =
-0.0552
-2.0031
6.4345
-0.2298
16.6312
*
*
*
*
CRIM +
RM +
DIS +
LSTAT +
Number of Rules : 19
Time taken to build model: 1.34 seconds
Acerca de la eficiencia de este modelo con respecto al de Decision Stump hay
que decir que este es mucho más eficiente, ya que consigue un error del 37%, frente al
84% del primero.
=== Cross-validation ===
=== Summary ===
Correlation coefficient
Mean absolute error
Root mean squared error
Relative absolute error
Root relative squared error
Total Number of Instances
0.9131
2.5053
3.7506
37.6897 %
40.8204 %
506
Si modificamos la opción de Weka que construye un árbol de regresión en vez
del árbol de decisión obtenemos una eficiencia menor, ya que además de aumentar el
error, el árbol es mayor (26 hojas frente a las 25 anteriores). Sólo reproducimos aquí los
datos referentes a la eficiencia, por comodidad:
Number of Rules : 26
Time taken to build model: 0.86 seconds
=== Cross-validation ===
=== Summary ===
Correlation coefficient
Mean absolute error
Root mean squared error
Relative absolute error
Root relative squared error
Total Number of Instances
Minería de Datos
0.8627
3.2864
4.8185
49.4398 %
52.443 %
506
14
Inteligencia en Redes de Comunicaciones
Si ponemos la opción Unpruned=True, obtenemos un modelo con error
ligeramente menor, pero con un mayor número de modelos lineales:
Number of Rules : 193
Time taken to build model: 0.72 seconds
=== Cross-validation ===
=== Summary ===
Correlation coefficient
Mean absolute error
Root mean squared error
Relative absolute error
Root relative squared error
Total Number of Instances
0.9149
2.3831
3.7099
35.8505 %
40.3777 %
506
3.2.3. Comparativa entre varios métodos
El resumen de los resultados obtenidos es el siguiente:
Método
trees.DecissionStump
trees.m5.M5P (build regresión tree = False)
trees.m5.M5P (build regresión tree = True)
trees.m5.M5P (Unpruned=True)
Minería de Datos
Relative Absolute Error
84.4331 %
37.6897 %
49.4398 %
35.8505 %
15
Inteligencia en Redes de Comunicaciones
4. Referencias
•
http://www.cis.temple.edu/ingargio
•
“Data Mining: Practical Machine Learning Tools and Techniques with Java
Implementations”, Witten, Frank, 2000.
•
http://www.cs.washington.edu/dm/vfml/modules.html
•
http://www.personal.psu.edu/users/a/j/ajb288/Meteo473/Milestone4/MS4definiti
ons.html
Minería de Datos
16
Descargar