Para aplicar las medidas de diversidad se implementó una aplicación visual Java con el objetivo de facilitar el uso de estas medidas de diversidad.
Para la utilización de esta aplicación, se deben realizar previamente una serie se pasos o acciones, a partir de los cuales se obtendrán los datos de entrada del sistema.
Lo primero es aplicar a la base de datos los modelos de clasificadores que se desean combinar, esto se tiene que hacer utilizando el software WEKA, y salvar la salida de cada clasificador. Es importante indicar que hay que marcar, en WEKA, la opción para que salve las predicciones que dio el clasificador para cada uno de los casos. En la Figura 2.2 se presentan las predicciones de un clasificador para un problema de 3 clases.
Inst # actual predicted error probability distribution
1 3:3 1:1 + *0.972 0.009 0.018 2 3:3 1:1 + *0.943 0.023 0.035 3 1:1 1:1 *0.947 0.051 0.002 4 2:2 3:3 + 0.000 0.479 *0.521 5 1:1 1:1 *0.982 0.018 0.000 6 1:1 1:1 *0.971 0.029 0.001 7 3:3 3:3 0.000 0.006 *0.993
Figura 2.2 Sección de predicciones en un fichero de salida de un clasificador en WEKA
Como se puede observar en las instancias 1, 2 y 4 el clasificador clasificó incorrectamente, en la primera y en la segunda la clase era 3 y la clasificó como 1 y en la cuarta la clase era 2 y la clasificó como 3.
Otra cosa es que la evaluación de los clasificadores se debe hacer con un conjunto de prueba que puede ser el de entrenamiento o una base de prueba. Las medidas no pueden aplicarse al resultado de la validación cruzada porque la validación cruzada mezcla
para un caso en específico que predicción dio el clasificador, o sea, no se podría unificar las salidas de los clasificadores para los mismos casos de la base. Una vez terminadas las corridas, todos los ficheros de salida se colocarán en una carpeta, la cual será un dato de entrada para la aplicación.
Como se dijo anteriormente, el otro paso a realizar es la confección de un fichero en el cual se ubicarán las combinaciones posibles para los clasificadores. El número de combinaciones está dado por la combinatoria entre el número de clasificadores a combinar y el número de clasificadores por modelo de multiclasificador. En cada línea del fichero se pondrá una combinación posible. A continuación se muestra un ejemplo de cómo sería este fichero si se quisiera combinar cinco clasificadores en grupos de tres, dando lugar a 10 posibles combinaciones.
1,2,3 1,2,4 1,2,5 1,3,4 1,3,5 1,4,5 2,3,4 2,3,5 2,4,5 3,4,5
Figura 2.3 Fichero de combinaciones posibles de 5 clasificadores en grupos de 3
Una vez construido el fichero de combinaciones y la carpeta con las salidas de los modelos de clasificadores, hay que establecer el número de modelos de multiclasificador que se quieren seleccionar por medida de diversidad. Con esto la aplicación calculará las medidas de diversidad para cada subconjunto de clasificadores y se quedará con los mejores modelos. La cantidad de modelos la determina el usuario.
La Figura 2.4 muestra la aplicación de las medidas de diversidad. Se observa donde se debe ubicar el fichero con las combinaciones posibles así como, el directorio con la salida de los clasificadores, el fichero de salida y el número de combinaciones por medida. El botón “Calcular Diversidad” inicia el cálculo de las medidas de diversidad utilizando los datos de entrada.
Figura 2.4 Aplicación de las medidas de diversidad
Como puede verse en la Figura 2.5, también se da la opción de seleccionar cuáles de las medidas se quieren aplicar. La salida mostrará sólo aquellas que el usuario haya seleccionado.
Después de haber realizado todos estos pasos, se debe seleccionar un fichero en el cual se almacenarán los datos de salida. En el fichero de salida cada fila representa una modelo de multiclasificador. De cada modelo se especifica, el valor de cada una de las medidas de diversidad que se hayan seleccionado, el nombre de los clasificadores que conforman el modelo, la cantidad de veces que este modelo está entre los mejores por medidas de diversidad y como se distribuyen estos modelos en cada una de las medidas, o sea, decir qué lugar ocupa el modelo en cada una de las medidas en las que él se ubicó entre los mejores. Los modelos aparecen ordenados por la cantidad de veces que están en las distintas medidas. Esto último se hace para si el usuario no tiene bien definido qué medida de diversidad usar, al menos pueda tener una heurística para seleccionar los clasificadores con varias de estas medidas, o sea, seleccionar aquel grupo de clasificadores que obtuvo mejores resultados en un mayor número de medidas de diversidad.
2.2.2.¿Cómo adicionar una nueva medida de diversidad?
Las medidas de diversidad vistas en este trabajo no son las únicas que existen, de hecho en la literatura existen muchísimas, pero no se ha probado todavía la superioridad de ninguna. En este trabajo hemos implementado las medidas más utilizadas. El sistema se conformó de forma que permite al usuario, fácilmente, agregar nuevas medidas de diversidad.
Si se desea agregar una medida en forma de pares, habría que agregarla al método
MetPair(). Las medidas enforma de pares se calculan en función de los parámetros a, b,
c, y d que son valores en las matrices A, B, C, y D para un par de clasificadores.
A continuación se muestra como se agrega una medida de diversidad en forma de pares:
met[2] = (b / total) + (c / total);
Donde met es un arreglo en el cual cada entrada es una medida de diversidad y total el número total de instancias. La nueva medida se agrega como una nueva entrada en el arreglo met. Hay que agregar además el nombre de la medida creada al arreglo de nombres de medidas en forma de pares y una entrada en el arreglo que especifica si la
medida hay que minimizarla o maximizarla, para obtener mayor diversidad entre los clasificadores que se comparan.
En caso de la nueva medida sea una medida para todo el conjunto, habría que implementarla y agregarla como un método más de la clase MedDiv. Hay que agregar además una nueva entrada a la lista de nombres de las medidas para todo el conjunto, con el nombre de la nueva medida que aparecerá en el fichero de salida y especificar si la medida hay que minimizarla o maximizarla. A continuación se muestra el método que calcula la medida de desacuerdo entre expertos:
private double calcK(double D, int[] conj, MedDiv mp) {
double p = 0;
for (int i = 0; i < conj.length; i++) {
double correct = mp.getCl()[conj[i] - 1].getCorrect(); double total = mp.getCl()[conj[i] - 1].getPred().length; p += correct / total;
}
p = p / conj.length;
return 1 - (D / (2 * p * (1 - p))); }
Luego de haber creado la nueva medida se modifica el método CalcMedDiv()
agregándola como una nueva entrada al arreglo donde están el resto de las medidas:
met[mp.getMedPair().length+1] = calcK(D, conj, mp);
Aquí se adiciona la medida creada como una nueva entrada del arreglo de medidas.
2.3.Combinación de salidas
La combinación de las salidas es el segundo paso en la construcción de un multiclasificador. En este caso la combinación se hará por fusión, o sea combinando las salidas de los clasificadores de base. Los clasificadores de base tienen como salida un vector con la distribución de probabilidad para cada una de las clases (Figura 2.2), estos vectores son combinados utilizando funciones matemáticas.
Las combinaciones utilizadas están implementadas en WEKA, específicamente en la clase Vote, donde está implementado el método de voto de clasificadores que se hace referencia en el epígrafe 1.5.4.3. Para cada una de las funciones de combinación existe un método. Estas funciones que están implementadas en la clase Vote no resuelven el
cada clasificador de base. Por esta razón se modificaron las funciones que combinan las salidas para que en el momento que un clasificador de base vaya a clasificar una instancia se le realice a la misma una selección de rasgos de acuerdo al clasificador de base en cuestión.
La primera de las formas de combinar las salidas es el promedio de las probabilidades (E. 1.14), donde para cada caso se promedian las salidas de cada uno de los clasificadores de base, siendo la salida del multiclasificador precisamente un vector que contiene este promedio.
Otra es el voto mayoritario (E. 1.17) donde la clase de mayor probabilidad para cada clasificador recibe un voto, la clase que más votos recibe es la que se considera como la predicción del clasificador, en caso de que haya un empate entre dos clases ganadoras, se escogerá aquella que tenga la mayor suma de probabilidad, la salida final es un vector con valor 1 en la clase ganadora y 0 en el resto de las clases.
La última variante de combinación es el máximo (E. 1.15), donde se va seleccionando el máximo de las probabilidades para cada una de las clases, el vector que se obtiene está conformado por estos valores y no es una distribución de probabilidad para las clases pues sus valores no necesariamente suman 1, es por esto que el mismo es normalizado.