análisis del comportamiento del ctc con problemas de
Post on 26-Nov-2021
4 Views
Preview:
TRANSCRIPT
Proyecto Fin de Carrera, Junio de 2013
© 2013 Javier Infante
Facultad de Informática / Informatika Fakultatea
TITULACIÓN: Ingeniería Informática
Análisis del comportamiento del
CTC con problemas de clases muy desbalanceadas del repositorio
KEEL
Alumno: Javier Infante Izquierdo
Director: Txus Pérez de la Fuente
RESUMEN
El desbalanceo de datos es uno de los principales retos del aprendizaje automático
de hoy en día. Ocurre cuando el número de instancias de una de las clases es muy superior
al número de instancias de la otra. El CTC fue diseñado en el contexto de la detección de
clientes fraudulentos de una empresa aseguradora.
El objetivo de este trabajo es comparar el desempeño o rendimiento del algoritmo
CTC con un conjunto de resultados disponibles en la bibliografía para 16 algoritmos de
aprendizaje automático basados en genéticos y conocidos como GBML (para la inducción
de reglas) y otros 6 clásicos no-evolutivos, empleando para ello el mismo conjunto de
particiones para el entrenamiento/testeo de una validación basada en 5-fold-cross
validation empleada en 33 bases de datos.
Para ello, dos experimentos han sido realizados utilizando la misma metodología
experimental empleada en el trabajo de referencia. Los resultados para el primero
muestran que el CTC supera a la mayoría de los algoritmos, obteniendo la segunda
posición en la clasificación promedio entre todos los algoritmos, pero sin diferencias
estadísticamente significativas con el primero, el Ripper. Por lo tanto, podemos afirmar
que el CTC logra resultados competitivos cuando se utiliza para tratar con bases de datos,
reducidas y desequilibradas.
En la segunda experimentación sobre el mismo conjunto de 33 bases de datos pero
habiéndoles aplicado la técnica SMOTE anteriormente, el CTC se sitúa en la zona media
de la clasificación promedio, obteniendo la sexta posición. Esta segunda experimentación
es menos extensa que la primera y simplemente busca ser punto de partida para futuras
investigaciones, por considerar que los objetivos del proyecto quedan cumplidos con el
primer experimento.
Para poder realizar ambas experimentaciones ha sido necesario adaptar la
plataforma encargada de generar las submuestras (GureKS) que se emplearán
posteriormente para la construcción de los árboles.
Palabras clave: Class imbalance problem, algoritmo CTC, árbol consolidado, árbol de
decisión, genetics-based machine learning.
AGRADECIMIENTOS
Este trabajo no hubiera sido posible sin la valiosa ayuda de todas las personas que
han colaborado directa o indirectamente en el proyecto y a las que quedo muy agradecido.
En primer lugar quisiera agradecer a mi tutor Txus la oportunidad que me ha
brindado para realizar este proyecto y aprender de él, la disponibilidad que ha mostrado
en todo momento, el trato recibido y la confianza depositada en mí para la realización
de este proyecto.
En global, al grupo de investigación del que forma parte, el grupo ALDAPA, el
permitirme realizarlo, los recursos puestos en mi mano (4 máquinas) y la oportunidad que
me ha surgido de ir al congreso CEDI con los resultados obtenidos en este proyecto.
En el plano personal, no puedo dejar de agradecer a mi madre Conce y mi padre
Antoño, aunque ya no esté entre nosotros, todo lo que han hecho para que pueda llegar
hasta este punto, y la paciencia que ha tenido mi madre sobre todo en los primeros años
en los que los resultados académicos no fueron los esperados.
A mi hermano, Carlos, que también ha aportado su granito de arena y que en estos
momentos está acabando también su Licenciatura en Farmacia, empezamos juntos y
acabaremos a la vez.
Por último no me quiero olvidar de mis compañeros de facultad, y amigos, a los
que a partir de ahora podré dedicar más tiempo.
A todos, muchas gracias.
Irún, Junio 2013.
INDICE Capítulo 0
Introducción
0.1 Introducción y motivación ...................................................................................................... 2
0.2 Antecedentes y estado del arte .............................................................................................. 3
0.3 Objetivos ................................................................................................................................. 6
0.4 Estructura de la memoria ........................................................................................................ 7
Capítulo 1
Minería de datos
1.1 Introducción y motivación .................................................................................................... 10
1.2 Proceso de extracción de conocimiento ............................................................................... 11
1.3 Técnicas de minería de datos ................................................................................................ 13
1.4 Áreas de aplicación ............................................................................................................... 17
Capítulo 2
Aprendizaje automático
2.1 Introducción .......................................................................................................................... 20
2.2 Técnicas de aprendizaje: Tipos y conceptos básicos ............................................................. 21
2.3 Evaluación en la clasificación supervisada ............................................................................ 23
2.3.1 AUC area under curbe ........................................................................................... 24
2.3.2 Error o tasa de error .............................................................................................. 24
2.3.3 GM ......................................................................................................................... 24
2.3.4 Kappa ..................................................................................................................... 25
2.3.5 TPRate.................................................................................................................... 25
2.3.6 Precisión o precisión positiva ................................................................................ 25
2.3.7 F-Value ................................................................................................................... 25
2.4 Técnicas de validación ........................................................................................................... 26
2.4.1 Holdout .................................................................................................................. 26
2.4.2 Submuestreo aleatorio .......................................................................................... 27
2.4.3 Validación cruzada................................................................................................. 27
2.4.4 Validación cruzada dejando uno fuera (Leave one out)........................................ 28
2.4.5 BootStrapping ........................................................................................................ 28
2.5 Test de significancia .............................................................................................................. 29
Capítulo 3
Árboles de clasificación
3.1 Introducción .......................................................................................................................... 34
3.2 Descripción general de los árboles de clasificación .............................................................. 35
3.2.1 Estructura de los árboles ....................................................................................... 35
3.3 Algoritmos principales y sus características .......................................................................... 36
3.3.1 CLS concept learning system ................................................................................. 37
3.3.2 ID3 ......................................................................................................................... 37
3.3.4 Algortimo C4.5 ....................................................................................................... 38
3.3.5 CHAID algoritmo Chi Squared AID ......................................................................... 39
3.4 Introducción a los árboles de clasificación consolidados ...................................................... 39
Capítulo 4
Problema del desbalanceo de datos
4.1 Introducción a la problemática ............................................................................................. 46
4.2 Técnicas empleadas para solucionarlo.................................................................................. 47
4.2.1 Técnicas de remuestreo ........................................................................................ 47
4.2.1.1 Métodos de Oversampling .................................................................... 47
4.1.2.2 Métodos de Undersampling .................................................................. 49
4.2.1.3 Algoritmos evolutivos para remuestreo ................................................ 51
4.2.2 Adaptación de los algoritmos ................................................................................ 52
4.2.3 Técnicas de remuestreo y adaptación ................................................................... 52
Cápitulo 5
Material, Desarrollo y Métodos
5.1 Introducción .......................................................................................................................... 54
5.2 Algoritmos comparados ........................................................................................................ 58
5.2.1 Algoritmos basados en genéticos .......................................................................... 58
5.2.2 Algoritmos clásicos de clasificación ....................................................................... 59
5.3 Condiciones del estudio de KEEL ........................................................................................... 59
5.4 Bases de datos del estudio .................................................................................................... 59
5.5 Bases de datos del formato KEEL .......................................................................................... 65
5.6 Bases de datos del formato UCI ............................................................................................ 69
5.7 Adaptación de la herramienta GureKS al formato KEEL ....................................................... 70
5.7.1 Lectura de la BD KEEL y almacenamiento en la estructura de datos .................... 72
5.7.1.1 Lectura del formato de datos ................................................................ 75
5.7.1.2 Lectura de la matriz de datos ................................................................ 77
5.7.2 Generación de ficheros .names y . data ................................................................ 79
5.8 Proceso técnico y software empleado .................................................................................. 81
5.8.1 GureKS ................................................................................................................... 81
5.8.2 Haritza ................................................................................................................... 87
5.8.3 Kurbak.................................................................................................................... 92
5.8.4 Visual Basic Scripting y Excel ................................................................................. 95
5.9 Introducción a la experimentación realizada ............................................................... 102
Capítulo 6
EXPERIMENTO 1
6.1 Introducción al experimento [1] ......................................................................................... 106
6.2 Metodología experimental .................................................................................................. 106
6.3 Resultados ........................................................................................................................... 110
Capítulo 7
EXPERIMENTO 2
7.1 Introducción al experimento [2] ......................................................................................... 121
7.2 Metodología experimental .................................................................................................. 121
7.3 Resultados ........................................................................................................................... 123
Cápitulo 8
8.1 Resultados y discusión ........................................................................................................ 130
8.2 Líneas abiertas ..................................................................................................................... 131
Bibliografía ........................................................................................................................... 133
Apéndice 1 Resumen de resultados de las Bases de datos ......................................... 137
Apéndice 2 Funciones programadas para la ampliación al formato KEELde GureKS
................................................................................................................................................... 153
Apéndice 3 Intoducción a las herramientas de desarrollo .......................................... 165
INDICE DE LAS FIGURAS Y TABLAS
Ilustración 1 Etapas que componen el proceso de descubrimiento de conocimiento a partir de bases de
datos (KDD) _________________________________________________________________________ 12 Ilustración 2 Gráfico que ilustra las disciplinas relacionadas con la minería de datos _______________ 13 Ilustración 3 Representación gráfica de un árbol de clasificación _______________________________ 14 Ilustración 4 Ejemplo de aplicación del clasificador KNN _____________________________________ 15 Ilustración 5 Esquema de una red neuronal y a su derecha de una neurona ______________________ 15 Ilustración 6 Red bayesiana para la detección de cancer de próstata ____________________________ 15 Ilustración 7 Separación de un conjunto de datos mediante SVN _______________________________ 16 Ilustración 8 Ejemplo de aplicación del K-means ____________________________________________ 16 Ilustración 9 Arquitectura típica de un mapa SOM ___________________________________________ 17 Ilustración 10 Notación para el paradigma de clasificación ___________________________________ 22 Ilustración 11 Enfoque general del paradigma de clasificación supervisada ______________________ 22 Ilustración 12 Tabla de contigencia o matriz de confusión ____________________________________ 23 Ilustración 13 Representación de un curva ROC _____________________________________________ 24 Ilustración 14 Método de validación Holdout H _____________________________________________ 27 Ilustración 15 Validación cruzada aleataria con 3 folds _______________________________________ 28 Ilustración 16 Validación cruzada dejando uno fuera ________________________________________ 28 Ilustración 17 Diagrama CD para los test de Nemenyi y Bonferroni-Dunn ________________________ 31 Ilustración 18 Pseudocódigo del algoritmo TDIDT ___________________________________________ 35 Ilustración 19 Estructura de un árbol de clasificación ________________________________________ 35 Ilustración 20 Pseudocódigo del algoritmo ID3 _____________________________________________ 38 Ilustración 21 Pseudocódigo del algoritmo C4.5 _____________________________________________ 39 Ilustración 22 Ejemplo paso a paso del proceso de creación de un árbol consolidado _______________ 41 Ilustración 23 Algoritmo de construcción de árboles consolidados _____________________________ 42 Ilustración 24 Ejemplo gráfico de una distinción no balanceada de datos ________________________ 46 Ilustración 25 Representación gráfica de la técnica de Oversampling ___________________________ 48 Ilustración 26 Algoritmo SMOTE en Pseudocódigo ___________________________________________ 48 Ilustración 27 Representación gráfica del undersampling _____________________________________ 49 Ilustración 28 Aplicación Tomelinks para eliminar ruido y datos borderlaine ______________________ 50 Ilustración 29 Balanceo de datos: a) conjunto de datos original b) oversampling c) Tomelinks d)
eliminación de ruido y bordes ___________________________________________________________ 51 Ilustración 30 Proceso completo de un estudio para un conjunto de bases de datos ________________ 57 Ilustración 31 Interfaz principal de la herramienta KEEL ______________________________________ 66 Ilustración 32 Conjunto de clases que forman la aplicacion GureKS _____________________________ 72 Ilustración 33 Workspace del proyecto GureKS _____________________________________________ 73 Ilustración 34 Menú principal de la herramienta GureKS ______________________________________ 82 Ilustración 35 Opciones del menú archivo de la aplicación GureKS ______________________________ 82 Ilustración 36 Opciones para la generación de submuestras ___________________________________ 83 Ilustración 37 Fichero ejecutable .bat en MS-DOS ___________________________________________ 84 Ilustración 38 Script para generación de 25 submuestras de la bd ecoli-0_vs-1 ____________________ 84 Ilustración 39 Proceso de creación de submuestras de entrenamiento en el GureKS _______________ 85 Ilustración 40 Fichero .lid para la base de datos abalone9-18 __________________________________ 85 Ilustración 41 Proceso de creación para las muestras de test en GureKS _________________________ 86 Ilustración 42 Apariencia de la aplicación Haritza ___________________________________________ 88 Ilustración 43 Botones para expandir nodo y contraer nodo ___________________________________ 88
Ilustración 44 Ventana del menú archivo, cargar muestra ____________________________________ 88 Ilustración 45 Fichero ejecutable en MS-DOS para lanzar experimentos en Haritza ________________ 89 Ilustración 46 Script para creación del árbol CTC, poda y test __________________________________ 90 Ilustración 47 Proceso completo de la creación, poda y test de árboles en Haritza _________________ 90 Ilustración 48 Fichero .har expandido _____________________________________________________ 91 Ilustración 49 Fichero .app resultante del testeo del árbol ____________________________________ 91 Ilustración 50 Apariencia de la aplicación Kurbak ___________________________________________ 92 Ilustración 51 Ejemplo de fichero meta con la ruta del app ____________________________________ 93 Ilustración 52 Fichero .aue de salida del Kurbak ____________________________________________ 94 Ilustración 53 Proceso completo del Kurbak ________________________________________________ 94 Ilustración 54 Menú de configuración de las opciones en Excel 2013 ____________________________ 95 Ilustración 55 Accceso rápido al entrono de trabajo VBScripting _______________________________ 95 Ilustración 56 Fichero Excel con las bases de datos del estudio _________________________________ 96 Ilustración 57 Ficheros Excel generados con las medidas de bondad ___________________________ 101 Ilustración 58 Proceso de creación de los scripts y ejecutables necesarios para la experimentación __ 102 Ilustración 59 Proceso de la creación de submuestras para el primer experimento ________________ 107 Ilustración 60 Valor del GM en función del número de submuestras y del tamaño de las mismas para el
CTC _______________________________________________________________________________ 110 Ilustración 61 Diagrama CD para los test de Nemenyi y Bonferroni-Dunn para el algoritmo CTC y tamaño
de submuestras TamSizeOfMinClass _____________________________________________________ 113 Ilustración 62 Diagrama CD para los test de Nemenyi y Bonferroni-Dunn para el algoritmo CTC y tamaño
de submuestras Tammax ______________________________________________________________ 114 Ilustración 63 Proceso llevado a cabo para la generación de submuestras en las bases de datos SMOTE
__________________________________________________________________________________ 122 Ilustración 64 Diagrama CD para los test de Nemenyi y Bonferroni-Dunn para el algoritmo CTC en sus 3
tamaños de submuestra ______________________________________________________________ 125 Ilustración 65 Apariencia principal de la aplicación Visual C++ y sus principales secciones __________ 166 Ilustración 66 Apariencia gráfica del workspace ___________________________________________ 166 Ilustración 67 Apariencia del Debugger del Visual C++ ______________________________________ 168 Ilustración 68 Apariencia del editor de VBScripting del excel __________________________________ 168 Ilustración 69 Jerarquía de clases en Excel ________________________________________________ 169 Ilustración 70 Cuerpo de la definición de una subrutina _____________________________________ 170 Ilustración 71 Ejemplo de definción de una funcion _________________________________________ 170
Tabla 1 Valores críticos del test de Nemenyi. _______________________________________________ 30 Tabla 2Valores críticos del test de Bonferroni-Dunn. _________________________________________ 30 Tabla 3 Tamaño y número de submuestras empleadas para cada una de las bases de datos ________ 108 Tabla 4 Resultado en función del GM para las 33 imbalanced datasets y los 11 algoritmos seleccionados
del artículo _________________________________________________________________________ 109 Tabla 5 Ranking de los 11 algoritmos seleccionados (5 GBML + 6 classical) _____________________ 109 Tabla 6 Diferencia relativa para submuestras al tamaño TamMax en la izquierda y TamSizeOfMinClass a
la derecha __________________________________________________________________________ 111 Tabla 7 Número de submuestras óptimo para cada base datos, a la izquierda TamSizeOfMinClass y a la
derecha para TamMax ________________________________________________________________ 112 Tabla 8 Resultado en función de GM para los 33 imbalanced datasets y los 12 distintas configuraciones
del algoritmo CTC ____________________________________________________________________ 114 Tabla 9 Resultados medios y de ranking para el CTC con 200 submuestras y TamMax _____________ 115 Tabla 10 Los 11 algoritmos seleccionados del estudio en ranking con el CTC en su versión de 200
submuestras y TamMax _______________________________________________________________ 116
Tabla 11 Los 11 algoritmos seleccionados del estudio en ranking con el CTC en su versión de número
submuestras al 200% y TamMax ________________________________________________________ 117 Tabla 12 Tamaño de submuestras empleadas para cada una de las bases de datos SMOTE ________ 122 Tabla 13 Resultado en función de GM para los 33 imbalanced datasets y los 11 algoritmos seleccionados
del artículo _________________________________________________________________________ 122 Tabla 14 Rankinsg de los 11 algoritmos seleccionados (5 GBLM + 6 classical) ____________________ 123 Tabla 15 Resultado en función de GM para los 33 imbalanced datasets y las 3 distintas configuraciones
del algoritmo CTC ____________________________________________________________________ 124 Tabla 16 Resultados medios y de ranking para el CTC y TamMax _____________________________ 125 Tabla 17 Resultado en función de GM para los 33 imbalanced datasets y el CTC al tamaño de
submuestras TamMax ________________________________________________________________ 126 Tabla 18 Los 11 algoritmos seleccionados del estudio en ranking con el CTC en su versión con
submuestras al tamaño TamMax _______________________________________________________ 127
Capítulo 0
Introducción
En este capítulo se hace una introducción al trabajo realizado en este proyecto,
la motivación del mismo y el estado del arte, así como una descripción de los objetivos
que se pretenden abordar. Finalmente se describe capítulo a capítulo la estructura que
sigue esta memoria.
Capítulo 0 Introducción
2
0.1 Introducción y motivación
El trabajo que se desarrolla en esta memoria se centra en el análisis del
comportamiento del algoritmo CTC diseñado por el grupo de investigación ALDAPA
http://www.sc.ehu.es/acwaldap/ para un conjunto de bases de datos muy desbalanceadas.
El objetivo que persigue el algoritmo CTC, es el de construir un clasificador que
tuviera en cuenta una distribución de clases distinta a la original, y además que el
paradigma fuera explicativo, para poder proporcionar al usuario el motivo de la
clasificación. Estos clasificadores han sido llamados árboles consolidados (Consolidated
Trees, CT Trees o CTC).
En concreto, se pretende realizar el estudio sobre las bases de datos disponibles
en el sitio web asociado al proyecto KEEL (http://sci2s.ugr.es/keel/index.php) y que han
sido ya utilizadas con diferentes algoritmos diseñados para afrontar el problema de clases
desbalanceadas (Class imbalance problem) en [FGLBH10].
A. Fernandez, S. García, J. Luengo, E. Bernadó-Mansilla, F. Herrera, "Genetics-Based Machine
Learning for Rule Induction: State of the Art, Taxonomy and Comparative Study". IEEE Transactions on
Evolutionary Computation 14:6 (2010) 913-941, http://dx.doi.org/10.1109/TEVC.2009.2039140
Las bases de datos se nos facilitan con las muestras cross-validation ya
preparadas, para reproducir el experimento bajo las mismas condiciones.
Junto a las bases de datos, también se encuentran los resultados obtenidos
asociados a la experimentación de este trabajo y se pueden consultar en el sitio web creado
a tal efecto: http://sci2s.ugr.es/gbml/.
Esto hace que los resultados del CTC obtenidos con estas muestras sean
directamente comparables con los conseguidos por todos los algoritmos en el trabajo
mencionado anteriormente.
Para poder construir los árboles de clasificación consolidados a partir de las
muestras facilitadas, será necesario adaptar las plataformas de software del grupo que
implementan el algoritmo CTC (GureKS y Haritza), para que acepten el formato de
muestras utilizado en KEEL.
Para ello, habrá que analizar, comprender y estudiar el formato de datos empleado
en KEEL, así como estudiar el formato de datos de la UCI, estándar empleado en machine
learning y el propio de la herramienta GureKS, puesto que ésta es la generadora de
muestras para construir un árbol consolidado en Haritza.
Con el fin realizar las experimentaciones de la manera más automatizada posible,
se empleará la gramática generadora de scripts, desarrollada en el contexto del grupo
ALDAPA. Esto nos ofrece una mayor comodidad a la hora de realizar las ejecuciones.
Capítulo 0 Introducción
3
Nos apoyaremos en el lenguaje interpretado por Windows scripting host,
VBScript, con el fin de generar los scripts que emplearemos en las plataformas de una
manera automatizada.
Aunque el CTC ha sido ya analizado con problemas de clases desbalanceadas
obteniendo buenos resultados por el grupo de investigación ALDAPA en [AAGMP11] y
a priori puede parecer que este estudio carece de relevancia, cabe destacar que las bases
de datos utilizadas en las experimentaciones hasta ahora eran considerablemente grandes
y no muy desbalanceadas.
Las bases de datos de KEEL son mucho más desbalanceadas y mucho más
pequeñas, por tanto, suponen un problema de aprendizaje mucho más difícil y es
interesante estudiar y analizar el comportamiento del CTC en estos casos que podríamos
denominar “extremos”. Resaltar el hecho de que son públicas, con resultados de 22
algoritmos diferentes, posibilitando al resto de investigadores que añadan los resultados
de sus algoritmos a esta comparativa.
0.2 Antecedentes y estado del arte
En este proyecto se hace un extenso análisis del comportamiento del algoritmo de
construcción de árboles consolidados en el ámbito del Class Imbalance.
Este algoritmo es una modificación del algoritmo propuesto por Quinlan,
ingeniero informático, investigador pionero en los campos de la teoría de decisión, y que
ha contribuido de una manera más que destacada en el desarrollo de algoritmos de
creación de árboles de decisión.
Pese al paso de los años, sus obras siguen siendo de obligada lectura y pueden
servir como punto de partida y primer contacto a este modelo de predicción [Qui86] y
[Qui92].
Los árboles de clasificación o árboles de decisión son un modelo de predicción
utilizado en el ámbito del aprendizaje automático (Machine Learning) y de la inteligencia
artificial (Artificial Intelligence), en el que dada una base de datos se crean diagramas de
construcciones lógicas que ayudan a resolver un problema a través de una serie de
condiciones que ocurren de forma sucesiva.
Esta modificación del algoritmo por excelencia dentro de la familia de los árboles
de clasificación fue diseñada e implementada como resultado de la tesis doctoral de mi
tutor en [Per06] y que puede consultarse en la web del grupo.
La motivación principal del desarrollo de este algoritmo surge con el objetivo de
construir un sistema automático de detección del fraude.
El motivo principal por el que se parte del paradigma de clasificación de los
árboles de decisión es que, además de clasificar un elemento nuevo como el resto de
Capítulo 0 Introducción
4
paradigmas, en este contexto, tiene una importancia vital el ofrecer una explicación de la
clasificación realizada en función de las características descriptivas de los casos recogidos
en las bases de datos.
Este algoritmo se basa en el C4.5, al que se decida una sección en el capítulo 3, y
más concretamente en la sección 3.3.4 Algoritmo C4.5, pero extrae el conocimiento de
un conjunto de muestras para construir un árbol de decisión individual. El objetivo era
generar muestras que contengan la proporción de los casos de fraude (clase minoritaria)
estimada por los expertos de la compañía de seguros que se produjo en la realidad.
Por lo tanto, el algoritmo CTC permite extraer conocimiento de un conjunto de
muestras con una distribución de clase distinta de la existente en la muestra original.
La idea se basa en generar un número de submuestras con el fin de cubrir la mayor
parte de los casos de la base de datos original e ir generando nodo a nodo el árbol de
clasificación de cada muestra.
Puesto que no todos los árboles van a elegir la misma variable para dividir el nodo,
se realiza un proceso de votación y se fuerza a dividir el nodo por la variable más votada,
dicho de otra manera, se consolida la variable y de ahí subyace el nombre de este
algoritmo.
Gracias a los trabajos desarrollados por el grupo de investigación y los resultados
obtenidos en éstos, se demostró que el paradigma de consolidación obtiene buenos
resultados en comparación con otros clasificadores simples.
Entre estos trabajos y basándose en la siguiente afirmación de Weiss y Provost,
que se puede consultar en la obra [WP03], cada dominio tiene una distribución óptima de
la clase que se utilizará para el aprendizaje, sea cual sea la distribución original de la
clase. El CTC fue aplicado a muestras generadas con la distribución de clases óptima del
C4.5 en un nuevo estudio, concluyendo que los resultados fueron, en promedio, mejores.
Los autores sospecharon que la distribución de clases óptima para CTC podría ser
diferente.
Como resultado de esta investigación y siguiendo este camino, se dio comienzo a
otra tesis doctoral desarrolla por Iñaki Albisua, cuyo principal objetivo fue valorar el
comportamiento de los árboles consolidados frente a los que son a día de hoy algunos de
los grandes retos del aprendizaje automático, y encontrar la distribución de clases óptima
para el CTC en una experimentación amplia con 30 conjuntos de datos y 14 distribuciones
diferentes de clase, que van desde el 2% al 98%.Este trabajo puede consultarse en la web
del grupo de investigación [ALB12].
Uno de estos retos, en los que los investigadores están realizando un mayor
esfuerzo, es en el denominado Class Imbalance Problem [YW06] [HG09],
Capítulo 0 Introducción
5
En diversos problemas de reconocimiento de patrones, se ha observado que el
desequilibrio de clases puede disminuir el desempeño del clasificador, principalmente en
los patrones de las clases minoritarias.
Esto ocurre puesto que el clasificador intenta reducir el error global, de forma que
el error de clasificación no tiene en cuenta la distribución de los datos.
En estos dominios la clase minoritaria es la que suscita mayor interés y sin
embargo, es la clase donde peores resultados de clasificación se obtienen con los
clasificadores estándares.
Esta es la razón por la que se han realizado numerosas investigaciones, intentando
desarrollar métodos de remuestreo inteligentes, con el fin de equilibrar la clase de las
muestras de entrenamiento antes de llevar a cabo el aprendizaje. Entre ellas las expuestas
en la tesis doctoral mencionada anteriormente, a la que se pueden sumar los siguientes
artículos [AMP10], [BPM04].
Los resultados de la Tesis Doctoral de Iñaki Albisua sugieren que, el algoritmo de
construcción de árboles consolidados es una buena opción a la hora de afrontar problemas
de clases desbalanceadas, más aún, si tenemos en cuenta el ahorro que supone desde el
punto de vista computacional.
En este proyecto se pretende refrendar estas conclusiones y presentar un estudio
sobre las bases de datos disponibles en el sitio web asociado al proyecto KEEL
[AFLDGSH11] que han sido ya utilizadas con diferentes algoritmos diseñados para
afrontar el problema de clases desbalanceadas y comparar los resultados obtenidos por el
CTC, con los resultados publicados en el artículo “Genetics-Based Machine Learning for Rule
Induction: State of the Art, Taxonomy and Comparative Study”.
Los autores proporcionan el estado del arte sobre los algoritmos de aprendizaje
automático (Genetic Based Machine Learning) basado en genéticos. Un enfoque sobre la
inducción de reglas y a continuación, se propone una taxonomía de este tipo de métodos.
También incluyen un estudio comparativo de los algoritmos estudiados con algunos
conocidos algoritmos no evolutivos como CART, AQ, CN2, C4.5, C4.5 Reglas y Ripper.
Para hacer frente a esto, se llevó a cabo una metodología basada en comparaciones
jerárquicas donde, en primer lugar se identifican los algoritmos de mejor desempeño
dentro de cada categoría y, a continuación, selecciona como representantes de la categoría
para la comparación al mejor de cada familia.
Con el fin de estimar el rendimiento de los árboles CTC hemos seguido la misma
metodología utilizada por Fernández et al en dicho artículo, la validación cruzada. Se han
empleado los mismos conjuntos de entrenamiento y test que se encuentran en la web
asociada.
Capítulo 0 Introducción
6
Como resultado de la investigación realizada, se presentará un informe que puede
verse en esta memoria. A modo de finalización, se realizará una pequeña conclusión sobre
los temas tratados, presente en la última parte de la memoria.
0.3 Objetivos
Como se ha dicho anteriormente, el objetivo principal de este proyecto, es el
análisis del comportamiento del algoritmo de construcción de árboles consolidado en el
marco de la problemática Class Imbalance y realizar un detallado estudio comparativo
con los resultados publicados en KEEL para el mismo conjunto de datos en las mismas
condiciones.
Para conseguir este objetivo global se han llevado a cabo los siguientes objetivos
específicos:
Adquirir los conocimientos y fundamentos necesarios sobre los
principales conceptos de los algoritmos de construcción de árboles de
clasificación.
Comprender los fundamentos necesarios sobre el problema del
desbalanceo de clases conociendo las principales técnicas que en su
aplicación han obtenido buenos resultados.
Aprender a utilizar correctamente la librería Microsoft Foundation
Classes. MFC es un conjunto de clases interconectadas por múltiples
relaciones de herencia, que proveen un acceso más sencillo a las API de
Windows.
Estudiar y comprender el formato de las Bases de datos empleado por
KEEL.
Conocer y familiarizarse con las plataformas del grupo ALDAPA en las
que se desarrolla la experimentación.
Estudiar, analizar e interiorizar cómo se encuentran estructuradas las
diferentes secciones de la aplicación GureKS, generados de submuestras.
Implementar en el lenguaje de programación Visual C++ las funciones
necesarias para adaptar la plataforma GureKS al tipo de datos de KEEL y
generar los ficheros necesarios para su ejecución en Haritza.
Estudiar y comprender el formato de las bases de datos de la UCI, que es
el empleado por la plataforma Haritza para la creación de los árboles
(.names y .data)
Capítulo 0 Introducción
7
Comprender los distintos métodos para evaluar la bondad y medir la
capacidad de aprendizaje de un algoritmo.
Saber aplicar los principales test de significancia con el fin de comparar
los algoritmos y poder deducir si hay diferencias estadísticamente
significativas o no.
Aprender a explotar las ventajas que ofrece Excel y más concretamente el
lenguaje Visual Basic scripting, para automatizar la creación de los scripts
necesarios para la ejecución del experimento (Haritza, GureKS, y Kurbak)
Aprender a generar los experimentos sobre las bases de datos mediante el
uso de la gramática creada por el grupo de investigación que facilita la
ejecución.
Desarrollar diferentes “scripts”, capaces de automatizar las comparativas
entre los distintos algoritmos del estudio de forma sencilla e intuitiva.
Probar, experimentar y determinar la validez del algoritmo CTC.
0.4 Estructura de la memoria
Esta memoria se divide en 8 capítulos y 3 apéndices. En el capítulo 0, se hace una
breve introducción al núcleo principal de este proyecto, el algoritmo de construcción de
árboles consolidados o CTC, recordando la motivación, antecedentes y detallando los
objetivos que se persiguen abordar.
En los siguientes 4 capítulos, se desarrolla la base teórica en la que se asienta este
proyecto. Se comienza con una introducción a la disciplina de la minería de datos, campo
de la computación referido al proceso que intenta descubrir patrones en grandes
volúmenes de datos, en el capítulo 1, se describen las técnicas principales y se nombran
las aplicaciones más conocidas.
En el capítulo 2, nos centramos en la técnica de aprendizaje supervisado, haciendo
una introducción al propio contexto, las técnicas principales y los conceptos teóricos para
evaluar estas técnicas, como son la bondad de un clasificador y los test de significancia.
En el 3, se hace una introducción al modelo de predicción en que se basa el
algoritmo a estudio. Las características, fundamentos y conceptos de los árboles de
clasificación. Así como describir brevemente los algoritmos principales de esta familia.
Para concluir el capítulo, se realiza una descripción detallada del algoritmo de
construcción de árboles consolidados y sus particularidades.
Capítulo 0 Introducción
8
En el capítulo cuatro, con el que se finaliza la base teórica, nos encontraremos el
planteamiento del problema del desbalanceo de clases, así como las distintas técnicas
desarrolladas por la comunidad de investigadores para luchar contra este fenómeno.
Así mismo se pretende introducir todos los términos, técnicas del aprendizaje
supervisado, contexto de los árboles de clasificación y técnicas de balanceo de datos que
se emplearán a lo largo del presente trabajo.
El capítulo 5 lo forma el desarrollo, y abarca desde la implementación de las
funciones necesarias para poder llevar a cabo la experimentación, pasando por las
herramientas que la harán posibles, su funcionamiento y las técnicas empleadas.
En los capítulos 6 y 7 se realiza una descripción detallada de los experimentos que
se llevaron a cabo, con el objetivo de evaluar el comportamiento del algoritmo CTC en
el conjunto de bases de datos desbalanceadas proporcionadas por KEEL.
Finalmente se encuentran las conclusiones obtenidas en este trabajo y las líneas
abiertas de cara a una futura investigación.
Tras las conclusiones, se presenta la bibliógrafa y algunos apéndices de interés
como pueden ser un resumen de los resultados, el código de programación que hace
posible la lectura de bases de datos KEEL y una pequeña introducción a los entornos de
desarrollo Microsoft Visual C+ 6.0 y VisualBasicScripting.
Capítulo 1
Minería de datos
En este capítulo se hace una introducción a la disciplina de la minería de datos,
comenzando desde el proceso de extracción de conocimiento a partir de un gran volumen
de datos, para centrarnos después en los procesos propiamente dichos y terminando con
las aplicaciones típicas de esta área de la computación.
Capítulo 1 Minería de datos
10
1.1 Introducción y motivación
En este capítulo se hace una introducción a los conceptos fundamentales
relacionados con la minería de datos (data mining) que nos ayudarán a hacernos una idea
general sobre esta disciplina.
Estamos en una era que podríamos denominar como la era de la información.
Consideramos que la información conduce al poder y al éxito y gracias a las tecnologías
más modernas somos capaces de recolectar una gran cantidad de datos.
La información almacenada es útil para explicar el pasado, entender el presente y
predecir la información futura. Desafortunadamente, esta colección de datos está
almacenada en estructuras dispares y muy rápidamente se convirtió en abrumadora.
Este caos inicial llevó a la creación de bases de datos estructuradas y sistemas de
gestión de bases de datos (DBMS). La proliferación de sistema de gestión de bases de
datos también ha contribuido a la recolección masiva de datos.
En los últimos años, ha existido un gran crecimiento en nuestras capacidades de
generar y colectar datos, debido básicamente al gran poder de procesamiento de
las máquinas como a su bajo costo de almacenamiento.
Sin embargo, dentro de estas enormes masas de datos existe una gran cantidad
de información "oculta", a la que no se puede acceder por las técnicas clásicas de
recuperación de la información.
Los sistemas clásicos de estadística son difíciles de usar y no escalan al
número y tipo de datos que se suelen encontrar en bases de datos.
El usuario final no es un experto en aprendizaje automático ni en estadística.
El usuario no puede perder más tiempo analizando los datos.
La enorme abundancia de información desborda la capacidad humana de
comprenderla y éste es el principal cometido de la minería de datos. Resolver problemas
analizando los datos presentes en las bases de datos. El sistema encuentra y sugiere
modelos.
Ventajas que aporta:
• Generar un modelo requiere menos esfuerzo manual y permite evaluar
cantidades ingentes de datos.
• Se pueden evaluar muchos modelos generados automáticamente, y esto
aumenta la probabilidad de encontrar un buen modelo.
• El analista necesita menos formación sobre construcción de modelos y
menos experiencia.
Capítulo 1 Minería de datos
11
1.2 Proceso de extracción de conocimiento
¿Qué es la minería de datos y el knowledge discovery in databases?`
Debido a este almacenamiento masivo de la información, bien sea en bases de
datos, repositorios y archivos, se hace especialmente importante y necesario desarrollar
técnicas nuevas que faciliten el análisis de los datos, la interpretación y la extracción de
conocimiento relevante que pueda ayudar en la toma de decisiones.
Veamos tres definiciones sobre el proceso de descubrir conocimiento en las bases
de datos:
El knowledge discovery in databases o KDD a partir de ahora, es el proceso
de identificación de información, válida, novedosa, útil y comprensible. La
minería de datos es el núcleo matemático del proceso del KDD y una etapa
dentro de este proceso [MR10].
Proceso no trivial de identificar patrones válidos, novedosos, potencialmente
útiles y en última instancia comprensibles a partir de los datos [Fay96].
El descubrimiento de conocimiento en bases de datos, es un proceso que
consta de unos pasos, que traducen las colecciones de datos en bruto a nuevos
conocimientos [OZ99].
KDD nace como interfaz y se nutre de diferentes disciplinas:
Estadística.
Sistemas de información / bases de datos.
Aprendizaje automático / IA.
Visualización de datos.
Computación paralela / distribuida.
Interfaces de lenguaje natural.
Básicamente, el KDD está compuesto por los pasos de selección de datos (los
datos relevantes para el análisis se recuperan de la base de datos), la limpieza de los
mismos (limpiar y preparar los datos), data mining (construir modelos
descriptivos/predictivos) y evaluación del modelo (conseguir los modelos
descriptivos/predictivos que mejor solucionen el problema) [HK06].
Capítulo 1 Minería de datos
12
Filtrado de datos: Mediante el preprocesado, se filtran los datos (se
eliminan valores incorrectos, no válidos, desconocidos, etc.), se obtienen muestras
de los mismos, o se reducen el número de valores posibles (mediante redondeo,
agrupamiento, etc.).
Selección de variables: La selección de características reduce el tamaño de
los datos, eligiendo las variables más influyentes en el problema, sin apenas
sacrificar la calidad del modelo de conocimiento obtenido del proceso de minería.
Los métodos para la selección de características son dos:
1. Los basados en la elección de los mejores atributos del problema.
2. Los que buscan variables independientes mediante test de sensibilidad,
algoritmos de distancia o heurísticos.
Extracción de Conocimiento: Se obtiene un modelo de conocimiento, que
representa patrones de comportamiento observados en los valores de las variables
del problema o relaciones de asociación entre dichas variables.
Interpretación y evaluación: Finalmente se procede a su validación,
comprobando que las conclusiones son válidas y satisfactorias.
Minería de datos es un término genérico que engloba resultados de investigación,
técnicas y herramientas usadas para extraer información útil de grandes bases de datos.
Situaremos la minería de datos mediante algunas definiciones que se han dado
sobre la misma:
“MD es la extracción no trivial de información implícita, desconocida
previamente, y potencialmente útil desde los datos” G. Piatesky-Shapiro and W.J.
Frawley.
Ilustración 1 Etapas que componen el proceso de descubrimiento de conocimiento a partir de bases de datos (KDD)
Capítulo 1 Minería de datos
13
“MD es el proceso de extracción y refinamiento de conocimiento útil desde
grandes bases de datos” E. Simoudis, B. Livezey and R. Kerber.
“MD es el proceso de extracción de información previamente desconocida, válida
y procesable desde grandes bases de datos para luego ser utilizada en la toma de
decisiones” P. Cabena, P. Hadjinian, R. Stadler, J. Verhees, A.Zanasi.
"MD es la exploración y análisis, a través de medios automáticos y
semiautomáticos, de grandes cantidades de datos con el fin de descubrir patrones y
reglas significativos" M.Berry, and G.Linoff.
«Iterative process of extracting hidden predictive patterns from large databases,
using AI technologies as well as statistics techniques» Jesus Mena.
La última definición enfatiza cuáles son las raíces o los fundamentos en los que
se sustenta la minería de datos: la inteligencia artificial y la estadística. Comúnmente se
ha calificado la minería de datos como la bisagra entre la
estadística y la computación ya que hace uso de todas las
técnicas que puedan aportar información útil, desde un
sencillo análisis gráfico, pasando por métodos estadísticos,
complementados con métodos y algoritmos del campo de la
inteligencia artificial y el aprendizaje automático que
resuelven problemas típicos de agrupamiento automático,
clasificación, detección de patrones, asociación de atributos,
etc.
1.3 Técnicas de minería de datos
Las técnicas de la minería de datos provienen de la inteligencia artificial y de la
estadística, dichas técnicas, no son más que algoritmos, más o menos sofisticados que se
aplican sobre un conjunto de datos para obtener unos resultados. Resumiendo, se podría
definir la IA como la disciplina que se ocupa en ofrecer soluciones algorítmicas con un
coste computacional aceptable, mientras que la estadística se ha preocupado más del
poder de generalización de los resultados obtenidos con el fin de poder inferir los
resultados a situaciones más generales.
No existe una técnica para resolver un problema de minería de datos cualquiera
que sea éste, sino distintas aproximaciones que dependiendo del dominio tendrán mejores
resultados.
Nos centraremos más profundamente en este tipo de algoritmos en el capítulo 2,
explicando más detenidamente los fundamentos y conceptos básicos del aprendizaje
supervisado.
Ilustración 2 Gráfico que ilustra las disciplinas relacionadas con la minería de datos
Capítulo 1 Minería de datos
14
Según el objetivo del análisis de los datos, los algoritmos utilizados se clasifican
en supervisados y no supervisados (Weiss y Indurkhya, 1998):
Algoritmos supervisados (o predictivos): Predicen un dato o un conjunto de ellos,
desconocido a priori, a partir de otros conocidos.
Los algoritmos predicen el valor de un atributo de un conjunto de datos, conocidos
otros atributos. A partir de datos cuya etiqueta se conoce se induce una relación entre
dicha etiqueta y otra serie de atributos. Esas relaciones sirven para realizar la predicción
en datos cuya etiqueta es desconocida. Esta forma de trabajar consta de dos fases:
Entrenamiento: Construcción de un modelo usando un subconjunto de datos
con etiquetas conocidas.
Prueba o Test: Prueba del modelo sobre el resto de los datos.
Algunos de los algoritmos más conocidos son:
Árboles de clasificación (Quinlan, 1986; Breiman y col. 1984): Puede verse
como la estructura resultante de la partición recursiva del espacio de
representación a partir del espacio muestral. Esta partición recursiva se traduce
en una organización jerárquica del espacio de representación que puede
modelarse mediante una estructura de tipo árbol. Cada nodo interior contiene
una pregunta sobre un atributo concreto con un hijo por cada posible respuesta
y cada nodo hoja se refiere a una decisión clasificación.
Knn (Covert y Hart, 1967; Dasarathy, 1991): La idea básica sobre la que se
fundamenta este paradigma es que un nuevo caso se va a clasificar en la clase
más frecuente a la que pertenecen sus K vecinos más cercanos. El paradigma
se fundamenta por tanto en una idea muy simple e intuitiva.
Ilustración 3 Representación gráfica de un árbol de clasificación
Capítulo 1 Minería de datos
15
Redes neuronales (McCulloch y Pitts, 1943): Sistema compuesto de muchos
elementos simples de procesamiento que operan en paralelo, cuya función es
determinada por estructura de la red, fuerzas de conexión, y el procesamiento
realizado en computación.
Redes bayesianas (Mitchell, 1997): Estructura de datos para representación de
conocimiento incierto. Representa la dependencia entre variables, y especifica
en forma concisa la distribución de probabilidad conjunta mediante una
representación gráfica.
Máquinas de vectores soporte (Cristianini y Shawe–Taylor, 2000): Las
máquinas de vectores soporte son sistemas de aprendizaje que utilizan como
espacio de hipótesis, funciones lineales en espacios característicos de
dimensión muy alta, ensayando algoritmos de aprendizaje de la teoría de la
optimización que implementan un aprendizaje sesgado derivado a partir de la
teoría del aprendizaje estadístico.
Ilustración 4 Ejemplo de aplicación del clasificador KNN
Ilustración 5 Esquema de una red neuronal y a su derecha de una neurona
Ilustración 6 Red bayesiana para la detección de cancer de próstata
Capítulo 1 Minería de datos
16
Algoritmos no supervisados: Agrupan los casos o patrones en grupos o clústeres
en base a las características que los definen. No existe esa variable especial que es la clase
o variable dependiente. Es precisamente el objetivo: buscar la clase, es decir, los clústeres.
Descubren patrones y tendencias en los datos actuales. El descubrimiento de esa
información sirve para llevar a cabo acciones y obtener un beneficio (científico o de
negocio) de ellas.
Los algoritmos más destacados son los que se presentan a continuación:
K-means (MacQueen, 1967): Es una manera simple y fácil clasificar un
determinado conjunto de datos a través de un cierto número de clúster fijado
a priori.
Mapas autorganizados de Kohonen (T.Kohonen, 1982): Son un algoritmo, que
a partir de un proceso iterativo de comparación con un conjunto de datos y
cambios para aproximarse a los mismos, crea un modelo de esos mismos datos
que puede servir para agruparlos por criterios de similitud. Esta proyección de
los datos sobre el mapa distribuye sus características de forma gradual.
Ilustración 7 Separación de un conjunto de datos mediante SVN
Ilustración 8 Ejemplo de aplicación del K-means
Capítulo 1 Minería de datos
17
1.4 Áreas de aplicación
La minería de datos se presenta como una tecnología emergente. Hoy en día
existen aplicaciones que utilizan agentes basados en aprendizaje en numerosas ramas de
la industria y de la ciencia. Por ejemplo:
Procesamiento del Lenguaje Natural Para el análisis sintáctico y
morfológico de los textos. Extracción de Información, Clasificación
Automática de Documentos.
Sistemas de Recuperación de Información Los buscadores de Internet
utilizan estas técnicas para mejorar el rendimiento de sus búsquedas y
confeccionar rankings personalizados según la experiencia de los usuarios.
Diagnóstico Médico Se emplean para asistir a médicos en el diagnóstico
según la historia clínica y los síntomas que presenta el paciente.
Ciencias biológicas Para la clasificación de especies, reconocimiento de
tumores o arritmias o patrones en cadenas de ADN. Descubrimiento y
predicción de patrones de movilidad.
Finanzas e Industria bancaria La industria bancaria utiliza modelos de
riesgo crediticio para calificar a los solicitantes según su nivel de
cumplimiento esperado en el pago de las cuotas del crédito. También existen
modelos de fraude de consumo de tarjetas de crédito, compañías de seguros y
de predicción de comportamiento en el mercado de valores.
Análisis de imágenes Reconocer objetos dentro de una imagen, como
personas, rostros, dígitos, monumentos arquitectónicos o accidentes
geográficos, etc.
Ilustración 9 Arquitectura típica de un mapa SOM
Capítulo 1 Minería de datos
18
Juegos Existen muchos juegos, como el Backgammon y las Damas, donde
programas de computadoras que han sido entrenadas con técnicas de ML
superan a los campeones mundiales.
Robótica Se utilizan modelos de ML para regular el desplazamiento de robots,
planificación de tareas, entre otras tareas.
Capítulo 2
Aprendizaje automático
Este segundo capítulo se centra en el aprendizaje automático, la rama de la
inteligencia artificial que desarrolla técnicas que permiten aprender. Existen distintos
tipos de algoritmos empleado para la generación de conocimiento, entre ellos se
destacan el aprendizaje supervisado y el no supervisado. Se detallan las técnicas que lo
componen, y los principales conceptos sobre las mismas.
Capítulo 2 Aprendizaje automático
20
2.1 Introducción
Las técnicas de aprendizaje automático constituyen un tema vigente de
investigación actual, especialmente en la minería de datos con el fin de obtener
información relevante que permita obtener conocimiento a partir de los mismos.
El objetivo que persiguen es desarrollar métodos computacionales que
implementen formas de aprendizaje, en particular, mecanismos capaces de inducir
conocimiento a partir de los datos.
Lógicamente, las áreas del aprendizaje automático y la minería de datos están
estrechamente relacionadas y es muy común confundirlas. No obstante, la principal
diferencia que los caracteriza es que la minería de datos tiene un mayor enfoque en el
conocimiento comprensible a partir de grandes cantidades de información, mientras que
el aprendizaje automático se orienta más a la tarea del aprendizaje propiamente.
Una vez aclarada la diferencia entre las dos disciplinas, se muestran unas
definiciones con el fin de entender mejor este concepto.
El aprendizaje automático (Machine Learning) es una rama de la inteligencia
artificial donde su objetivo es desarrollar técnicas que permitan a las máquinas aprender.
Podíamos calificar el concepto genérico de “aprender” como el proceso de
adquisición de conocimiento, habilidades, valores y aptitudes, posibilitado mediante el
estudio, la enseñanza o la experiencia. En las teorías del aprendizaje se intenta explicar
la forma en la que se estructuran los significados y se aprenden conceptos nuevos.
“Aprende a construir o modificar representaciones de aquello con lo que se está
experimentando” (McCarthy)
Aplicado este concepto a la informática:
“Un programa de ordenador APRENDE a partir de una experiencia E a realizar
una tarea T (de acuerdo con una medida de rendimiento P), si su rendimiento al realizar
T, medido con P, mejora gracias a la experiencia E” (Mitchell, 97)
Una vez aclarado el concepto de aprender se muestra una definición sobre el
aprendizaje automático:
“Proceso de extracción de conocimiento útil e inteligible anteriormente
desconocido a partir de grandes cantidades da datos guardados en diferentes formatos”.
(Witten & Frank 2005)
El área del aprendizaje automático es relativamente amplio, dando lugar a varias
técnicas o paradigmas diferentes de aprendizaje que se detallan en el siguiente punto.
Capítulo 2 Aprendizaje automático
21
2.2 Técnicas de aprendizaje: Tipos y conceptos básicos
No existe una única forma de clasificar los métodos de aprendizaje automático,
varía en función del concepto en el que nos basemos para realizar esta distinción, es decir,
la naturaleza del conocimiento, la forma de aprendizaje o las técnicas empleadas.
Si nos guiamos por la naturaleza del conocimiento distinguimos el aprendizaje
simbólico y el subsimbólico:
Simbólico: Representación explícita.
Subsimbólico: Representación no directamente interpretable por el
humano.
Si por lo contrario nos basamos en la forma de aprendizaje, se divide en:
Supervisado: Se conoce la clase a la que pertenece cada uno de los
ejemplos.
No supervisado: Desconocemos la clase y se agrupan automáticamente
en clústeres.
Si finalmente nos basamos en las técnicas empleadas de aprendizaje:
Estadístico: Obtención de un modelo a partir de un conjunto de datos.
Inductivo: Obtener conclusiones generales a partir de premisas que
contienen datos particulares.
Centrándonos en la división propuesta por (Weiss y Indurkhya, 1998)
distinguimos dos escenarios de aprendizaje, la clasificación supervisada y clasificación
no supervisada, que requieren distintas soluciones.
La clasificación siempre ha sido una de las actividades inherentes al ser humano
ya que es la base de conocimiento humano. Un ejemplo de ello es la naturaleza, que
ofrece una amplia diversidad de poblaciones susceptibles a ser agrupadas.
Clasificación supervisada: También conocido como categorización. Se basa en
ejemplos ya clasificados para construir el conocimiento y ser capaz de clasificar los
nuevos elementos. Dicho de otra manera, cuentan con conocimiento a priori.
Existen diversas técnicas capaces de hacer una clasificación supervisada y todas
tienen en común el siguiente razonamiento: Construir de alguna manera un modelo capaz
de decidir a qué clase o categoría pertenece cada uno de los elementos y aplicar alguna
función que permita estimar el parecido o similitud entre los casos.
Capítulo 2 Aprendizaje automático
22
La clasificación consiste en la asignación de los datos en una serie de clases o
categorías conceptuales prediseñadas a priori basadas en un atributo especial
denominado variable clase o dependiente.
Cada dato contiene un conjunto de
atributos, uno de los cuales es el atributo clase,
como se muestra en la ilustración que se
encuentra a la derecha. La clase, describe el
fenómeno que se quiere aprender o sobre el que
se desea hacer predicciones.
Parten de la elaboración de un modelo.
Por cada una de las clases se distinguen dos
fases: La fase de entrenamiento y la fase de test.
La ilustración inferior muestra el esquema
general de un modelo de clasificación.
El conjunto de entrenamiento
sirve para construir el clasificador y el
de test para evaluar su precisión o
efectividad. En la fase de entrenamiento
el objetivo es utilizar el contenido de la
base de datos, datos históricos, y así
podrá predecir un comportamiento
futuro.
El objetivo del algoritmo, es
maximizar la razón de precisión de la clasificación de las nuevas instancias, con diferentes
medidas de bondad -se detallan en posteriores secciones de este capítulo-, después de
realizar una breve descripción del concepto de la clasificación no supervisada.
Clasificación no supervisada: Se diferencia de la clasificación supervisada en que
en esta modalidad no dispone de la clase de la instancia. En este tipo de clasificación se
dispone de muestras que tienen un conjunto de características. La finalidad es el
descubrimiento de grupos de casos que los agrupen. Las características afines a los
mismos nos permiten separar las distintas clases. La similitud entre observaciones se
establece en términos de distancias. Se busca crear grupos homogéneos y diferenciados a
los demás.
Este tipo de clasificación también es denominada agrupamiento o clustering. Se
diferencian en dos grandes grupos:
Algoritmos incrementales o bottom-up: Parten de patrones aislados y
tienden unirlos mediante grupos en función de algún umbral concreto.
Pueden partir de un número de grupos conocidos o desconocidos.
Ilustración 10 Notación para el paradigma de clasificación
Ilustración 11 Enfoque general del paradigma de clasificación supervisada
Capítulo 2 Aprendizaje automático
23
Algoritmos decrementales o top-down: Parten de grupos ya
preestablecidos con el fin de obtener grupos más conocidos.
2.3 Evaluación en la clasificación supervisada
Existen diversos criterios para la evaluación de los clasificadores construidos. Su
elección dependerá del dominio del problema.
La matriz de confusión es una herramienta visual muy empleada en el aprendizaje
supervisado. En esta matriz, se distinguen filas de columnas: en las filas encontramos las
instancias en la clase real, y en las columnas el número de predicciones de cada clase.
Esta matriz es útil, ya que a partir de ella, somos capaces de extraer información
necesaria para estimar la bondad de un clasificador y mediante ella conseguimos detallar
el resultado de la clasificación.
En la tarea de clasificación por cada instancia se producen cuatro valores de salida
posibles como son:
Verdadero positivo o TP: Número de veces que una instancia positiva ha sido
correctamente clasificada.
Falso positivo o FP: Indica el número de veces que una instancia negativa ha
sido incorrectamente clasificada, dicho de otra manera, ha sido clasificada
como positivo sin serlo.
Verdadero negativo o TN: Número de veces que una instancia negativa ha
sido clasificada como tal.
Y finalmente falso negativo o FN: Número de veces que una instancia positiva
ha sido clasificada incorrectamente.
Cabe destacar que, en estos problemas de clasificación con elementos que solo
poseen dos clases, por convenio se hace referencia a la clase positiva como la minoritaria
y la negativa como la mayoritaria.
A partir de esta matriz se pueden extraer medidas cuantitativas que permiten
entender la naturaleza y distribución del error cometido.
Ilustración 12 Tabla de contigencia o matriz de confusión
Capítulo 2 Aprendizaje automático
24
2.3.1 AUC area under curbe
Mide la capacidad de un clasificador para evitar una clasificación errónea,
teniendo en cuanta ambas clases, la negativa y la positiva. Es una aproximación del área
bajo la curva ROC (Receiver Operating Characteristic), o dicho de otra manera, una
representación gráfica de la relación entre el porcentaje de verdaderos positivos y el de
falsos positivos.
Puede describirse como una porción del área de un cuadrado de lado la unidad,
con valores entre 0 y 1, véase la ilustración inferior. Desde un punto de vista estadístico
se define como la probabilidad, de que al elegir aleatoriamente un caso de la clase
negativa y otro de la clase positiva, el clasificador de una mayor puntuación al ejemplo
de la clase positiva.
2.3.2 Error o tasa de error
Es la opuesta de la tasa de acierto: Representa el número de casos clasificados
erróneamente. No se distingue entre clases.
2.3.3 GM
En el caso que pretendemos analizar, la problemática del desbalanceo de datos,
la medida AUC no puede ser considerada como una medida de bondad del algoritmo, ya
que como se ha descrito anteriormente no distingue el número correcto de elementos
clasificados entre las clases, lo que puede conducirnos a conclusiones erróneas.
Para verlo de una manera más clara nos basamos en el siguiente caso:
o Si el nivel de desbalanceo de la clase es de un caso minoritario entre 100 casos,
tenemos 1 instancia positiva y 99 negativas, en el supuesto de que todos los
casos a clasificar se clasifiquen como negativas, tendríamos un 99 % de tasa
de acierto pero, paradójicamente no sería un buen clasificador ya que no sería
capaz de clasificar ningún caso de la clase minoritaria correctamente, que
suele ser, además la de mayor interés.
El objetivo que pretende esta métrica es mantener equilibrado el porcentaje de
acierto de ambas clases. Este método consigue considerar la
precisión en cada una de las dos clases con el mismo peso.
Ilustración 13 Representación de un curva ROC
Capítulo 2 Aprendizaje automático
25
Representa el número correcto de casos clasificados pertenecientes a la clase
minoritaria o la positiva, con respecto al nº total de casos de esta clase.
Representa el número correcto de casos clasificados pertenecientes a la clase
mayoritaria o negativa, con respecto al nº total de casos de esta clase.
2.3.4 Kappa
En esta métrica los valores posibles van en el intervalo [-1,+1]. Siendo +1 una tasa
de acierto total y -1 una tasa de error total.
con
El objetivo es realizar una comparación entre la tasa de acierto obtenida y la que
podría esperarse de una clasificación aleatoria.
2.3.5 TP rate
También denominado Recall, Sensibilidad o True Positive Rate. Es el porcentaje
de elementos correctamente clasificados de la clase positiva con respecto a total de
elementos existentes de dicha clase, es decir, la efectividad que posee el clasificador a la
hora identificar correctamente los elementos de la clase positiva.
2.3.6 Precisión o precisión positiva
Porcentaje de elementos correctamente clasificados de la clase positiva con
respecto a todos los elementos que el clasificador predijo como positivos.
La inversa sería la precisión negativa comúnmente denominada especificidad.
2.3.7 F-Value
El objetivo que persigue esta métrica es equilibrar los aciertos en la clasificación
de ambas clases. Se basa en dos medidas expuestas anteriormente como son el Recall o
TPR y la precisión o P, a partir de las cuales calcula la media
armónica. Los valores que puede tomar van del intervalo [0,1]
indicando el 1 un total de aciertos.
Capítulo 2 Aprendizaje automático
26
2.4 Técnicas de validación
El objetivo que persiguen las técnicas de validación es poder probar un modelo
bajo todas las circunstancias. Esto es imposible, ya que no disponemos de datos de
entrenamiento para simular todas las situaciones posibles, pero podemos estimar el
comportamiento que tendrá un modelo mediante técnicas estadísticas de muestreo.
Una medida posible de validación de un modelo puede ser determinar la tasa de
error cometida por el mismo para los nuevos casos. Y posteriormente comparar esta tasa
frente a otras tasas de error de otros modelos.
Se va a emplear el error como medida de bondad para la descripción de las técnicas
de validación, pero igualmente se podría emplear cualquier otra de las medidas que se
acaban de explicar.
La idea básica detrás de la validación es construir un clasificador con un conjunto
de ejemplos y estimar lo bien que clasifica con otro conjunto diferente. No se trata de que
el modelo memorice un conjunto, sino de que generalice lo mejor que pueda.
Se distinguen dos tipos de valores de error; el error aparente o el error real:
El error aparente no es una tasa fiable, ya que se estima la tasa de error con los
mismos casos o instancias con las que ha aprendido el clasificador. Esta
estimación es demasiado optimista puesto que lo que busca un clasificador es
predecir la clase de un nuevo caso correctamente y no predecir las clases de
casos ya clasificados.
El error real es una tasa mucho más realista. Estima la tasa de error se emplean
diferentes casos con los que el algoritmo ha aprendido. Existen diversas
técnicas para llevar a cabo esta estimación, las principales y más destacadas
se describen brevemente a continuación:
2.4.1 Holdout
El método Holdout o método H, particiona los datos en dos conjuntos disjuntos:
el conjunto de entrenamiento y el conjunto de testeo. De los métodos que se detallan en
esta sección es el más sencillo de todos. El conjunto de entrenamiento es empleado para
inducir el modelo clasificatorio, mientras que el conjunto de testeo es empleado para
estimar la predicción verdadera.
El conjunto de entrenamiento suele ser aproximadamente dos tercios de los datos
totales y el tercio restante es empleado para el testeo.
En esta técnica tiene una vital importancia el tamaño de la muestra, pues mientras
que con muestras grandes obtendremos buenos resultados, en el caso de disponer de
muestras pequeñas, los resultados obtenidos no son los más óptimos. En el conjunto de
Capítulo 2 Aprendizaje automático
27
testeo existen casos que resultan importantes desde el punto de vista del aprendizaje,
obteniendo una estimación pesimista, porque el algoritmo de inducción sólo utiliza una
porción del conjunto de datos. Cuantas más instancias se dejen para el conjunto de
validación, más pesimista será la predicción. En la siguiente ilustración se muestra un
gráfico que detalla el método.
2.4.2 Submuestreo aleatorio
El método de su muestreo aleatorio o random subsampling es un método que tiene
su origen en el método Holdout y que podría calificarse como una mejora o modificación
del mismo.
El procedimiento se basa en repetir múltiples veces el método H sobre diferentes
particiones independientes del conjunto de entrenamiento y conjunto de validación. Para
estimar el error en este método, se calcula el error en cada una de las ejecuciones y se
haya la media de ellas.
2.4.3 Validación cruzada
Este método es el método de validación más empleado. También denominado
método de k-rodajas o k-fold cross-validation en inglés. Tiene su origen en 1974 [Sto74].
El conjunto de datos se divide en “m” subconjuntos de datos denominado rodajas
o folds de aproximadamente el mismo tamaño. Estos subconjuntos son mutuamente
excluyentes. m-1 subconjuntos son destinados a entrenamiento mientras que el
subconjunto restante es destinado a la validación o test. El clasificador es entrenado y
testeado “m” veces. La estimación de la exactitud por medio de este método es la media
de la medida de bondad utilizada.
La ilustración 15 muestra el proceso llevado a cabo para aplicar un 3-fold cross
validation. El conjunto de datos se divide en 3 subconjuntos, 2/3 son empleados para
entrenar el clasificador, y el restante para el testo. Se repite el proceso 3 veces.
Ilustración 14 Método de validación Holdout H
Capítulo 2 Aprendizaje automático
28
2.4.4 Validación cruzada dejando uno fuera (Leave one out)
Esta técnica podría verse como un caso especial del método anterior. La base de
datos es particionada k veces, siendo k el número de casos originales n. Se forma un
conjunto de entrenamiento con los n - 1 casos dejando uno caso fuera, este caso será el
que emplearemos para el test. Este tipo de validación, generalmente es aplicado a bases
de datos con relativamente pocos casos ya que presenta una varianza alta. En coste
computacional es muy elevado. Se detalla el proceso de manera gráfica en la ilustración
16.
2.4.5 BootStrapping
Método introducido en 1993 por Efron y Tibshirani, su nombre viene de la
expresión: pulling oneself up by one’s bootstraps y se basa en el concepto de reemplazo,
que consiste en extraer un número de casos, de forma que tras cada extracción el elemento
extraído vuelve a introducirse y puede volver a ser seleccionado.
Este proceso se realiza repetidas veces, calculando la media de los valores
obtenidos. Como contrapartida requiere de un mayor gasto computacional que el método
leave-one-out.
Ilustración 15 Validación cruzada aleataria con 3 folds
Ilustración 16 Validación cruzada dejando uno fuera
Capítulo 2 Aprendizaje automático
29
2.5 Test de significancia
A pesar de realizar un gran número de pruebas para demostrar o evaluar el
comportamiento de un modelo, las conclusiones derivadas de una comparación directa de
los valores obtenidos para los diferentes modelos o escenarios, sobre el mismo conjunto
de datos, puede ser erróneas. Es decir, que dichas diferencias pueden ser debidas al azar.
Por otro lado, encontrar un algoritmo que sea el mejor en todas las situación resulta a día
de hoy imposible, si bien es cierto que para determinados dominios unos se comportan
mejor que otros.
Se necesita de alguna herramienta o método que sea capaz de determinar con un
cierto grado de seguridad que los resultados obtenidos por un algoritmo son mejores o
peores. Esto es posible gracias a la inferencia estadística.
Por ello, es recomendable realizar algún test de validación de los resultados
obtenidos, que nos permita asegurar que las diferencias observadas son reales, dicho de
otra manera estadísticamente significativas.
Se denomina estadísticamente significativo cuando no es probable que la
diferencia observada haya sido debido al azar. Una "diferencia estadísticamente
significativa" únicamente quiere decir que hay evidencias estadísticas de que hay una
diferencia entre los métodos estudiados, ofreciendo una “garantía de calidad”. Esto no
quiere decir que la diferencia sea grande en el sentido estricto de la palabra, indica que
hay diferencias.
El nivel de significación de un test es un concepto estadístico asociado a la
verificación de una hipótesis. Lo estableció el reputado estadístico Fisher quien señaló
“es conveniente trazar una línea de demarcación a partir de la cual podamos decir….”.
Implica utilizar términos comparativos de dos hipótesis, estas comparaciones no
son únicas puesto que, existen distintos métodos en función del objetivo deseado. No es
lo mismo realizar una comparación entre múltiples clasificadores, que realizarla
únicamente entre dos clasificadores.
Para comparar los resultados obtenidos en la experimentación llevada a cabo con
los publicados en el trabajo [FGLBH10] hemos empleados los recomendados por Demšar
a la hora de comparar múltiples clasificadores [Dem06].
A continuación, se describen, -sin pretender una explicación exhaustiva- los
métodos que se emplearán en la metodología experimental de este trabajo.
Las pruebas estadísticas -para la comparación de múltiples algoritmos- han sido
prácticamente ignoradas hasta el aporte realizado por Demšar [Dem06]. El test no
paramétrico, que recomienda Demšar para comparar múltiples algoritmos es el test
Friedman, propuesto por Milton Friedman.
Capítulo 2 Aprendizaje automático
30
El test de Friedman (Friedman, 1937, 1940) es un equivalente no paramétrico de
las medidas repetidas ANOVA. Se clasifican los algoritmos para cada conjunto de datos
por separado, elaborando un ranking de estos en función de la posición que ocupan, en el
caso que los algoritmos empaten se hace una media de los rankings.
Se trata de un test que detecta si hay o no diferencias significativas entre los
algoritmos, pero no entre qué algoritmos se dan. Para determinar entre qué algoritmos se
dan dichas diferencias se aplican dos test post-hoc.
Test de Nemenyi : Se inscribe en el grupo de pruebas de comparación a posteriori.
Considerando que se tienen k muestras que provienen de igual número de
poblaciones, el proceder es el siguiente:
Nemenyi compara todos contra todos (nxn) y determina entre que par de
algoritmos se dan las diferencias.
En la siguiente Tabla se muestran los valores críticos para q0 que se calculan en a
través de una fórmula.
Test de Bonferroni-Dunn: El test de BonferroniDunn es similar al test de Tukey
para ANOVA y se utiliza cuando queremos comparar un algoritmo frente a los
demás. La calidad de dos algoritmos es significativamente diferente si la
correspondiente media de rankings es tan diferente como su diferencia crítica.
Elige un algoritmo como control y la comparación se realiza entre este y
el resto (1xn)
En la Tabla 2 se pueden consultar los valores críticos para este parámetro.
Ambos test dan la ventaja frente a otros métodos en que ofrecen una
representación gráfica (CD Diagram), en el que todas las comparaciones se
realizan respecto a una misma diferencia crítica (diferente para los dos tests). En
la ilustración 17 se encuentra un ejemplo de la representación gráfica que ofrecen
estos métodos.
Tabla 2Valores críticos del test de Bonferroni-Dunn.
Tabla 1 Valores críticos del test de Nemenyi.
Capítulo 2 Aprendizaje automático
31
Ilustración 17 Diagrama CD para los test de Nemenyi y Bonferroni-Dunn
En el test de Nemenyi, no existen diferencias significativas si los dos algoritmos
aparecen bajo una línea. Al tratarse de comparaciones entre todos los algoritmos podemos
encontrar varias líneas. En la parte inferior de la ilustración se muestra la línea que indica
el valor de la distancia crítica, 1,3126 en este caso.
En el test de Bonferroni-Dunn, sí existen con respecto al algoritmo de control para
aquellos algoritmos cuyo punto este fuera de la línea. Además junto a la línea verde, se
indica el valor de la distancia crítica, que es de 1,1864.
En los últimos años los métodos desarrollados por Francisco Herrera et al en
[GFLH10] y [GH08] han relegado los test propuestos por Demšar años antes. Surgen ante
la necesidad de aplicar procedimientos empíricos más poderosos, en beneficio de obtener
más diferencias estadísticas entre los clasificadores comparados.
En cuanto al aporte realizado por Francisco Herrera, destaca el uso del test de
Shaffer, siendo éste uno de los procedimientos más potentes que se aplican en la
actualidad. Este test tiene mayor poder que el resto de alternativas posibles. Es una
versión más poderosa del procedimiento de rechazo secuencial desarrollado por Holm
(1979). Shaffer ofrece una mayor potencia del test estadístico asociado con el par de
medias que difieren más entre sí.
Capítulo 3
Árboles de clasificación
En este capítulo se presenta el paradigma de los árboles de clasificación, siendo
éste uno de los paradigmas clasificatorios más empleados en el ámbito de la clasificación
supervisada en múltiples disciplinas. Comienza con una introducción del concepto de
inducción para posteriormente profundizar en las características propias. Se presentan
también los algoritmos de árboles de clasificación más comunes centrándose
principalmente en el C4.5 y el ID3. La última sección del capítulo está dedicada en
exclusiva al algoritmo CTC, un paradigma de clasificación con capacidades explicativas
diseñado en el contexto de la tesis doctoral de Txus Pérez presentada en el 2006,
partiendo del objetivo que persigue abordar y la motivación del mismo.
1
1 11La última sección de este capítulo es una adaptación de una de las secciones del capítulo Árboles
Consolidados de la tesis de Txus Pérez [Per06].
Capítulo 3 Árboles de clasificación
34
3.1 Introducción
Dentro de los distintos paradigmas que se han enunciado en el capítulo 1 de esta
memoria, los árboles de clasificación o decision trees son los más empleados por un
conjunto de motivos que los hacen especialmente atractivos. Entre ellos, cabe destacar la
sencillez del modelo, la amplitud de implementaciones que existen, la rapidez de
clasificación de nuevos patrones y sobre todo la posibilidad de representarlos
gráficamente, aportando así una explicación de la división efectuada. Esto nos
proporciona un alto grado de comprensión del conocimiento utilizado en la toma de
decisiones. Puede resultar de gran utilidad en dominios como la medicina, la detección
de clientes fraudulentos… etc.
Se enmarcan dentro de los modelos inductivos, supervisados y no paramétricos.
La base en la que se sustenta es la inducción. Por inducción entendemos:
Método de raciocinio que consiste en alcanzar un principio que se deriva
lógicamente de unos datos o hechos particulares.
Una definición más general sería definir la inducción como el movimiento
del pensamiento que va de los hechos particulares a afirmaciones de
carácter general.
El aprendizaje inductivo es un caso particular entre las técnicas de aprendizaje
que obtienen el conocimiento a partir de ejemplos, siendo su cometido inducir reglas a
partir de un conjunto de datos.
Hipótesis del aprendizaje inductivo: cualquier hipótesis encontrada que
clasifique un número suficientemente grande de ejemplos de entrenamiento clasificará
otros no observados.
Un árbol de clasificación es una forma de representar el conocimiento obtenido
en este proceso.
Estos algoritmos tienen su inicio en los años 60. A continuación se muestra una
lista de los principales algoritmos que conforman esta familia.
CLS (Hunt et al., 1966)
ID3 (Quinlan, 1979)
CHAID (Kass, 1980)
ACLS (Niblett et al., 1982)
CART (Breiman et al., 1984)
ASSISTANT (Cestnik et al., 1987)
C4.5 (Quinlan, 1993).
Capítulo 3 Árboles de clasificación
35
3.2 Descripción general de los árboles de clasificación
El método de construcción de árboles consolidados tiene su origen en el aporte
realizado por Hunt et al en 1966. El proceso se basa en la partición recursiva del conjunto
de casos de entrenamiento con el fin de quedarnos con el más pequeño. Se fundamenta
en el conocido paradigma algorítmico de “Divide y vencerás”.
Los algoritmos de construcción de árboles de clasificación se engloban dentro de
la familia TDIDT. La idea principal radica en lo siguiente:
Mientras que todos los patrones que se corresponden con una rama del árbol no
pertenezcan a una misma clase, se seleccione la variable que de entre las no seleccionadas
en esa rama sea la más idónea con respecto de un criterio previamente establecido.
Mediante esta variable se expande el árbol en tantas ramas como posibles valores toma
dicha variable. A continuación se presenta el pseudocódigo:
Se fundamenta en el particionamiento recursivo del dominio de definición de las
variables predictorias.
3.2.1 Estructura de los árboles
Los árboles están formados por nodos internos, arcos y hojas.
Cada nodo del árbol representa una
subpoblación del conjunto de datos y las ramas
representan conjuntos de decisiones, las cuales generan
reglas para la clasificación de un conjunto de datos. Las
ramas se generan de forma recursiva y este proceso
continúa hasta cumplirse el criterio de parada. La
complejidad del árbol viene dada por el número de
hojas que forman el árbol.
Ilustración 18 Pseudocódigo del algoritmo TDIDT
Ilustración 19 Estructura de un árbol de clasificación
Capítulo 3 Árboles de clasificación
36
En la ilustración 19 se aprecia esta estructura.
Los dos aspectos más destacados a la hora de construir árboles son:
Cómo se decide la división del nodo.
El criterio de parada.
Los distintos algoritmos de creación de árboles de clasificación se diferencian en
función de dos taxonomías. La división en función de si la variable es discreta o continua,
o bien el número de ramas o hijos que podemos encontrar en cada nodo.
Según esta segunda distinción podemos clasificar los algoritmos de construcción
de árboles consolidados en:
Univaluados, sólo contienen un atributo de prueba en cada nodo. Ejemplos
de estos algoritmos son:
ID3, C4.5, CART, FACT, QUEST y CTC.
Multivaluados, que poseen a un subconjunto de atributos en cada uno de
sus nodos.
LMDT, GALE y C-DT.
¿Qué pasa si en alguno de los atributos falta el valor? Para dividir el árbol es
necesario conocer los valores del atributo. Con el fin de evitar este problema se aplican
distintas soluciones.
Una posible opción es calcular alguna medida como la media, o la moda y usar
este valor. Otra opción empleada es, añadir un nodo hijo “especial” más a cada una de las
divisiones y contemplar éste como el valor missing, esta opción es la empleada en
CHAID, y la tercera opción consiste en repartir proporcionalmente el caso entre las ramas
del nodo en las que se pregunta por el valor de la variable desconocida, por ejemplo C4.5.
Como desventaja principal encontramos que son clasificadores débiles, ya que un
pequeño cambio en los datos puede tener como consecuencia grandes cambios en el
modelo, este fenómeno es conocido como inestabilidad.
3.3 Algoritmos principales y sus características
A continuación se presenta los algoritmos más destacados de los árboles de
clasificación, comenzando con el precursor en la década de los 60 el CLS, pasando por
los algoritmos propuestos por Quinlan y acabando con los más actuales.
Capítulo 3 Árboles de clasificación
37
3.3.1 Concept Learning System (CLS)
Este algoritmo es el comienzo de los árboles de clasificación, expuesto en
experiments induction en 1966 por Hunt et al fue el comienzo a los algoritmos de la
familia TIDTD expuesta anteriormente. Está enfocado en el diagnóstico médico.
Pueden parecer sencillos ya que sólo se basan en evaluar si ¿atributo = valor?
teniendo únicamente dos únicas respuestas sí, y no. Emplea atributos binarios.
Su objetivo primordial es reducir el coste de clasificación de un elemento.
Utiliza una técnica similar al Minimax 2. Explora el espacio de posibles árboles
con un recorrido en profundidad. Como contrapartida requiere de un coste computacional
muy elevado.
3.3.2 ID3
Algoritmo propuesto por Quinlan en 1986. Su nombre se deriva de Induction
Decision Trees [Qui86].
Comienza el proceso de creación del árbol eligiendo el atributo que dividirá la
raíz. Para dicha elección se basa en un test estadístico, con el fin de descubrir qué atributo
de todos es el que mejor clasifica los elementos. Esto lo consigue mediante:
La entropía de una variable: La entropía de una variable aleatoria X es una
medida cuantitativa de la incertidumbre asociada a los valores tomados
por esta variable, y se define como:
La efectividad de un atributo: La efectividad para subdividir un conjunto
de casos en n subconjuntos.
La ganancia de información: Propiedad estadística que mide cómo
clasifica ese atributo a los ejemplos.
Elige como variable para dividir el nodo del árbol aquella que tenga mayor
ganancia de información, para después continuar expandiendo las ramas, considerando la
nueva partición formado por el subconjunto de ejemplos que tienen ese valor para el
atributo elegido.
2 Es un método de decisión para minimizar la pérdida máxima esperada en juegos con
adversario y con información perfecta, algoritmo clásico de la IA.
Capítulo 3 Árboles de clasificación
38
Como principal característica destaca que favorece la elección de variables con
un mayor número de valores y que realiza una prepoda. Esta poda consiste en la
aplicación de un test de independencia entre la variable predictora y la variable clase.
Como consecuencia, solo emplea aquellas variables predictoras para las que se rechaza
el test de hipótesis de independencia para la inducción del árbol.
Considera cada nodo del árbol como candidato a la poda. Podar una rama es el
proceso de eliminar una rama del árbol, convirtiendo el árbol en más general. Se continúa
con este proceso hasta que el árbol podado obtiene peores resultados que el no podado.
Ilustración 20 Pseudocódigo del algoritmo ID3
3.3.4 Algoritmo C4.5
Surge como una modificación propuesta por Quinlan con el fin de mejorar el ID3
[Quin93].
Como diferencia principal introduce una medida alternativa, el ratio de ganancia.
Selecciona en cada nodo el atributo con mayor ratio de ganancia de información. Con
esto, evitamos favorecer la elección de variables con un mayor número de valores. Otra
diferencia notable con respecto al ID3 es que permite el uso de valores missing. También
admite variables continuas.
A diferencia del ID3 utiliza una técnica de poda, pero después de haber construido
el árbol de clasificación.
La post poda se basa en aplicar un test de hipótesis con el objetivo de deducir si
merece o no la pena expandir dicha rama.
Construye el árbol de clasificación a partir del conjunto de entrenamiento.
Posteriormente puede convertir el árbol en un conjunto de reglas (C4.5 Rules).
Capítulo 3 Árboles de clasificación
39
3.3.5 Algoritmo Chi Squared AID (CHAID)
Método de clasificación jerárquica y descendente. Este algoritmo se basa en
seleccionar la variable que más separa los grupos a estudio, usando el criterio chi
cuadrado o la razón de verosimilitud.
No aplica ninguna técnica de postpoda para evitar el sobrentrenamiento, sino que
es, el propio algoritmo el encargado de decidir cuándo se para de desarrollar el árbol. Sólo
es capaz de tratar con variables predictoras discretas. La aplicación fundamental comenzó
en el ámbito del diagnóstico médico y la detección de interacción entre variables para
posteriormente ser usada en el ámbito del marketing.
3.4 Introducción a los árboles de clasificación consolidados.
Los métodos basados en combinación de clasificadores (Multiple Classifier
System) tienen una importante relevancia en paradigmas clasificatorios como son los
árboles de clasificación, ya que mediante ellos, son capaces de minimizar el principal
efecto negativo que produce la clasificación mediante árboles, y no es otra, que la
inestabilidad. De ahí que reciban el nombre de clasificadores weak o débiles.
En la bibliografía típica se pueden encontrar los métodos más destacados para la
combinación de clasificadores, entre ellos, el Boosting y el Bagging vistos de forma no
exhaustiva en la asignatura métodos matemáticos de ciencias de la computación.
Ilustración 21 Pseudocódigo del algoritmo C4.5
Capítulo 3 Árboles de clasificación
40
El algoritmo de construcción de árboles consolidados conocido como CTC fue
desarrollado por Txus Pérez como resultado de su tesis doctoral [Per06], en la que
pretendía desarrollar un método capaz de detectar los clientes fraudulentos de una
empresa de seguros donde estos casos están representados con un número bajo de casos,
en torno al 1% cuando realmente se estima que el porcentaje real de fraude aumenta hasta
el 20%.
Por ello, la motivación principal surge en desarrollar un clasificador que tuviera
en cuenta una distribución de clases distinta a la original y que aportara una explicación
de la clasificación realizada.
El CTC es un meta algoritmo que tomando como base el algoritmo C4.5 de
Quinlan, es capaz de aprovechar la información contenida en un conjunto de muestras
generadas con la distribución de clases deseada para obtener un único árbol de
clasificación.
Este enfoque podría calificarse como una combinación de las dos metodologías o
paradigmas que se detallan en el próximo capítulo y que son más comunes a la hora de
luchar contra el desbalanceo de datos.
Trabaja a nivel de remuestreo.
Trabaja a nivel de algoritmo.
El proceso de construcción de árboles consolidados consta de dos fases principales
y diferenciadas:
La primera fase genera las submuestras que se emplearán para construir el árbol:
Extrae un conjunto de Number_Samples submuestras de la muestra de
entrenamiento, en base a una de las distintas técnicas de remuestreo posibles, que
se indica mediante Resampling_Mode. Podemos generar dichas submuestras con
cualquier distribución de clases.
Cada nodo del árbol es consolidado entre las distintas propuestas, como resultado
del proceso de votación de la variable con la que dividir el nodo en cada
submuestra. El nodo del árbol consolidado es dividido por la variable más votada.
El algoritmo deja de expandir o desarrollar una rama cuando la mayoría de las
propuestas para ese nodo sean no dividir. Al terminar de consolidar el árbol se
calculan las probabilidades a posteriori de los nodos hojas, calculando la media
de estas probabilidades en cada nodo de los árboles asociados al conjunto de
submuestras.
El CTC emplea la idea principal del bagging, realizando una votación, la misma
se aplica para escoger la variable que dividirá el nodo en cada paso a lo largo del proceso
de generación del árbol. La elección de la variable se toma en función de las distintas
Capítulo 3 Árboles de clasificación
41
muestras. Este proceso se repite para cada nodo, o cada variable, dando como resultado
un único árbol.
La función empleada para la división de los nodos se basa en el mismo criterio
empleado por Quinlan en el C4.5, el gain ratio. También se han empleado el resto de
parámetros por defecto del C4.5
En la siguiente ilustración se muestra de una manera gráfica el proceso de
construcción y consolidación del árbol de clasificación.
Ilustración 22 Ejemplo paso a paso del proceso de creación de un árbol consolidado
Se parte de la base de datos original -representada en morado-. A partir de esta se
crean las submuestras, que se emplearán el proceso de consolidación. Para cada una de
las submuestras se crea un árbol de clasificación estándar C4.5, paso a paso, consolidando
la decisión nodo a nodo.
En este caso, en la ilustración, las submuestras están representadas mediante los
colores naranja, amarillo y verde. Solo se han empleado 3 submuestras para simplificar
el proceso pero esto es válido para cualquier número de submuestras.
En el primer paso, la variable elegida mediante votación para dividir el nodo es la
denominada “sexo”. El primer árbol de clasificación, el correspondiente a la
muestra naranja y el tercero eligen la variable “sexo” para dividir el nodo mientras
que la segunda submuestra, la amarilla, elige la variable “edad”. Todas las
submuestras son divididas en ese nodo entre los dos posibles valores “f” y” m”.
En este primer paso, hemos consolidado el primer nodo del árbol y se procede de
igual manera con el resto de nodos. El tamaño y distribución de clases de los
nodos, serán la media de los tamaños y distribución de clases de los nodos
correspondientes a las submuestras.
Capítulo 3 Árboles de clasificación
42
En el segundo paso, cada una de las submuestras implicadas en el proceso de
creación del árbol consolidado es dividida en dos submuestras, se crean tantas
muestras por cada submuestra como valores puede tomar la variable. La escogida
en esta segunda fase del algoritmo es “edad”. El valor de corte elegido es
calculado mediante la media y en este caso es 30. Se consolidada la variable y se
vuelve a obligar a la muestra a dividir entre la misma.
Así se continúa con el resto de nodos del árbol hasta se decide por votación
mayoritaria que no se siga dividendo el nodo.
Una vez descrito el esquema gráfico, en la ilustración inferior se muestra el
algoritmo CTC en pseudocódigo que se pasa a analizar a continuación.
Ilustración 23 Algoritmo de construcción de árboles consolidados
Tal y como se ha comentado al inicio de este capítulo, el proceso de construcción
de árboles consolidados se divide en dos fases:
La creación de submuestras a partir de la muestra de entrenamiento.
La creación del árbol consolidado a partir de estas submuestras.
Se comienza generando el número de submuestras a partir de la muestra de
entrenamiento, este número de submuestras viene dado por la variable Number_Samples.
Para ello se remuestrea empleando la técnica de remuestreo indicada por la variable
Resampling_Method.
Capítulo 3 Árboles de clasificación
43
En la segunda fase podríamos diferenciar dos procesos, la elección de la variable
que es empleada para dividir el nodo mediante un proceso de votación mayoritaria -dentro
de la región naranja-, y el proceso de consolidación -dentro de la región azul cielo-.
Capítulo 4
Desbalanceo de datos
En este capítulo se introduce al lector en la problemática del class imbalance,
planteando brevemente la causa del problema y exponiendo cuáles son los métodos más
comunes descritos por la comunidad de investigadores para abordarlo.
Capítulo 4 Problema del desbalanceo de datos
46
4.1 Introducción a la problemática
Nos encontramos con un conjunto de datos desbalanceados, cuando en dicho
conjunto de datos una de las clases es representada por un número reducido de casos. En
estos casos los clasificadores tienden a ignorar los elementos de la clase minoritaria.
Esto sucede porque la mayor parte de los clasificadores están diseñados para
reducir el error de clasificación del clasificador. Suele concurrir el hecho de que, la clase
en cuestión sea de especial interés, de modo que clasificar erróneamente casos
pertenecientes a dicha clase supone un alto coste.
Esta problemática o reto para el aprendizaje no es concreto de una disciplina, sino
que se da en diversos dominios prácticos. A continuación se citan unos cuantos casos:
Fraudulent credit card transactions (Chan, P.K. and Stolfo, S.J.,
1998)
Learning word pronunciation (Van den Bosch, A. et al, 1997)
Prediction of pre-term births (Grzymala-Busse, J.W. et al., 2000)
Prediction of telecommunications equipment failures (GrzymalaBusse,
J.W. et al., 2000)
Detection oil spills from satellite images (Kubat, M. Et al., 1998)
Como se ha anunciado antes, en la sección referida a los criterios de bondad de un
clasificador del capítulo 2, en este tipo de problemas no es adecuado expresar el
desempeño del clasificador en función de la tasa de error. Los criterios más adecuados
para expresar la bondad o calidad de clasificador en este contexto, son la media
geométrica (GM) y las curvas ROC. Esto es así porque son métricas independientes en la
distribución entre clases.
Existen principalmente dos enfoques diferenciados para abordar este problema. El
primero consiste en aplicar técnicas de muestreo para balancear las clases y el segundo
se basa en realizar modificaciones en el algoritmo de
clasificación [CJK04].
De la ilustración 24 se desprende, de una manera
gráfica, el problema del desbalanceo de datos: nos
encontramos muchos ejemplos de la clase negativa, mientras
que, el número de ejemplos de la clase positiva es más
reducido y se encuentran dispersos.
Ilustración 24 Ejemplo gráfico de una distinción no balanceada de datos
Capítulo 4 Problema del desbalanceo de datos
47
4.2 Técnicas empleadas para solucionarlo
Basándonos en la distinción realizada por la gran mayoría de la comunidad
investigadora, entre ellos Chawla N.V, Japkowicz N, Kolcz A, existen dos metodologías
o maneras de afrontar el desbalanceo de datos.
Realizar un remuestreo con el objetivo de equilibrar la muestra de casos y
modificar el algoritmo de clasificación.
4.2.1 Técnicas de remuestreo
La mayor parte de los esfuerzos de la comunidad investigadora han ido orientados
a desarrollar técnicas de remuestreo, que produzcan un balanceo de los datos. Existen
numerosos artículos que realizan un estudio sobre las distintas técnicas. Uno de los más
destacados es [BPM04].
Otro aporte destacado en este ámbito es el realizado por Weiss, quien analizo en
profundidad el efecto del cambio de clases en los árboles de clasificación [WP03].
Dentro de las técnicas de muestreo, distinguimos las siguientes opciones:
Oversampling: Se basan en muestrear la clase minoritaria, aumentan
artificialmente el tamaño de la muestra y esto conlleva una mayor carga
computacional.
Undersampling: Se basan en submuestrear la clase mayoritaria, a
diferencia del método de oversampling, esto puede eliminar datos
potencialmente útiles.
Genéticos o algoritmos evolutivos: Se basan en el uso de distintas
funciones fitness que toman en consideración la naturaleza del problema
para equilibrar las clases.
4.2.1.1 Métodos de Oversampling
Su objetivo es mantener ejemplos influyentes y balancear el conjunto de
entrenamiento. Esta técnica de sencilla aplicación aumenta el número de casos de la
muestra minoritaria. Se engloba dentro de las metodologías no heurísticas. Véase
ilustración 25.
Capítulo 4 Problema del desbalanceo de datos
48
Random Oversampling
El más sencillo y simple dentro de esta familia. Consigue equilibrar la
distribución de clases a través de la replicación aleatoria de los casos positivos.
Como contrapartida puede producir el fenómeno overfiting, ya que hace
copias exactas de las instancias de la clase minoritaria. A pesar del gasto
computacional que ocasiona se muestra como una técnica buena en el caso de que
dispongamos de pocos casos en la clase minoritaria [BPM04].
Para evitar esta consecuencia surge:
Synthetic Minority Over-Sampling Technique (SMOTE)
Genera nuevas instancias de la clase minoritaria interpolando los valores de
las instancias minoritarias más cercanas a una dada [CBHK02].
La generación se realiza extrapolando nuevas instancias en lugar de
duplicarlas
Ilustración 25 Representación gráfica de la técnica de Oversampling
Ilustración 26 Algoritmo SMOTE en Pseudocódigo
Capítulo 4 Problema del desbalanceo de datos
49
Adaptive Synthetic Minority Oversampling Method (ASMO)
Intenta evitar la expansión de la clase minoritaria en zonas de la clase
mayoritaria. Para ello tiene en cuenta la distancia a la clase mayoritaria cuando un
ejemplo de la clase minoritaria está rodeado por ejemplos de la clase mayoritaria,
en otro caso se utiliza SMOTE.
4.1.2.2 Undersampling
Pretenden borrar instancias ruidosas en el límite, reducir el conjunto de datos
y balancear los datos. Este proceso se aprecia en la ilustración 27. A pesar de su
simplicidad ha demostrado ser una de las técnicas más efectivas.
Random Undersampling
El método más sencillo de todos, realiza la selección de casos a eliminar de la
clase mayoritaria mediante la selección aleatoria de los mismos. Es el método que
emplearemos para generar las submuestras para el CTC.
Sin embargo, existe el riesgo de descartar elementos de la muestra
potencialmente importantes para el proceso de clasificación.
Debido a esto se han desarrollado métodos con más inteligencia, capaces de
realizar una selección inteligente sobre los elementos del conjunto de datos de la
clase mayoritaria.
Kubat y Matwin proponen eliminar los casos redundantes y que se encuentran
en los bordes (ruido), del conjunto de casos de la clase minoritaria. Métodos para esta
tarea más destacados:
Selección de casos en los bordes mediante Tomek links, algoritmos de Wilson,
Condensed nearest neighbourt.
La idea en la que se basan estos algoritmos, es suponer que las instancias
próximas entre sí tienen mayor probabilidad de pertenecer a la misma clase.
Ilustración 27 Representación gráfica del undersampling
Capítulo 4 Problema del desbalanceo de datos
50
Para clasificar un nuevo elemento se realiza un cálculo de la distancia entre
los casos ya existentes y el nuevo y se asocia a la clase más cercana. Como
contrapartida principal tiene al alto coste computacional.
Tomek links
El método Tomek Links permite limpiar los datos, elimina los datos ruidosos
y los denominados Borderline. Esta basados en el conocido paradigma clasificatorio
Knn. Se eliminan ejemplos de ambas clases. Véase ilustración 28.
Condensed Nearest Neighbor Rule (CNN)
La idea detrás de este método consiste en eliminar los ejemplos de la clase
mayoritaria y que están alejados de la frontera decisión, ya que este tipo de ejemplos
pueden ser considerados menos importantes para aprendizaje.
Puede ser interesante mezclar técnicas de oversampling con técnicas de
undersampling, ya que SMOTE puede producir overgeneralization, dicho de otra manera,
introducir elementos de la clase minoritaria en la clase mayoritaria. Para evitar esto se
pueden usar Tomek Links.
Como último ejemplo se muestra en la ilustración 29 la combinación aplicada de
las técnicas predominantes para luchar contra el desbalanceo de datos.
Ilustración 28 Aplicación Tomelinks para eliminar ruido y datos borderlaine
Capítulo 4 Problema del desbalanceo de datos
51
4.2.1.3 Algoritmos evolutivos para remuestreo
Los Algoritmos Genéticos son métodos adaptativos que pueden usarse para
resolver problemas de búsqueda y optimización.
La selección de prototipos puede ser considerado como un problema de
búsqueda, en el que se pueden aplicar algoritmos evolutivos. Estos algoritmos son
métodos estocásticos de búsqueda que imitan la evolución biológica natural.
Se basan en la representación de una población de individuos, cada uno de los
cuales representa una solución factible a un problema dado. A cada individuo se le
asigna un valor o puntuación, relacionado con la bondad de dicha solución. Cuanto
mayor sea la adaptación de un individuo al problema, mayor será la probabilidad de
que el mismo sea seleccionado para reproducirse.
Este cruce producirá nuevos individuos, descendientes de los anteriores, los
cuales comparten algunas de las características de sus padres. Así vamos generando
una nueva población de posibles soluciones reemplazando la anterior y conteniendo
una mayor proporción de buenas características
Fernández y Herrera propone el uso de algoritmos evolutivos para sub-
muestreo en conjunto de datos desequilibrados, denominándolo Evolutionary Under-
Sampling (EUS) [GCFH06].
Para logar esto destacan dos cuestiones importantes, la especificación de la
representación de las soluciones y la definición de la función fitness, se trata de una
función evaluadora de la calidad de un individuo como solución a nuestro problema.
Representación: Mediante una representación binaria, un cromosoma se
compone de n genes, con dos posibles estados: un 1, representa que esa
Ilustración 29 Balanceo de datos: a) conjunto de datos original b) oversampling c) Tomelinks d) eliminación de ruido y bordes
Capítulo 4 Problema del desbalanceo de datos
52
instancia es añadida en la submuestra, un 0 representa que no pertenece a
la submuestra.
Función fitness: Se define como una función de aptitud que combina dos
valores, el ratio de clasificación y el porcentaje de reducción de las
instancias.
4.2.2 Adaptación de los algoritmos
Con este enfoque lo que se busca es cambiar los algoritmos clásicos de
clasificación, con el fin de mejorar su precisión en bases de datos desbalanceadas.
Otra propuesta ampliamente estudiada son los sistemas difusos o las máquinas de
vectores soporte.
4.2.3 Técnicas de remuestreo y adaptación
Un ejemplo de esto sería el CTC, Consolidated Tree Construction. Realiza una
combinación de las dos variantes expuestas anteriormente, por un lado emplea técnicas
de remuestreo para generar las submuestras y por otro realiza una adaptación del
algoritmo C4.5.
Capítulo 5
Material, Desarrollo y Métodos
En el capítulo quinto se encuentra el desarrollo del proyecto como tal, una vez
alcanzada la base teórica en los capítulos anteriores, se enmarcan los esfuerzos llevados
a cabo para adaptar la plataforma del grupo ALDAPA a los requerimientos necesarios.
Comienza con un análisis de los formatos de datos implicados UCI y KEEL, la
familiarización con las herramientas que se emplearán, la interiorización de la
estructura de las diferentes secciones que conforman GureKS para abarcar
posteriormente la programación de funciones que hacen posible esta adaptación.
Finalmente se describe el proceso empleado para la utilización del resto de herramientas
que posibilitan el estudio
Capítulo 5 Material, Desarrollo y Métodos
54
5.1 Introducción
El objetivo principal que pretende este proyecto, no es otro que, realizar un
estudio o análisis del comportamiento del algoritmo CTC desarrollado en mayor medida
por Txus Pérez -con la colaboración de los diversos componentes que han formado el
grupo de investigación ALDAPA a lo largo de estos años - en el ámbito de la problemática
del desbalanceo de datos.
Las bases de datos empleadas para dicho estudio han sido proporcionadas gracias
al proyecto KEEL, sobre las cuales disponemos de un extenso artículo comparativo, en
él, se propone el uso de algoritmos genéticos para luchar contra el desbalanceo de datos,
a la vez que muestra los resultados de los algoritmos clásicos del machine learning. De
esta manera, podemos comparar el desempeño del CTC en este contexto con 22
algoritmos y en un conjunto de 33 bases de datos.
El estudio [FGLBH10] es relevante, pues posee un gran factor de impacto y ha
sido publicado en la prestigiosa revista IEEE Transactions on Evolutionary Computation,
que posee un factor de impacto 3.341.
Para llevar a cabo este análisis del comportamiento del CTC hay que abordar los
objetivos derivados del principal. El punto de partida ha sido alcanzar la base teórica
necesaria que se podría resumir en los siguientes puntos:
Situarnos en la disciplina de la minería de datos y el fundamento del KDD,
entendiendo en qué se basa el proceso de adquisición de conocimiento a partir
de bases de datos, las etapas que lo componen, sus principales características,
las aplicaciones más comunes y las diversas técnicas.
El paradigma del aprendizaje automático, aclarando en qué consiste el proceso
de aprendizaje, las distintas variantes del mismo, centrándonos en el aprendizaje
supervisado. Conocer cómo se evalúa el poder de un clasificador y los
principales métodos de validación sobre los mismos.
La compresión del paradigma de los árboles de clasificación, conociendo los
principales algoritmos, y el proceso de inducción, base de todos ellos en la
construcción de árboles.
Adquirir una primera toma de contacto de la problemática del class imbalance,
conociendo los esfuerzos realizados por la comunidad científica, para abordar
este problema y las técnicas que se han desarrollado a lo largo de estos años.
Interiorizar el proceso de creación del árbol consolidado, analizando el
algoritmo y el proceso de consolidación paso a paso.
Capítulo 5 Material, Desarrollo y Métodos
55
Una vez superados los objetivos que, podríamos calificar como pre-objetivos,
estamos preparados para abordar el estudio.
El primer paso en esta nueva etapa es tener claro cuáles son las fases por las que
debe pasar un estudio de esta envergadura, es decir, aclarar conceptos sobre cómo realizar
este estudio, que metodología experimental se empleará, cuáles son las distintas etapas
por las que pasa la experimentación, qué herramientas software necesitamos, cómo
funcionan, qué ampliaciones hay que hacer en las mismas, en qué lenguaje de
programación trabajaremos, y en definitiva tener claro el proceso desde el inicio con el
conjunto de muestras, hasta que obtenemos los resultados de clasificación y una vez
obtenidos estos cómo los tratamos.
Lo primero que debe de quedar claro es de dónde partimos y a dónde queremos
llegar: De una manera resumida, podemos afirmar que partimos de un conjunto de
muestras de entrenamiento, y queremos obtener la tasa de acierto o error que comete el
clasificador a estudio, cuando clasifica nuevas instancias de la base de datos.
Pero pasar de una muestra al resultado final es un proceso que transcurre por
distintas fases. La primera, es obtener un conjunto de submuestras a partir de la muestra,
esto en el caso del CTC. Se logra usando las plataformas desarrolladas para este cometido
por el grupo de investigación ALDAPA, en concreto GureKS.
Ha sido necesario adaptar la plataforma de experimentación que emplearemos
para llevar a cabo el estudio y así poder ampliar su funcionalidad y dotarlo de capacidad
para leer bases de datos en el formato .dat, que es propio del proyecto KEEL
[AFLDGSH11].
Esta plataforma empleada por el grupo para los diversos estudios y proyectos
relacionados con los árboles de clasificación, ya sea el C4.5 de Quinlan [Qui93], CHAID
o el propio CTC [Per06], consta de distintas aplicaciones con funciones diferenciadas.
Por un lado nos encontramos la aplicación GureKS, que es la encargada de generar
las submuestras que se emplearán en la construcción de los árboles y que se detalla en la
sección 5.8.1 GureKS. Nos da la posibilidad de crear submuestras a partir de una muestra
con la distribución concreta que deseemos y aplicar cualquiera de las principales técnicas
de remuestreo.
Por otra parte, para construir los árboles de clasificación a partir de las
submuestras obtenidas emplearemos la aplicación Haritza a la que también se dedica una
sección más adelante en este capítulo (5.8.2 Haritza).
Estas dos aplicaciones están desarrolladas en la plataforma Windows, usando el
lenguaje de programación Visual C++.
Una vez construidos los árboles de clasificación y testeados, se les aplica un tercer
programa desarrollado en Java por el grupo ALDAPA. Kurbak es el encargado de tratar
las salidas del Haritza, que más adelante se detallan y generar un fichero con el resultado
Capítulo 5 Material, Desarrollo y Métodos
56
de la clasificación mostrando las principales medidas de bondad de un algoritmo. Se tiene
un fichero por cada uno de los árboles de clasificación construidos.
Obtenidos los ficheros .aue por cada base de datos, emplearemos la potencia que
ofrece un programa como Office en combinación con el lenguaje VBA para calcular las
medias de los 6 parámetros de bondad de una manera automatizada y trabajaremos los
resultados mediante gráficas, rankings y test estadísticos.
Una vez resumida de una manera burda el proceso que realizaremos para este
estudio, que no pretende ser más que una primera aproximación, se muestra en la próxima
página un esquema grafico del proceso completo; no se describe el mismo, pues el
objetivo que persigue es introducirnos en el procedimiento para profundizar más
detenidamente en futuras secciones de este capítulo.
Capítulo 5 Material, Desarrollo y Métodos
57
Bases de datos del formato KEEL
Ilustración 30 Proceso completo de un estudio para un conjunto de bases de datos
Capítulo 5 Material, Desarrollo y Métodos
58
5.2 Algoritmos comparados
Se pretende comparar el desempeño del CTC frente a los 16 algoritmos
denominados como GBML (Genetic Based Machine Learning) para la construcción de
conjuntos de reglas propuestos en genetic based machine learning for rule induction y
otros 6 algoritmos clásicos no evolutivos. Para este fin, se disponen de los mismos
conjuntos de entrenamiento y testeo basados en un 5x5 fold cross validation empleados
por los autores en las 33 bases de datos.
Para ello se sigue la misma metodología experimental desarrollada en el trabajo
original, incluyendo una comparación jerárquica a través del test de Shaffer.
5.2.1 Algoritmos basados en genéticos
Los autores especifican el estado del arte en el aprendizaje automático a través de
algoritmos basados en genéticos para la inducción de reglas.
Los algoritmos de inducción de reglas tienen por objeto descubrir una descripción
para el concepto de destino, mediante reglas explícitas formuladas en términos de pruebas
para ciertos valores de los atributos.
El conjunto de reglas resultante debe ser capaz de reconocer correctamente
instancias del concepto objetivo y discriminarlos de objetos que no pertenecen a ella. El
uso de conjuntos de reglas como representación del conocimiento hace a estos algoritmos
muy competitivos en términos de interpretabilidad, puesto que las reglas pueden ser leídas
fácilmente por personas expertos.
Se propone una taxonomía sobre este tipo de métodos que define un marco general
en el que cada algoritmo puede ser encuadrado.
La metodología empleada está basada en una comparación jerárquica;
primeramente se identifica los que muestran un mejor desempeño dentro de cada familia
y son elegidos como representantes de la misma.
En cuadro inferior se encuentra un resumen de la taxonomía propuesta para los 16
algoritmos.
1. Chromosome = Rule:
(a) Michigan: XCS and UCS
(b) IRL (Iterative Rule Learning): SIA and HIDER
(c) GCCL (Genetic Cooperative Competitive Learning):
CORE, OCEC and COGIN
2. Chromosome = Rule Set:
(a) Pittsburgh: GIL, Pitts-GIRLA, DMEL, GASSIT, OIGA and
ILGA
Capítulo 5 Material, Desarrollo y Métodos
59
3. Chromosome = Decision Tree or Tree Rule
(a) HEDT (Hybrid Evolutionary Decision Tree): DT-GA,
Oblique-DT and TARGET
5.2.2 Algoritmos clásicos de clasificación
En el mismo trabajo se comparan los algoritmos expuestos anteriormente con los
algoritmos no evolutivos que clásicamente han obtenido buenos resultados.
CN2
CART
AQ
C4.5
C4.5 Rules
Ripper
5.3 Condiciones del estudio de KEEL
Se han considerado treinta y tres conjuntos de datos de UCI con diferentes
relaciones entre las clases minoritaria y mayoritaria. Se encuentra una descripción de
cada base de datos en la sección 5.4 Bases de datos del estudio.
En los experimentos desarrollados en el estudio, se ha adoptado 5-veces la
validación cruzada como modelo, es decir, se ha dividido el conjunto de datos al azar en
5 rodajas, cada uno contiene el 20% de los patrones del conjunto de datos. De las 5 rodajas
o folds se han utilizado cuatro pliegues para el entrenamiento y uno para la prueba. Para
cada una de las cinco particiones, se han ejecutado 5 ensayos de los algoritmos.
Por cada conjunto de datos, por lo tanto, se considerará los resultados promedio
de 25 ejecuciones.
5.4 Bases de datos del estudio
Descripción de las bases de datos empleadas
A continuación se presenta una breve descripción sobre las bases de datos
empleadas en los 2 experimentos de los capítulos 6 y 7 llevados a cabo con el fin de
analizar el funcionamiento del algoritmo de construcción de árboles consolidados en la
problemática del class imbalance.
Como ya se ha comentado en las secciones referentes a las experimentaciones, por
cada una de las BD se han construido 25 árboles consolidados.
Todas las bases de datos que forman este estudio han sido proporcionadas y
pertenecen al proyecto KEEL y se pueden encontrar para su descarga en:
Capítulo 5 Material, Desarrollo y Métodos
60
http://sci2s.ugr.es/keel/study.php?cod=13
Estas bases de datos han sido obtenidas del repositorio UCI, pero algunas han sido
modificadas. La razón que subyace es convertir las bases de datos multiclase en biclase
para obtener dos clases desbalanceadas. Esto lo consiguen mediante la unión de dos o
más clases.
Abalone
Esta base de datos contiene la predicción de la edad del abulón a partir de
mediciones físicas. La edad de las orejas de mar se determina mediante la reducción de
la cáscara a través del cono, la tinción, y contando el número de anillos a través de un
microscopio.
Ecoli
En esta base de datos se predice el sitio de localización de las proteínas mediante
el empleo de algunas medidas sobre la célula (citoplasma, membrana interna,
perisplasma, la membrana externa, lipoproteína de la membrana externa, membrana
interna, lipoproteína de la membrana interna).
BD abalone Clases originales
{15, 7, 9, 10, 8, 20, 16, 19, 14, 11, 12, 18, 13, 5, 4, 6, 21, 17, 22, 1, 3, 26, 23, 29, 2, 27, 25, 24}
abalone 9-18 Versión desequilibrada del conjunto de datos abalone con la siguiente distribución
Clase minoritaria Clase mayoritaria
{18} {9}
abalone 19 Versión desequilibrada del conjunto de datos abalone con la siguiente distribución
Clase minoritaria Clase mayoritaria
{19} ^{19}
BD ecoli Clases originales
{cp,im,imS,imL,imU,om,omL,pp}
ecoli_0_vs_1 Versión desequilibrada del conjunto de datos ecoli con la siguiente distribución
Clase minoritaria Clase mayoritaria
{im} {cp}
ecoli1 Versión desequilibrada del conjunto de datos ecoli con la siguiente distribución
Clase minoritaria Clase mayoritaria
{im} {cp,imS,imL,imU,om,omL,pp}
ecoli2 Versión desequilibrada del conjunto de datos ecoli con la siguiente distribución
Clase minoritaria Clase mayoritaria
{pp} {cp,im,imS,imL,imU,om,omL}
ecoli3 Versión desequilibrada del conjunto de datos ecoli con la siguiente distribución
Clase minoritaria Clase mayoritaria
{imU} {cp,im,imS,imL,om,omL,pp}
ecoli3 Versión desequilibrada del conjunto de datos ecoli con la siguiente distribución
Clase minoritaria Clase mayoritaria
{om} {cp,im,imS,imL,imU,omL,pp}
Capítulo 5 Material, Desarrollo y Métodos
61
Glass
Esta base de datos contiene información del servicio científico forense de EE.UU
acerca de 6 tipos de vidrio que se pueden encontrar en la escena del crimen, se define en
términos de su contenido de óxido (es decir, Na, Fe, K, etc.).
Haberman
Esta base de datos contiene casos de un estudio que se realizó entre 1958 y 1970
en el Hospital de la Universidad de Chicago Billings en la supervivencia de los pacientes
que se habían sometido a cirugía para el cáncer de mama.
BD glass Clases originales
{0, 1, 2, 3 , 4 , 5, 6}
glass0 Versión desequilibrada del conjunto de datos glass con la siguiente distribución
Clase minoritaria Clase mayoritaria
{0} {1,2,3,4,5,6}
glass1 Versión desequilibrada del conjunto de datos glass con la siguiente distribución
Clase minoritaria Clase mayoritaria
{1} {0,2,3,4,5,6}
glass0-1-2-3_VS_4-5-6 Versión desequilibrada del conjunto de datos glass con la siguiente distribución
Clase minoritaria Clase mayoritaria
{0,1,2,3} {4,5,6}
glass2 Versión desequilibrada del conjunto de datos glass con la siguiente distribución
Clase minoritaria Clase mayoritaria
{2} {0,1,3,4,5,6}
glass4 Versión desequilibrada del conjunto de datos glass con la siguiente distribución
Clase minoritaria Clase mayoritaria
{4} {0,1,2,3,5,6}
glass5 Versión desequilibrada del conjunto de datos glass con la siguiente distribución
Clase minoritaria Clase mayoritaria
{5} {0,1,2,3,4,6}
glass6 Versión desequilibrada del conjunto de datos glass con la siguiente distribución
Clase minoritaria Clase mayoritaria
{6} {0,1,2,3,4,5}
BD haberman Clases originales
{positive, negative}
Capítulo 5 Material, Desarrollo y Métodos
62
Iris
Esta base de datos es quizás la mejor que se encuentra en la literatura de
reconocimiento de patrones. El conjunto de datos contiene 3 clases de 50 casos cada uno,
donde cada clase se refiere a un tipo de planta iris. Una clase es linealmente separable de
las otras 2, estas últimas no son linealmente separables una de otra.
NewThyroid
Esta base de datos contiene información sobre la enfermedad de la tiroide. La tarea
es detectar si un paciente dado es normal (1) o sufre de hipertiroidismo (2) o
hipotiroidismo (3).
Pageblocks
Esta base de datos contiene bloques de la disposición de página de un documento
que ha sido detectada por un proceso de segmentación. La tarea consiste en determinar el
tipo de bloque: Texto (1), la línea horizontal (2), Gráfico (3), línea vertical (4) o imagen
(5).
Pima
Esta base de datos contiene información de los pacientes de sexo femenino de al
menos 21 años de edad y de herencia indígena.
BD iris Clases originales
{Iris-setosa, Iris-versicolor, Iris-virginica}
iris0 Versión desequilibrada del conjunto de datos iris con la siguiente distribución
Clase minoritaria Clase mayoritaria
{iris-setosa} {iris-virginica}
BD thyroid Clases originales
{1,2,3}
new-thyroid1 Versión desequilibrada del conjunto de datos thyroid con la siguiente distribución
Clase minoritaria Clase mayoritaria
{2} {1,3}
new-thyroid2 Versión desequilibrada del conjunto de datos thyroid con la siguiente distribución
Clase minoritaria Clase mayoritaria
{3} {1,2}
BD page-blocks Clases originales
{1, 2, 3, 4, 5}
page-blocks0 Versión desequilibrada del conjunto de datos page-blocks con la siguiente distribución
Clase minoritaria Clase mayoritaria
{1} {2,3,4,5}
Capítulo 5 Material, Desarrollo y Métodos
63
Segment
Esta base de datos contiene instancias extraídas aleatoriamente de una base de
datos de 7 imágenes al aire libre. Las imágenes eran segmentadas para crear una
clasificación para cada píxel. Cada instancia codifica una región de 3x3. La tarea consiste
en determinar el tipo de superficie de cada región.
Vehicle
El propósito de esta base de datos es clasificar una silueta dada como uno de los
cuatro tipos de vehículo, utilizando un conjunto de características extraídas de la silueta.
El vehículo puede ser visto desde uno de los muchos ángulos diferentes.
Vowel
Esta base de datos contiene información acerca del reconocimiento de las once
vocales del Inglés Británico. Esta versión es una mezcla de las dos bases de datos
originales preestablecidas en el repositorio UCI.
BD pima Clases originales
{tested_negative,tested_positive}
Pima Versión desequilibrada del conjunto de datos pima con la siguiente distribución
Clase minoritaria Clase mayoritaria
{positive} {negative}
BD segment Clases originales
{1, 2, 3, 4, 5, 6, 7}
segment0 Versión desequilibrada del conjunto de datos segment con la siguiente distribución
Clase minoritaria Clase mayoritaria
{1} {2,3,4,5,6,7}
BD vehicle Clases originales
{van, saab, bus, opel}
vehicle0 Versión desequilibrada del conjunto de datos vehicle con la siguiente distribución
Clase minoritaria Clase mayoritaria
{van} {saab,bus,opel}
vehicle1 Versión desequilibrada del conjunto de datos vehicle con la siguiente distribución
Clase minoritaria Clase mayoritaria
{saab} {van,bus,opel}
vehicle2 Versión desequilibrada del conjunto de datos ecoli con la siguiente distribución
Clase minoritaria Clase mayoritaria
{bus} {saab,van,opel}
vehicle3 Versión desequilibrada del conjunto de datos ecoli con la siguiente distribución
Clase minoritaria Clase mayoritaria
{opel} {van,saab,bus}
Capítulo 5 Material, Desarrollo y Métodos
64
Wisconsim
Esta base de datos contiene casos de un estudio que se llevó a cabo en la
Universidad de Hospitales de Wisconsin, acerca de los pacientes que se sometieron a
cirugía para el cáncer de mama. La tarea consiste en determinar si el tumor detectado es
benigno (2) o maligno (4).
Yeast
Esta base de datos contiene información sobre un conjunto de células de levadura.
La tarea consiste en determinar el sitio de localización de cada célula.
BD vowel Clases originales
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
vowel0 Versión desequilibrada del conjunto de datos vowel con la siguiente distribución
Clase minoritaria Clase mayoritaria
{0} { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
BD wisconsin Clases originales
{2,4}
BD yeast Clases originales
{MIT, NUC, CYT, ME1, ME2, ME3, EXC, VAC, POX, ERL}
yeast1 Versión desequilibrada del conjunto de datos yeast con la siguiente distribución
Clase minoritaria Clase mayoritaria
{NUC} {MIT,CYT, ME1, ME2, ME3, EXC, VAC, POX, ERL}
yeast-2_vs_8 Versión desequilibrada del conjunto de datos yeast con la siguiente distribución
Clase minoritaria Clase mayoritaria
{CYT} {ME2}
yeast3 Versión desequilibrada del conjunto de datos yeast con la siguiente distribución
Clase minoritaria Clase mayoritaria
{ME3} {MIT, NUC, CYT, ME1, ME2, EXC, VAC, POX, ERL}
yeast4 Versión desequilibrada del conjunto de datos yeast con la siguiente distribución
Clase minoritaria Clase mayoritaria
{ME2} {MIT, NUC, CYT, ME1, EXC, VAC, POX, ERL}
yeast5 Versión desequilibrada del conjunto de datos yeast con la siguiente distribución
Clase minoritaria Clase mayoritaria
{ME1} {MIT, NUC, CYT, ME2, EXC, VAC, POX, ERL}
yeast6 Versión desequilibrada del conjunto de datos yeast con la siguiente distribución
Clase minoritaria Clase mayoritaria
{EXC} {MIT, NUC, CYT, ME1, ME2, EXC, VAC, POX, ERL}
Capítulo 5 Material, Desarrollo y Métodos
65
Tabla resumen de características
En la tabla inferior se muestran las principales características de las 33 bases de
datos empleadas. Para cada base de datos se indica el número de instancias, número de
atributos, nombre de las dos clases y el tanto por ciento de casos que pertenecen a la clase
minoritaria.
Base de Datos Numero instancias Numero atributos Clase(min,max) % Clase
Minoritaria
glass1 214 9 (build-win-non float-proc; remainder) 35,51
ecoli-0_vs_1 220 7 (im; cp) 35
wisconsin 683 9 (malignant; benign) 35
pima 768 8 (tested-positive; tested-negative) 34,84
iris0 150 4 (Iris-Setosa; remainder) 33,33
glass0 214 9 (build-win-float-proc; remainder) 32,71
yeast1 1484 8 (nuc; remainder) 28,91
vehicle1 846 18 (Saab; remainder) 28,37
vehicle2 846 18 (Bus; remainder) 28,37
vehicle3 846 18 (Opel; remainder) 28,37
haberman 306 3 (Die; Survive) 27,42
glass-0-1-2-3_vs_4-5-6 214 9 (non-window glass; remainder) 23,83
vehicle0 846 18 (Van; remainder) 23,64
ecoli1 336 7 (im; remainder) 22,92
new-thyroid2 215 5 (hypo; remainder) 16,89
new-thyroid1 215 5 (hyper; remainder) 16,28
ecoli2 336 7 (pp; remainder) 15,48
segment0 2308 19 (brickface; remainder) 14,26
glass6 214 9 (headlamps; remainder) 13,55
yeast3 1484 8 (me3; remainder) 10,98
ecoli3 336 7 (imU; remainder) 10,88
page-blocks0 5472 10 (remainder; text) 10,23
vowel0 988 13 (hid; remainder) 9,01
glass2 214 9 (Ve-win-float-proc; remainder) 8,78
ecoli4 336 7 (om; remainder) 6,74
glass4 214 9 (containers; remainder) 6,07
abalone9-18 731 8 (18; 9) 5,65
glass5 214 9 (tableware; remainder) 4,2
yeast-2_vs_8 482 8 (pox; cyt) 4,15
yeast4 1484 8 (me2; remainder) 3,43
yeast5 1484 8 (me1; remainder) 2,96
yeast6 1484 8 (exc; remainder) 2,49
abalone19 4174 8 (19; remainder) 0,77
Capítulo 5 Material, Desarrollo y Métodos
66
5.5 Bases de datos KEEL
La aplicación o herramienta empleada por el grupo de investigación para crear las
submuestras a partir de una muestra de entrenamiento, necesita una modificación en la
programación de la misma con el objetivo de que sea capaz de leer o entender las bases
de datos del formato KEEL. Esto es así porque el GureKS sólo admite hasta este
momento bases de datos en formato de la UCI [AN07] y en el formato .for que es el
propio de la aplicación.
Por lo tanto, el primer paso antes de ponernos manos a la obra en el análisis y
primera toma de contacto con el código fuente, es estudiar cómo funciona el formato de
datos empleado en las bases de datos KEEL y comprender los principios en los que se
fundamenta.
Pero antes de esto conviene aclarar en qué consiste KEEL.
KEEL [AFLDGSH11] es una
herramienta Java de código
abierto para evaluar los
algoritmos evolutivos de la
minería de datos incluyendo
regresión, clasificación y
clustering. Contiene una gran
colección de algoritmos clásicos
para la extracción de
conocimiento, técnicas de pre-
procesado (selección de conjunto
de entrenamiento, selección de
características,
discretización, métodos de
imputación de valores perdidos, etc…), Inteligencia Computacional basado en algoritmos
de aprendizaje, incluyendo el evolutivo de reglas basados en diferentes enfoques
(Pittsburgh , Michigan e IRL, ...), y los modelos híbridos, tales como los sistemas difusos
genéticos, redes neuronales evolutivas, etc. Nos permite realizar un análisis completo de
cualquier modelo de aprendizaje en comparación con los existentes, incorporando un
módulo de prueba estadística para la comparación.
El formato de las bases de datos con las que realizaremos el estudio es el propio
del proyecto KEEL, si bien tiene similitudes con otro formato de datos ampliamente
extendido como es el Arff. Arff es el formato de bases de datos de la extendida aplicación
Weka (Waikato Environment for Knowledge Analysis - Entorno para Análisis del
Conocimiento de la Universidad de Waikato), plataforma de software libre, la cual se
centra en el aprendizaje automático y en la minería de datos.
Ilustración 31 Interfaz principal de la herramienta KEEL
Capítulo 5 Material, Desarrollo y Métodos
67
El formato de los ficheros de datos para los algoritmos implementados en KEEL
es una extensión del formato de datos presentado en WEKA, pero permitiendo una mayor
flexibilidad al usuario.
La extensión del formato de los datos que define KEEL es .dat. Los ficheros .dat
son archivos ASCII que describen una lista o conjunto de instancias a través de una serie
de atributos que varían en número y tipo dependiendo del archivo.
El archivo siempre consta de dos partes: la cabecera y los datos o matriz de datos.
La sección de la cabecera: En esta sección se define:
Nombre de la relación: El nombre de la base de datos. Forma parte de la
primera línea del fichero y es obligatorio.
@Relation <nombre>
El formato que debe seguir el <nombre> ha de ser de tipo cadena de
caracteres.
Declaración de atributos: La lista de atributos y el tipo que se pasan a describir
a continuación.
@Attribute <nombre> <tipo>
Como sucede con el nombre de la relación, el nombre del atributo también
debe de ser del tipo cadena de caracteres. Definir el @attribute nombre y tipo es
obligatorio.
Los tipos de atributos definidos en KEEL son los siguientes:
o Integer [min, max]
o Real [min, max]
El símbolo de separación de números decimales es un punto en lugar
de una coma.
En el caso de atributos de tipo integer y real, no es obligatorio indicar el
intervalo de valores, si vienen lo hacen separados por coma.
o Lista de valores de la forma {<valor0>, <valor1>, …, <valorN>}
Consta de un conjunto de valores posibles separados por comas
(caracteres o cadenas), que puede tomar el atributo.
Declaración de entradas y salidas: Sólo si es necesario en el problema, en el
caso de nuestro estudio sí que lo es.
Capítulo 5 Material, Desarrollo y Métodos
68
@inputs < nombre1 >, < nombre2 >, ... , < nombreX >
@outputs < nombre1 >, < nombre2, ... , < nombreY >
Mediante @inputs indicamos qué atributos forman parte de la base de
datos, si un atributo no consta en la línea inputs es que es ignorado de la
misma.
Mediante @outputs indicamos los atributos de salida. En problemas como
éste de clasificación es necesario, ya que mediante outputs indicamos la
variable clase.
La sección de datos: Los datos se encuentran agrupados en líneas, formando lo
que podría calificarse como una matriz de datos, cada una de las líneas forma una
instancia de la base de datos. Los datos se encuentran separados por comas. Como sucede
con el nombre y la definición de atributos es una sección obligatoria y sigue el orden en
el que se definieron los atributos.
@Data
Si necesitamos indicar un valor nulo en los datos emplearemos < null >. Por último
destacar que los identificadores de los atributos pueden contener espacios y que su tamaño
máximo es de 12 caracteres.
Estos ficheros se almacenarán, por defecto, con la extensión .dat. Un ejemplo de
este tipo de ficheros puede ser el siguiente:
@relacion paint
@attribute colour {yellow, white, black}
@attribute amount integer [1, 10]
@attribute density real [0.1, 2.5]
@inputs colour, amount
@outputs density
@data
yellow, 4, 1.2
black, 1, 2.1
yellow, 2, 0.8
white, 8, 0.9
Capítulo 5 Material, Desarrollo y Métodos
69
5.6 Bases de datos del formato UCI
El formato de datos de la UCI también conocido como formato de datos C4.5, es
una modificación del programa famoso y ampliamente utilizado de Ross Quinlan C4.5.
La característica principal -que define este formato de bases de datos-, es que se
diferencia la parte de la definición de tipos o cabecera y por otro lado, separado en otro
fichero, encontramos los datos.
Diferenciamos entonces, dos ficheros, uno con extensión .names y el referente a
los datos se encuentran en el fichero con extensión .data.
El archivo .names contiene una serie de entradas que describen las clases, atributos
y valores del conjunto de datos, cada línea del fichero se termina con un punto, pero éste
se puede omitir si es el último carácter de una línea.
El fichero .names contiene la cabecera: En esta sección se define:
Nombre de las clases: El primer registro del archivo contiene los nombres de
las clases, separados por comas y termina con un punto
Declaración de atributos: Se definen los atributos en el orden en el que
aparecen en el fichero de datos, siguiendo el siguiente formato:
<at-name>: <at-type>.
El nombre del atributo es un identificador seguido de dos puntos y el tipo
del atributo. Cada nombre se compone de una cadena de caracteres sin comas,
comillas o dos puntos, puede contener un punto pero éste debe ser seguido de un
espacio en blanco.
El tipo de atributo debe ser:
o continuous: Si el atributo tiene valores continuos.
o discrete <n>: la palabra "discreto" seguida de un número entero que
indica cuántos valores puede tomar el atributo.
o <list of identifiers>: Atributo discreto con los valores. Los
identificadores deben estar separados por comas.
o ignore: Indica que este atributo debe ser ignorado.
o | (barra vertical): Significa que el resto de la línea debe ser considerada
como un comentario.
Un ejemplo de este formato para definir la cabecera podría ser el siguiente.
| Firstly the name of classes
good, bad.
|Then the attributes
Capítulo 5 Material, Desarrollo y Métodos
70
dur: continuous.
wage1: continuous.
wage2: continuous.
wage3: continuous.
cola: tc, none, tcf.
hours: continuous.
pension: empl contr, ret allw, none.
stby_pay: continuous.
shift_diff: continuous.
educ_allw: yes, no.
holidays: continuous.
vacation: average, generous, below average.
lngtrm_disabil: yes, no.
dntl_ins: half, none, full.
bereavement: yes, no.
empl_hplan: half, full, none.
El fichero .data se encuentran los datos:
El archivo contiene una línea por instancia de la base de datos. Cada una contiene
los valores de los atributos ordenados de acuerdo a lo definido en el fichero .names. Los
valores que toman los atributos para cada instancia se encuentran separados por comas.
Como sucede en el formato de bases de datos KEEL, la ausencia del valor de un
atributo se indica mediante el carácter '?'.
A continuación se encuentra el fichero .data asociado al .names anterior.
2,5.0,4.0,?,none,37,?,?,5,no,11,below average,yes,full,yes,full,good
3,2.0,2.5,?,?,35,none,?,?,?,10,average,?,?,yes,full,bad
3,4.5,4.5,5.0,none,40,?,?,?,no,11,average,?,half,?,?,good
3,3.0,2.0,2.5,tc,40,none,?,5,no,10,below average,yes,half,yes,full,bad
5.7 Adaptación de la herramienta GureKS al formato KEEL
Como se ha introducido al comienzo de este capítulo, se hace necesario realizar
unas modificaciones a nivel de programación en la herramienta GureKS, con el fin de
dotarla de capacidad para leer bases de datos en formato KEEL, y poder generar los
ficheros de salida necesarios en las próximas fases de esta experimentación.
Capítulo 5 Material, Desarrollo y Métodos
71
Las acciones que hay que llevar a cabo podrían resumirse en 2 puntos:
1-Lectura de la base de datos KEEL y almacenamiento en la estructura de datos.
Lectura del formato de datos
Lectura de la matriz de datos
Creación de la muestra
2-Generación de ficheros .names y .data.
Lenguaje de programación empleado
El lenguaje C++ es una extensión del lenguaje C diseñado a mediados de los años
1980 por Bjarne Stroustrup para soportar el paradigma de la programación orientada a
objetos.
El punto de partida de este paradigma se fundamenta en la idea de que el mundo
está formado por objetos. Entendiendo por objetos a la entidad significativa existente en
el entorno. El entorno se concibe como el conjunto de relaciones entre los distintos
objetos. Otro concepto importante en este paradigma es la clase, que puede verse como
un conjunto de objetos distintos del mismo tipo. Estos tienen un estado, características o
propiedades que lo componen en un momento dado y unos métodos asociados que son
las operaciones realizables por el objeto.
En la actualidad, el C++ es un lenguaje versátil, potente y general. Ofrece la
ventaja de permitir el desarrollo de aplicaciones modulares con código reutilizable.
En cuanto al número de ficheros que maneja este lenguaje son principalmente dos,
los ficheros de cabecera con extensión .h y .hpp y los ficheros fuentes, de extensión .cpp.
En los ficheros de cabecera se encuentran las declaraciones de constantes,
variables y funciones de las que consta el módulo, así como llamadas a otros archivos de
encabezado necesarios, mientras que en los ficheros fuente se implementa el código para
las funciones del módulo declaradas en los archivos de cabecera.
El elemento fundamental de las aplicaciones Windows son las ventanas o interfaz
gráfica. El API de Windows dispone de todas las funciones necesarias para la gestión de
las funcionalidades de las ventanas. Para gestionar la creación y uso de la interfaz gráfica
emplearemos la librería MFC de Microsoft.
¿Qué es MFC?
La librería MFC es una librería de clases, que encapsula el comportamiento del
sistema de ventanas, descargando de trabajo al programador y permitiéndole centrarse en
la funcionalidad específica de su programa.
Las clases en la biblioteca MFC están escritas en el lenguaje de programación
C++. Hay clases MFC de biblioteca para todos los elementos de la interfaz gráfica de
usuario (ventanas, marcos, menús, barras de herramientas, barras de estado, etc.), para la
Capítulo 5 Material, Desarrollo y Métodos
72
creación de interfaces de base de datos, para controlar los eventos, como mensajes de
otras aplicaciones, para el manejo del teclado y entrada del ratón, y para crear ActiveX
control.
En el anexo 3 se encuentra una pequeña introducción a Microsoft Visual C++ 6.0
con la que se programará.
5.7.1 Lectura de la BD KEEL y almacenamiento en la estructura de datos
Una vez aclarados los aspectos fundamentales del desarrollo de aplicaciones en
C++, es hora de comenzar el trabajo de implementación. Detallado el formato de bases
de datos KEEL y el empleado para la salida UCI; el siguiente paso es conocer la estructura
de datos y la forma en la que está programado el
GureKS, para deducir o descubrir cuáles son las
funciones o procedimientos que requieren una
modificación.
La complejidad inherente que se
encuentra uno al comienzo, es que se trata de
una aplicación que se ha ido actualizando o
ampliando año tras año por diferentes personas
y este hecho acompañado de la escasa
documentación supone una primera barrera.
La ayuda proporcionada por Txus en
forma de reuniones ha sido vital en este punto
del proyecto.
Además la envergadura o tamaño de la aplicación es considerable con lo que
acostumbra uno a encontrarse en la carrera.
Se pretende modificar el programa para que sea capaz de generar submuestras
como hasta ahora (con extensión .lid), pero partiendo de bases de datos en formato KEEL
y además realice una “traducción” de las mismas al formato UCI.
Para ello, es primordial estudiar las clases y detectar cuáles están implicadas en la
tarea que queremos concluir con éxito.
Como se deprende de la ilustración 32 el proyecto GureKS está compuesto de 76
clases, entre las que destacan:
Las cabeceras en las que se definen la representación de los datos que están
involucrados, es decir, atributos: _attribute_value.
Las clases empleadas para almacenar las variables que componen las muestras,
tanto las que se emplearán en la construcción de submuestras mediante CVable
Ilustración 32 Conjunto de clases que forman la aplicacion GureKS
Capítulo 5 Material, Desarrollo y Métodos
73
como las que realmente contiene el fichero de datos CVableF (sin variables
ignoradas).
Las relacionadas con la gestión de mensajes o diálogos: CAboutDlg
Las clases implicadas en la preparación de la herramienta: CArbolApp
Las propias para la carga de muestras CModuloCargarMuestra, generación de
submuestras y testeo del clasificador CModuloTest desde scripts
Las implicadas en la construcción de muestras: CMuestra,CMuestraUCI
Las relacionadas con la lectura y ejecución de scripts CLeeScript
Las ya implementadas para manejo de formatos CFicLeeFor, CFormatoDatosUci
Las clases necesarias para la integración del lexer y parser, que posibilitan el uso
de la gramática reconocedora: mylexer, myparser.
Tras un análisis y unas cuantas reuniones con Txus, se deduce que, la mayoría de
las clases implicadas en este proyecto no deben ser modificadas, pues son independientes
del cometido que se pretende abordar, que no es otro que “añadir” un nuevo formato al
funcionamiento de GureKS.
Como ya se ha expuesto, se empleará el GureKS únicamente para la creación de
submuestras a un determinado porcentaje de distribución de clases,
con una técnica de remuestreo concreta, dejando el cometido de
creación de árboles y las operaciones relacionadas con éstos en
manos de Haritza. Las técnicas de remuestreo y los métodos que
posibilitan la creación de submuestras a un determinado porcentaje
de clases se deben dejar sin alterar, pues, en nada tiene qué ver el
formato de los datos en el funcionamiento de estos métodos.
Además, las clases relacionadas con la construcción,
gestión y operaciones propias de los árboles de clasificación, como
la poda o la visualización del árbol no nos interesan para nada en
este momento.
Lo mismo sucede con las clases implicadas en la lectura y
ejecución de scripts, o configuración de la herramienta y los
parámetros propios, que se continuarán usando como
siempre.
Por otra parte, las clases que especifican el formato de las variables o atributos
no deben de ser modificadas en absoluto, ya que únicamente se pretende añadir un nuevo
formato a la aplicación. Aunque conocer el funcionamiento de las mismas se antoja
necesario para poder leer los atributos y tipo de los mismos.
GureKS dispone de dos clases para la gestión de atributos o variables y conviene
diferenciar entre ellas, CVable y CVableF. CVable es la clase encargada de crear objetos
de tipo Vable para almacenar datos del atributo leído de la muestra, la estructura está
formada por distintos campos, los más importantes se detallan a continuación:
Ilustración 33 Workspace del proyecto GureKS
Capítulo 5 Material, Desarrollo y Métodos
74
public:
// Formato de la Variable
// [Var] ----------------------
CString Nom; // Nombre de la Variable
int Long; // N bytes a leer en el fichero
BOOL VD; // Variable Dependiente
BOOL Ign; // Ignorar la Variable en el analisis
BOOL Ord; // Orden
long Min,Max; // Valores Mmo y Mḩmo
// float MinR,MaxR;
CWordArray Vec_Cat; // Vector Valores Distintos = Categorias
CStringArray Vec_CatEtiq; // Vector de Etiquetas de las Categorias
Variable booleana Vd que indica si el atributo leído sea de tipo clase.
Ign indica si la variable debe ser ignorada del análisis.
Para atributos que contienen etiquetas o enumerados se almacenan en los vectores
Vec_CatEtiq y en Vec_Cat el número de categorías.
El tipo de datos CVableF es más sencillo.
public:
// Formato de la Variable
// [Var] ----------------------
CString Nom; // Nombre de la Variable
int Long; // N bytes a leer en el fichero (si el formato es
fijo)
BOOL Ign; // Ignorar la Variable en el analisis
Aunque puedan parecer iguales, se distinguen en la utilización que se les da, en
CVableF están todas las variables que se encuentran en el fichero de formato, mientras
que en CVable sólo se crean las variables que se emplearán para la generación de
submuestras y que no han sido ignoradas. GureKS diferencia entre todas las variables y
las que realmente se emplearán. El objetivo es que, aunque haya algunas que se
ignorarán, es necesario conocer su formato (mínimo) para poderlas leer y distinguirlas de
las que serán usadas.
Aclarada la primera estructura empleada para guardar los atributos que vayamos
leyendo, los siguientes esfuerzos se enmarcan en encontrar en qué clases gestiona GureKS
la lectura del formato de datos y los datos propiamente dichos.
El trabajo de programación se desarrolla únicamente en dos clases, CarbolDoc y
CMuestra.
CarbolDoc contiene la definición de una gran cantidad de estructuras, destacan:
La estructura para gestionar el árbol consolidado
El vector de submuestras para la consolidación del árbol
Vector formato de variable de datos
/ --------------------------------------------------------------------------------
Capítulo 5 Material, Desarrollo y Métodos
75
// Vector Formato Variables Datos (Fichero '.for')
// --------------------------------------------------------------------------------
int Vables_Ign;
// SIN_IGNORAR // Todos los datos del fichero son almacenados en Tab_Datos
// IGNORANDO // S�se almacenan los datos asociados a las vables NO ignoradas
CString Nom_Fich_For; // Nombre del Fichero de Formato
CObArray Vec_VablesF; // Vector con todas las Vables. del fichero de Formatos
int T_Var; // Num. Total de Variables
CObArray Vec_Vables; // Vector con todas las Vables. NO Ignoradas
int N_Var; // Num. de Variables No Ignoradas
BYTE n_Fic_Fmt; // Formato de los Campos a leer: (0) LIBRE | (1) FIJO
int Ident_VD; // Identificador de la Vable. Dependiente
int Ident_VD_Tot_Var; // Idem. pero respecto al vector Vec_VablesF
int NumCatVD; // Nmero de Categorde la VD
// - 0 ,si la vable es discreta (tipo T_Tab_Datos) y estarᠧuardada en Tab_Datos
// - 1 ,si la vable es continua (tipo T_Tab_DatosCont) y estarᠧuardada en m_Tab_DatosCont
// ***** Esto podrser generalizable con un array de Tablas de Datos de distintos
tipo base!!!!!
CMiArrayGenerico<BYTE> m_vLocalizadorTabDatos;
// Vecor que indica cual es el ice de cada vable en su tabla de datos
correspondiente
CMiArrayGenerico<BYTE> m_vLocalizadorVableTabDatos;
int T_VarNoCont; // Num. Total de Variables NO CONTINUAS (Discretas e Ignoradas)
int T_VarCont; // Num. Total de Variables CONTINUAS
CArbolC45 *m_pArbolC45;
Vector de muestras de test
Las estructuras necesarias para la impresión del árbol en fichero,
y los métodos que operan sobre los mismos.
CMuestra contiene las estructuras y métodos necesarios para la creación y gestión
de muestras que contendrán los datos, mediante esta clase se crean las muestras a partir
de los ficheros de datos y se almacenan para su posterior uso en la estructura que hace
uso de la clase CMiMatrizGenerica.
CMiMatrizGenerica<T_Tab_Datos> Tab_Datos
5.7.1.1 Lectura del formato de datos
Analizando detalladamente la programación de GureKS, se aprecia que en estos
momentos la aplicación gestiona dos tipos de formato:
El propio de la aplicación e involucrado en la creación de los ficheros .lid o
ficheros de casos de identificadores denominado .for
El formato de datos UCI.
Es de vital importancia estudiar qué operaciones se realizan para seguir las
mismas decisiones de implementación y poder añadir el tercer formato, el .data de KEEL.
La lectura del formato que siguen los datos, y la lectura de los mismos se realiza
en dos funciones diferenciadas, y se encuentran en las dos clases anteriormente expuestas.
A pesar de que en el formato de datos KEEL, los ficheros de datos y formato
están integrados en un único fichero y se podría realizar el proceso en la misma función,
Capítulo 5 Material, Desarrollo y Métodos
76
se ha decidido realizarla en dos fases -como se ha venido desarrollando hasta ahora- para
no variar la metodología empleada con los otros dos formatos.
La función encargada de la lectura del formato en CArbolDoc es:
int CArbolDoc::Leer_Fic_Formato()
/* Lee el fichero de formato de los datos y configuracion de vables.
(*.FOR
La función comienza con la inicialización y declaración de variables necesarias
para almacenar el formato: Contadores para las variables
int cont_var,Tot_Var; // Contador de Variables No Ignoradas y Totales
int i_vableNoCont,i_vableCont;
Buffer para almacenar las líneas del fichero que se van leyendo
char lin[L_LIN]/*,lin_old[L_LIN]*/; // Buffer de Lectura (Linea fichero)
Variables para almacenar atributos
CVable *p_Vable,*p_Vable_VD;
CVableF *p_VableF;
Al abrir el fichero formato se mira la extensión que éste posee, aquí se realiza la
diferencia entre formato GureKS, UCI O KEEL. Si la extensión leída es .dat activamos
una variable booleana indicando que el formato de datos es el de KEEL, impidiendo que
ejecute el código correspondiente a los otros dos formatos.
Entramos en un if que inicializa las variables necesarias, y se empieza a leer el
contenido del fichero:
En la primera línea se tiene que encontrar el token @relation con el nombre de la
relación y se continúa leyendo el fichero. En caso de no ser así se muestra mensaje de
error y aborta el proceso.
Seguidamente viene la serie de atributos que forman la muestra, también obligatorio.
Mientras se siga leyendo el token @atributte se continua en un bucle en el que se
comienza a procesar la definición de atributos.
Se almacena el nombre del atributo y en función del tipo del mismo se diferencia
el proceso a seguir, podemos encontrar atributos enteros, reales o enumerados-discretos,
cada uno con sus particularidades.
o En caso de encontrar un atributo entero o real, avanza la lectura del contenido
del buffer y almacena los límites que definen el conjunto que vienen entre [].
o Finalmente si lo que encuentra es enumerado o discreto, en el vector Vec_Cat
se almacena el índice de la etiqueta que será el valor que se guardará en la
tabla de datos asociada a la etiqueta leída y en Vec_Cat_Etiq las etiquetas
Capítulo 5 Material, Desarrollo y Métodos
77
propiamente dichas, reservando la posición cero del mismo para indicar
valores missing (como los otros dos formatos).
Existe una estructura destacada cuyo cometido es indicar el tipo de datos de la
variable, su funcionamiento es el siguiente:
CMiArrayGenerico<BYTE> m_vLocalizadorTabDatos; - 0 ,si la vable es discreta (tipo
T_Tab_Datos) y estarᠧuardada en Tab_Datos // - 1 ,si la vable es continua (tipo T_Tab_DatosCont) y
estarᠧuardada en m_Tab_DatosCont
CMiArrayGenerico<BYTE> m_vLocalizadorVableTabDatos; // Vecor que indica cual es
el ice de cada vable en su tabla de datos correspondiente
Después de la lectura de cada atributo, se almacena el objeto de tipo CVable, y
CVableF empleado para colectar la información del atributo, en un vector creado para
este efecto, definido como variable global y de nombre Vec_Vables. También se
actualizan todos los contadores, encargados de contar el número de atributos continuos,
los no continuos, número total de variables….
En estos momentos todavía no se sabe si existen variables ignoradas o cual es la
variable clase, para este cometido, el formato posee los token @inputs y @outputs.
Se almacenan en un vector temporal los atributos que vienen precedidos del token
@inputs. Al finalizar se recorre éste comparándolo con el que contiene las
variables ya creadas (Vec_Vables). Si coinciden no se ignora. Si al recorrer entero
el vector temporal no hemos encontrado la variable debe ser ignorada,
actualizando los campos correspondientes y eliminándola del vector.
Con @outputs se indica la variable clase, se lee el nombre y se busca en el vector
de variables la que posee el mismo nombre para modificar el atributo VD que
indica que es la variable clase. En el caso de encontrar más de una variable
después del token @outputs se muestra un mensaje de error. El motivo es que en
este tipo de problemas de clasificación la variable clase sólo puede ser una.
En este momento, se ha leído la parte del fichero correspondiente al formato y ya
se han rellenado las estructuras que definen y gestionan el tipo de datos de GureKS.
5.7.1.2 Lectura de la matriz de datos
Para leer los datos, GureKS hace uso de una función que se encuentra definida y
programada en CMuestra. Almacena los datos en dos estructuras, una para los datos
continuos, otra para los datos enteros.
Capítulo 5 Material, Desarrollo y Métodos
78
Pero para almacenar estos datos antes es necesario hacer uso del constructor de la
clase para crear un objeto de tipo CMuestra con los parámetros adecuados. Para esta
función nos apoyamos en el método:
CMiMatrizGenerica<T_Tab_Datos> Tab_DatosCMuestra *
CMuestra::Construir_Muestra(CString nom_fic_dat,CArbolDoc *pDoc,int
fil_x_col)
Esta función necesita ser ampliada y es la encargada de crear la muestra; se
encuentra en la misma clase y consta de la siguiente definición:
La función comienza obteniendo el número de casos que componen el fichero de
datos, para ello procede de la siguiente manera: Lee el contenido del fichero línea por
línea a través de un bucle, incrementando un contador hasta llegar al final del fichero
desde el momento en el que encuentra el token @data.
Al final de la función se diferencia el formato que sigue la muestra que se va a
crear, en caso de ser el tipo KEEL se emplea el código:
if(pDoc->m_FormatoKEEL){ if(pDoc->Vables_Ign==SIN_IGNORAR)
p_mu = new CMuestra(num_casos,pDoc->T_VarNoCont,pDoc-
>T_VarCont,C_CASOSxVABLES,pDoc);
else
p_mu = new CMuestra(num_casos,pDoc->T_VarNoCont,pDoc-
>T_VarCont,fil_x_col,pDoc);
return p_mu;
}
else{
Esta función es una de los 4 posibles constructores de la propia clase para crear
un objeto de tipo muestra:
En la que emplearemos nosotros, se indica el número de casos que componen la
muestra, número de atributos continuos, atributos no continuos, tipo de matriz que se
desea generar (acceso a memoria por casos (C_CASOSxVABLE) o por variables
(C_VABLESxCASOS)), y el objeto de tipo CarbolDoc.
Una vez establecidos estos parámetros básicos para la creación de la muestra, la
aplicación ya está preparada para realizar la lectura de los datos.
La función encargada en GureKS de leer el fichero de los datos y almacenarlos
en la estructura es:
int CMuestra::Leer_Fic_Datos(CString nom_fich, BOOL Modificar_Vec_Cat)
Capítulo 5 Material, Desarrollo y Métodos
79
Lee los datos del fichero según el formato y los guarda en la Tabla de Datos
(Tab_Datos). Establece, a su vez, la estructura (m_vMatIdentCasoVD) con los vectores
de identificadores de casos de cada una de las categorías de la VD.
Para no complicar demasiado la función y diferenciar el proceso de lectura de los
datos en KEEL se define una nueva función:
int CMuestra::Leer_Fic_Datos_KEEL(CString nom_fich, BOOL Modificar_Vec_Cat)
Como punto de partida se establecen las estructuras para almacenar los datos
leídos del fichero.
// Traspasar los datos a la Tabla de Datos
// =======================================
CMiArrayGenericoBase<T_Tab_Datos> *p_fila;
CMiArrayGenericoBase<T_Tab_DatosCont> *p_filaCont;
CMiArrayGenericoBase<T_Tab_Datos> *p_fila1;//Para el .names
CMiArrayGenericoBase<T_Tab_DatosCont> *p_filaCont1;
Como los datos en KEEL se encuentran en el mismo fichero que el formato, una
vez abierto éste, es necesario, moverse por el mismo hasta encontrar el token @data a
través de un bucle. Una vez alcanzado este punto comienza la lectura de datos.
Por cada una de las líneas que lo componen, y hasta que no llegue hasta el último
caso indicado por N_Casos, se extraen tantos valores como número de atributos tiene el
fichero. Cada vez que se copia un valor se almacena en la estructura correspondiente:
GureKS distingue entre las estructuras empleadas para guardar los datos
dependiendo de la naturaleza de los mismos.
Estructura CMiArrayGenericoBase<T_Tab_Datos> *p_fila; para datos enteros o
discretos.
Estructura CMiArrayGenericoBase<T_Tab_DatosCont> *p_filaCont; para
almacenar los datos reales.
Para saber de qué tipo es el valor que esperamos leer, se debe consultar el valor
del vector m_vLocalizadorTabDatos[var] para la posición que tiene ese atributo concreto
en el fichero.
Al finalizar el bucle se encuentran los datos almacenados en esas estructuras y se
cierra el fichero de datos.
5.7.2 Generación de ficheros .names y . data
En este momento, la aplicación ya está preparada para leer datos en formato KEEL
y ser capaz de generar las submuestras, pero para generar los árboles a partir de las
Capítulo 5 Material, Desarrollo y Métodos
80
muestras se hace necesario obtener los datos y formato en dos ficheros por separado,
respetando el formato UCI.
Para la generación, poda y test de árboles en Haritza y como bien se describirá en
este mismo capítulo, es necesario que los datos se encuentren en formato .data y el
formato que describen los mismos posea extensión .names.
Simplificando el proceso hay que traducir el fichero .dat en .data para los datos
y en .names para el formato.
Aprovechando que los datos se encuentran almacenados en las estructuras
anteriormente expuestas, únicamente es necesario recorrer estas dos estructuras
respetando el orden en que se encuentran los atributos, es decir, por cada atributo que
compone la muestra, se mira el tipo de datos que contiene mediante el vector
vLocalizadorTabDatos[var], y en función del tipo de atributo se “vuelca” el contenido
bien de la estructura de datos entero y discreto, o bien, de la de los reales a un fichero
nuevo creado con extensión .data.
Una vez finalizado el proceso se cierra el fichero creado y se crea uno nuevo que
tendrá como objetivo, definir el formato que sigue la muestra en formato .names.
Como sucede en el caso de la generación del fichero .data, podemos aprovechar
el trabajo realizado hasta ahora y en vez de releer el fichero original, obtener la
información a partir de las estructuras que se ha definido en la página 75.
Como define el formato de datos UCI la primera línea de un fichero .names la
componen las etiquetas de la clase.
Se accede directamente a la variable que se encuentra en la posición indicada por
pDoc->Ident_VD en el vector de variables y obtenemos las etiquetas accediendo al vector
de etiquetas. Posteriormente se escriben en el fichero.
El siguiente paso es escribir los atributos y el tipo de los mismos. La metodología
empleada es la misma; se accede a través del vector de variables a cada una de las
variables que lo componen menos la última, que ya ha sido tratada como variable
dependiente o clase, se mira el tipo de cada uno de ellas y se distinguen tres variantes,
también en necesario comprobar si se trata de una variable ignorada o no, ya que UCI lo
indica en el fichero .names. Esto se realiza consultando el valor del campo booleano Ign,
que poseen los objetos de tipo CVableF. Junto al nombre del atributo se indica el tipo:
En el caso de ser una variable de tipo entero, se indica mediante la palabra
Discrete 0. De esta manera se interpreta que el número de valores es desconocido.
Para el caso de variables enumeradas, se escriben las etiquetas o posibles valores
enumerados separados por coma y la última acabada en punto.
Para el tercer caso, variables reales se indica mediante continuous.
Capítulo 5 Material, Desarrollo y Métodos
81
Una vez recorrido el vector de variables hasta la penúltima posición del mismo se
da por concluida la generación del .names y se cierra el fichero.
La adaptación de la plataforma al formato de datos KEEL ha llegado a su fin en
este momento.
5.8 Proceso técnico y software empleado
Una vez expuestos y detallados los esfuerzos realizados para adaptar la plataforma
GureKS al formato de bases de datos KEEL, en esta sección se describen las distintas
herramientas o aplicaciones que se emplearán para llevar a cabo la experimentación, su
funcionamiento y el proceso empleado para:
Construir las submuestras a partir de la muestra de entrenamiento mediante
GureKS.
La carga de submuestras, generación del árbol de clasificación, poda y testeo
mediante Haritza.
La generación por cada una de las bases de datos del fichero .aue con las medidas
de bondad del clasificador mediante Kurbak.
Cálculo de medias para las bases de datos del estudio mediante Excel y Visual
Basic Editor.
5.8.1 GureKS
Como se ha descrito en el capítulo referente al algoritmo CTC, éste basa su
fundamento en dos partes diferenciadas, la creación de submuestras y por otro lado, la
construcción del árbol a partir de éstas.
Para la creación de submuestras a partir de la muestra de entrenamiento se hará
uso de la herramienta GureKS.
Introducción y fundamentos
Ya adaptada dicha herramienta para la lectura de bases de datos KEEL, es el
momento de generar las submuestras necesarias para la futura creación del árbol
consolidado.
GureKS es una herramienta diseñada principalmente para generar submuestras a
partir de una muestra dada con la distribución de clases concreta que se desee y mediante
la técnica de remuestreo que se considere más adecuada en la experimentación que se
quiera llevar a cabo.
En estos momentos ofrece la posibilidad de realizar un remuestreo oversampling,
undersampling, y dentro del remuestreo oversampling ofrece técnicas modernas y
Capítulo 5 Material, Desarrollo y Métodos
82
efectivas como son los métodos SMOTE, de los cuales ya se ha hablado anteriormente y
de los que encontramos un estudio en [AMP10].
La apariencia o interfaz gráfica de la herramienta es sencilla y liviana y se
encuentra una ilustración de la misma justo debajo de estas líneas.
Como se desprende de esta ilustración, la herramienta consta de un menú sencillo
y una seria de botones o accesos directos que facilitan la utilización.
Cabe destacar que como sucede con la aplicación Haritza, encontramos dos
posibles formas de ejecución:
Una que se puede calificar como manual, en la que es indispensable la
interacción entre el usuario y aplicación.
La otra que podríamos denominar como la ejecución mediante scripts y
ficheros .bat (ejecutables MS-DOS) que posibilita la ejecución automática de
la experimentación. Esta es la que emplearemos.
Funcionamiento de la aplicación
Para realizar una experimentación de manera
manual, es necesario hacer uso de los menús que ofrece esta
aplicación para cargar las muestras y configurar el resto de
parámetros involucrados en la generación de submuestras.
El menú archivo es empleado para
(véase ilustración 35):
Cargar las muestras: esta acción también se puede realizar pulsando en el
primer botón o icono que se encuentra justo debajo de archivo y que tiene
apariencia de un árbol en una hoja blanca.
Ilustración 34 Menú principal de la herramienta GureKS
Ilustración 35 Opciones del menú archivo de la aplicación GureKS
Capítulo 5 Material, Desarrollo y Métodos
83
Cargar scripts de comandos: estos scripts son una combinación de comandos
que permiten realizar la experimentación de una manera autónoma gracias a
la gramática generadora.
Configurar impresora: cuadro de diálogo común que encontramos en cualquier
aplicación que haga uso de impresora.
El menú utilidades es el núcleo de esta aplicación posibilita (Véase ilustración
36):
La generación de
submuestas a partir de una
muestra.
La generación de fichero
con identificadores de caso.
El resto de menús son el menú
Help y menú Ver, que permite
configurar la apariencia visual de la
aplicación.
El motivo por el que se decide
usar la aplicación mediante scripts y
ficheros ejecutables .bat generados a través del lenguaje VisualBasicScripting, es que
realizar este proceso manualmente puede resultar tedioso además de una pérdida de
tiempo, ya que si por cada base de datos construimos 25 conjuntos de submuestras como
es el caso de este estudio y además esto se realiza por cada una de las 33 bases de datos,
el hecho de tener que hacerlo manualmente resultaría “infernal”.
Automatización del proceso
Con los scripts de comandos, y los ficheros ejecutables MS-DOS, conseguimos
realizar una experimentación completa de una manera desatendida y solo tenemos que
esperar los resultados mientras podemos emplear ese tiempo para seguir preparando el
resto de experimentaciones.
La ejecución automática o desatendida se consigue gracias a los ficheros .bat y
los scripts generados mediante la suite ofimática Excel y su potente herramienta de
programación Visual Basic Scripting, detallada en la sección 5.8.4 Visual Basic Scripting
y Excel, encontramos un ejemplo de estos dos ficheros a continuación.
Ilustración 36 Opciones para la generación de submuestras
Capítulo 5 Material, Desarrollo y Métodos
84
Se observa que mediante el comando cd dos, se sitúa en la carpeta de la base datos
y una vez nos encontramos ahí, mediante el comando I:\v9.exe -s "ecoli
0_vs_11.6.1.SortuScp. GenerarTest.scp" se le pasa como parámetro el script en que se
encentra los comandos que especifican la experimentación.
En el script de la
ilustración 38 se
encuentran los comandos
necesarios para la
creación de 5
submuestras a partir de la
primera muestra de
entrenamiento de la base
de datos ecoli-0_vs-1. El
experimento se detalla
entre los token EXPERIMENTO_COM y EXPERIMENTO_FIN y los parámetros que
definen el tipo de submuestras que se obtendrán vienen entre los token
GENERADOR_SUBMUESTRAS_COM y GENERADOR_SUBMUESTRAS_FIN.
Entre estos encontramos especificado el FICHERO_DATOS, FICHERO
FORMATO (el mismo), el número de submuestras que se desean obtener, con qué
distribución y con qué tipo de reemuestreo, además de indicar que se quiere generar el
fichero de identificadores de caso (.lid).
Proceso llevado a cabo
En esta primera fase del estudio se emplea el GureKS con dos cometidos que se
aprecian gráficamente en las ilustraciones 39 y 40 y que se detallan a continuación:
1. La creación del conjunto de submuestras a partir de una muestra de entrenamiento y
asociado a éstas la generación del fichero .data y .names de la muestra leída.
Ilustración 37 Fichero ejecutable .bat en MS-DOS
Ilustración 38 Script para generación de 25 submuestras de la bd ecoli-0_vs-1
Capítulo 5 Material, Desarrollo y Métodos
85
2. La creación del fichero .data asociado a las muestras de test, el .names no se genera
ya que es común entre las muestras de entrenamiento y las de test.
En la ilustración superior se detalla el proceso de creación de submuestras, se le
pasa como entrada una muestra de entrenamiento en formato KEEL, la aplicación genera
como salida tres ficheros distintos:
1. Fichero .lid o fichero con la lista de identificadores de casos: Es la manera que emplea
GureKS para agrupar los casos de las muestras de entrenamiento en submuestras.
Estos ficheros son archivos de texto con extensión .lid en el que la primera línea
siempre debe ser la ruta completa en donde se encuentra la muestra de entrenamiento
a partir de la cual se ha generado la submuestra. La segunda línea especifica el número
de casos que componen la submuestra y el resto de líneas del fichero es la posición
que toma la instancia de la base de datos seleccionada en la muestra de entrenamiento.
De esta manera, se ahorra espacio
en vez de generar submuestras
con los casos concretos.
A la izquierda se
encuentra un fichero .lid, creado
a partir de una muestra de la base
de datos abalone9-18, en la que la
submuestra la componen 66
Ilustración 40 Fichero .lid para la base de datos abalone9-18
Ilustración 39 Proceso de creación de submuestras de entrenamiento en el GureKS
Capítulo 5 Material, Desarrollo y Métodos
86
casos o instancias de la muestra entrenamiento.
2. Fichero .data: GureKS crea a partir de la muestra en formato KEEL, un fichero con
los datos contenidos en la muestra de entrenamiento pero siguiendo el formato de
datos de la UCI expuesto en la primera parte de este capítulo. Traduce la muestra de
formato KEEL a formato UCI.
3. Fichero .names: Como sucede con el fichero .data, crea a partir de la muestra de
entrenamiento de entrada la cabecera de la muestra siguiendo el formato de datos UCI,
con lo que obtendremos a la salida un fichero .names indicando las clases que
componen la muestra, los atributos y tipo de estos.
En esta última ilustración que encontramos en esta sección se detalla el proceso
que se sigue con las muestras de test.
En este caso, a la salida del GureKS sólo obtenemos un fichero, pero esto no es
del todo cierto, ya que realmente el proceso empleado es similar al de la creación de
submuestras de entrenamiento, con la diferencia de que al finalizar el proceso, se eliminan
de forma automática (mediante comandos MS-DOS) las submuestras generadas (los
ficheros .lid) y el fichero .names asociado.
Como ejemplo para la base de datos ecoli al final del script se añaden estos dos
comandos con este cometido:
Comando_DOS: "del ecoli-0_vs_1-5-1000.lid"
Comando_DOS: "del ecoli-0_vs_1-5-1tst.dat.names"
Ilustración 41 Proceso de creación para las muestras de test en GureKS
Capítulo 5 Material, Desarrollo y Métodos
87
La razón o motivo para ello es que, el objetivo que se persigue con las muestras
de test es solo obtener el fichero .data asociada al .dat leído y que se empleará en la fase
de testeo del árbol en Haritza.
5.8.2 Haritza
Una vez generadas las submuestras a partir de las muestras de entrenamiento y ya
con los bases de datos en formato UCI se dispone de todo lo necesario para la creación,
poda y testeo de los árboles de clasificación consolidados.
Introducción y fundamentos
Esta tarea es trabajo de la herramienta Haritza. Podríamos calificarla como la
encargada de construir los árboles de clasificación, en estos momentos la herramienta está
dotada de capacidad para generar árboles de clasificación de tipo:
CHAID.
CTCHAID.
C4.5.
Los propios de este estudio, el CTC o C4.5 consolidado, CTCC4.5.
Conjuntos de reglas PART.
Estos árboles pueden ser construidos a partir de ficheros de formato de tipo .for o
.names y con ficheros de datos .data o .lid.
Los cometidos de esta herramienta podrían enumerarse en 5 fases:
Carga de las submuestras con las que se crearán los árboles.
Generación del árbol de clasificación a partir de dichas submuestras.
Posible poda del árbol con los datos de la muestra de entrenamiento.
Testeo del árbol con las muestras de test.
Generación del fichero de resultados .app (probabilidad a posteriori).
Capítulo 5 Material, Desarrollo y Métodos
88
Como sucede en el caso del GureKS, Haritza también posee una interfaz sencilla,
intuitiva y liviana, siendo similares si bien ofrece distintas utilidades.
Funcionamiento de la aplicación
A primera vista se aprecia el menú que, como ocurre con el GureKS, es de vital
importancia conocerlo si se desea realizar la experimentación de manera manual.
También se disponen de accesos directos a las opciones que ofrece el menú. Como
elemento distintivo entre las interfaces de las dos herramientas empleadas destacan dos
nuevos botones.
Mediante los botones o accesos directos que se encuentran a la
izquierda, se expanden o contraen los árboles de clasificación.
Ilustración 43 Botones para expandir nodo y contraer nodo
Mediante el menú archivo, como se desprende de la ilustración 44, se puede:
Cargar la muestra. Se debe
seleccionar el tipo de árbol que se desea
crear, el fichero formato de la muestra, de
tipo .for o .names y el fichero que contiene
la muestra que puede ser de tipo lid y data.
Abrir, para cargar en la herramienta
árboles ya generados, son ficheros con
extensión .har
Cargar script de comandos: Estos
scripts son una combinación de comandos que permiten realizar las
operaciones de manera autónoma.
Ilustración 44 Ventana del menú archivo, cargar muestra
Ilustración 42 Apariencia de la aplicación Haritza
Capítulo 5 Material, Desarrollo y Métodos
89
Configurar impresora
El menú Ver y el Help son iguales que GureKS.
El menú utilidades ofrece la posibilidad de desalojar muestras de memoria. Esto
es interesante ya que permite acelerar la experimentación guardando en memoria las
muestras que va leyendo y evitando tener que releerlas de nuevo. En bases de datos muy
voluminosas el tiempo que se ahorra es destacable.
Automatización del proceso
Procediendo de manera análoga al GureKS, a la hora de llevar a cabo
experimentación se ha decidido realizarla de la forma más automatizada posible por los
mismos motivos.
Los archivos .bat necesarios se han creado de una manera similar a la empleada
hasta ahora. En la ilustración 45 se ve el fichero .bat resultante.
Una vez situados en la carpeta de la base de datos, mediante el comando MS-DOS
cd, con: I:\haritza.exe -s "ecoli-0_vs_1ConstruccionCTC45_NS05_CD50_KEEL.scp" se
lanza el experimento, y como sucede en la generación de submuestras se le pasa como
argumento el script que contiene los comandos para crear y operar con los árboles.
Ilustración 45 Fichero ejecutable en MS-DOS para lanzar experimentos en Haritza
Capítulo 5 Material, Desarrollo y Métodos
90
En la ilustración 46 se ven los comandos empleados para la creación de un árbol
de clasificación consolidado de la base de datos ecoli3. El experimento se detalla entre
los token EXPERIMENTO_COM y EXPERIMENTO_FIN. La carga de las submuestras se
realiza entre los TOKEN CARGAR_MUESTRA_COM y CARGAR_MUESTRA_FIN,
seguidamente se encuentra el token CONSTRUIR_ARBOL_CONSOLIDADO_C45_COM, se
indica mediante él el tipo de árbol que se construirá. Para podar el árbol hay que indicar
el nombre del fichero de datos y el nombre que se le dará al árbol podado (.har), ambos
parámetros se encuentran entre los token PODAR_ARBOL_COM y PODAR_ARBOL_FIN. De
manera similar se procede indicar el fichero de testeo y el de creación del resultado.
Proceso llevado a cabo
El proceso que se emplea para realizar la parte de la experimentación
correspondiente a Haritza se detalla de manera visual en la siguiente ilustración.
Ilustración 47 Proceso completo de la creación, poda y test de árboles en Haritza
Ilustración 46 Script para creación del árbol CTC, poda y test
Capítulo 5 Material, Desarrollo y Métodos
91
El proceso de creación del árbol consolidado comienza indicando cuál es el
fichero .lid en el que se encuentran los identificadores de casos y el fichero que define el
formato, de esta manera Haritza carga las submuestas que se emplearán en la creación del
árbol.
Una vez creado el árbol de clasificación emplea la muestra de entrenamiento para
realizar la poda del mismo y guarda el resultado en formato de datos .har, véase
ilustración 48.
Como resultado de todo este proceso Haritza genera
un fichero de salida con extensión .app del que se encuentra
un ejemplo en la ilustración 49. Muestra los resultados
obtenidos en la clasificación de las instancias pertenecientes
a la muestra de test correspondiente.
Los datos se encuentran en 4 columnas para
problemas biclase. En caso de encontrarnos con problemas
multiclase, se dispondrían de (2 + número de clases)
columnas.
Cada línea del fichero representa a uno de los casos
de la muestra de test, por lo tanto tendremos tantas líneas como casos compongan el fichero
de test.
La primera columna es la clase verdadera a la que pertenece el caso.
Las dos siguientes, columna 2 y 3 hacen referencia a las dos clases posibles, y muestran
la probabilidad a posteriori de clasificar el caso como perteneciente a la primera clase,
para la segunda columna o a la
segunda clase en el caso de la
tercera columna. Se define la
probabilidad a posteriori como
la probabilidad que asigna el
clasificador al caso de
pertenecer a esa clase en la que
está.
La última columna es el peso de
la hoja del árbol en la que ha
sido encuadrado el caso, puede
aportar información extra a la
clasificación.
Ilustración 48 Fichero .har expandido
Ilustración 49 Fichero .app resultante del testeo del árbol
Capítulo 5 Material, Desarrollo y Métodos
92
5.8.3 Kurbak
Al finalizar el proceso en Haritza para cada una de las muestras de test, se dispone
de un fichero .app con los resultados de la clasificación de los casos que componen el
conjunto de test, es necesario pues tratar estos resultados y obtener las principales
medidas de bondad de un clasificador.
Introducción y fundamentos
Kurbak es la tercera herramienta que se empleará en esta experimentación. Está
desarrollada en Java por el grupo ALDAPA. A diferencia de las dos aplicaciones vistas
hasta ahora ésta carece de interfaz gráfico y su ejecución se realiza únicamente mediante
MS-DOS.
A simple vista puede parecer una aplicación poco atractiva, pero es realmente útil
pues ofrece distintos modos de funcionamiento reuniendo las utilidades que se pretende
que ofrezca un programa de este tipo.
El objetivo principal es el de calcular las medidas de bondad resultantes de la
clasificación en un árbol. El funcionamiento de esta aplicación es sencillo.
Funcionamiento
En la ilustración anterior se detallan los modos de funcionamiento que soporta. En
función del argumento que se pase en la llamada de la aplicación la salida obtenida es
distinta:
-r para sacar la curva roc.
-p para obtener la curva Precison&Recall.
Ilustración 50 Apariencia de la aplicación Kurbak
Capítulo 5 Material, Desarrollo y Métodos
93
-b y (r o p) para obtener la media de un conjunto de .app’s
-a y (r o rb o ra y numTrozos) para obtener la media pero mediante la
vertical.
-n para indicar el número de casos máximos a tratar del fichero .app.
-u + (r o rb p ra+numTrozos) para obtener la curva AUC y la tasa de error
el fichero de salida.
En la propia llamada se indica el fichero de entrada y el fichero de salida. Indicar
estos dos argumentos es obligatorio.
–f ficheroEntrada
–o ficheroSalida
-i ficheroLectorNum
El fichero de entrada que se indica como argumento tras el parámetro –f debe ser
un fichero .txt como el que se encuentra en la ilustración 51. En él se debe indicar la ruta
completa en la que se encuentra el archivo .app del que queremos calcular las distintas
medidas de bondad
Este fichero se genera mediante VisualBasicScripting. Además del fichero de
entrada, en la zona inferior de la ilustración se encuentra el fichero .app al que hace
referencia, los ficheros .lid que forman las submuestras y los dos archivos generados en
la fase de ejecución de Haritza que son el árbol consolidado sin podar y el podado, ambos
poseen extensión .har.
Kurbak genera un fichero de salida como resultado del proceso, por tanto, es
necesario indicar el nombre después del parámetro –o.
Ilustración 51 Ejemplo de fichero meta con la ruta del app
Capítulo 5 Material, Desarrollo y Métodos
94
El formato del fichero de salida tiene extensión .aue, y muestra los resultados de
la clasificación obtenidos a partir de los ficheros .app. Está organizado en 6 columnas,
una por cada una de las medidas de bondad expuestas en el capítulo 2. Se encuentra un
ejemplo de este fichero en la ilustración inferior.
Automatización del proceso
Para automatizar el proceso es necesario crear dos tipos de ficheros distintos. Se
genera en cada uno de los conjuntos de submuestras un fichero de texto en el que se indica
la ruta en la que se encuentra el fichero .app. El segundo tipo de ficheros son los ya
conocidos .bat, que están formados por los comandos MS-DOS que posibilitan ejecutar
la aplicación mediante línea de comandos.
El fichero ejecutable estaría formado por sentencias de la forma:
REM ##############
REM glass2
REM ##############
REM A priori C45 AUC Pruned
java -jar I:\kurbak.jar -rbu -f I:\Consolidado\Keel\ImbalancedTamMaxSub5\glass2\Submus11\Submus11_METASINPODA.txt -o
I:\Consolidado\Keel\ImbalancedTamMaxSub5\glass2\Submus11\CTC45_Ns05_unpruned
java -jar I:\kurbak.jar -rbu -f I:\Consolidado\Keel\ImbalancedTamMaxSub5\glass2\Submus12\Submus12_METASINPODA.txt -o
I:\Consolidado\Keel\ImbalancedTamMaxSub5\glass2\Submus12\CTC45_Ns05_unpruned
El proceso completo se describe en la ilustración 53. La aplicación Kurbak recibe
como entrada el fichero meta en el que se especifica la localización del fichero .app y
produce como salida el fichero .aue con los resultados.
Ilustración 53 Proceso completo del Kurbak
Ilustración 52 Fichero .aue de salida del Kurbak
Capítulo 5 Material, Desarrollo y Métodos
95
5.8.4 Visual Basic Scripting y Excel
La última herramienta empleada en esta experimentación es la aplicación por
excelencia en cuanto a las hojas de cálculo se refiere: Excel y lenguaje Visual Basic
Scripting.
El lenguaje Visual Basic Scripting o VBScript deriva del lenguaje Visual Basic
creado por Microsoft, al que se podría calificar como el primer lenguaje que permite
desarrollar aplicaciones en la plataforma Windows de una manera más sencilla e intuitiva,
simplificando el proceso mediante un entorno gráfico.
Visual Basic Script es un lenguaje de scripts, como su nombre hace referencia.
Nos da la posibilidad de automatizar procesos y en combinación con el Excel lo convierte
en una herramienta poderosa. Cabe destacar que se basa en el modelo de programación
orientado a objetos.
Preparación de la herramienta.
En las últimas versiones de Office es necesario activar la casilla de programador,
que por defecto viene oculta. Para ello clicamos en:
1. Archivo, opciones, personalizar cuenta de opciones y finalmente, en el cuadro
del lado derecho tenemos un listado, solo hay que dar clic en la opción de
desarrollador.
En la ilustración 54 se aprecia este menú de opciones, con la casilla programador
clicada.
En estos momentos ya está
preparado Excel para poder
programar macros desde cero. Para
acceder a la zona de programación,
dentro de la pestaña desarrollador se
encuentra un acceso directo como el
de la ilustración 55.
Ilustración 54 Menú de configuración de las opciones en Excel 2013
Ilustración 55 Accceso rápido al entrono de trabajo VBScripting
Capítulo 5 Material, Desarrollo y Métodos
96
Proceso de automatización
La metodología o procedimiento empleado para la automatización de las tareas
mediante la herramienta que se acaba de exponer es similar para las 4 variantes en las que
se emplea (GureKS, Haritza, Kurbak y las medias).
En la hoja Excel, véase la ilustración 56, se detallan las bases de datos que
emplearemos en el estudio, en este caso se encuentran en la primera columna de la hoja
a partir de la línea 15. Mediante un bucle se leen todas las bases de datos especificadas,
esto es común para todas las herramientas. El código que posibilita esta tarea es el
siguiente:
For i = 0 To BDKop - 1
Datubasea = Cells(15 + i, 1).Value ' las BD
unitatea = Cells(15 + i, 24).Value ' ordenagailua
Select Case unitatea
Case "Yo"
unitatea2 = "I:"
Case "U004945"
unitatea2 = "I:" '"G:"
Case "U004946"
unitatea2 = "I:" '"H:"
Case "U004947"
unitatea2 = "I:" ' "J:"
Case "U004948"
unitatea2 = "I:" '"K:"
Además se distribuyen las bases de datos entre las máquinas que participarán
en la experimentación, 4 en concreto.
Ilustración 56 Fichero Excel con las bases de datos del estudio
Capítulo 5 Material, Desarrollo y Métodos
97
A continuación se encuentra la distribución concreta de las bases de datos
entre las máquinas del grupo ALDAPA.
Para el caso de GureKS y Haritza se generan dos tipos de ficheros distintos:
Los scripts que emplearemos para la creación de submuestras y la
generación de los árboles.
Para el GureKS del código Visual Basic Scripting empleado,
destaca el encargado de crear el script, el resto del código es trivial y no
posee ningún interés algorítmico:
Para crear el script que genera las submuestras a partir de las
muestras de training y los ficheros .dat y .names:
Print #1, "SCRIPT_COM"
Print #1, "DIRECTORIO_TRABAJO: " + "I:" + PathBaseDB Print #1, "EXPERIMENTO_COM"
Print #1, "Crear_Directorio: Submus" + CStr(r + 1) + CStr(f + 1) + "\"
Print #1, "GENERADOR_SUBMUESTRAS_COM"
Print #1, " FICHERO_DATOS: " + DBSin + "-5-" + CStr(f + 1) + "tra.dat"
Print #1, " FICHERO_FORMATO: " + DBSin + "-5-" + CStr(f + 1) + "tra.dat"
Print #1, " Tipo_generador: Apriori_Cambiado"
Print #1, " GENERAR_LISTA_IDENTS_CASO"
Print #1, " Numero_muestras: 05"
Print #1, " Distribuir_al_Azar: SI"
Print #1, " Porcentaje_clase0: " + stApriori(c)
Print #1, ""
Print #1, " Modo_nombre_fichero: automatico"
Print #1, " nombre_fichero: Submus" + CStr(r + 1) + CStr(f + 1) + "\" + DBSin + "-5-" +
CStr(f + 1) + "*.lid"
Print #1, " num_ficheros: 05"
Capítulo 5 Material, Desarrollo y Métodos
98
Print #1, "GENERADOR_SUBMUESTRAS_FIN"
Print #1, "EXPERIMENTO_FIN"
Print #1, ""
Next c
Next f
Next r
Print #1, "SCRIPT_FIN"
Para crear el script que genera el fichero .dat a partir de las muestras
de test se emplea el siguiente código, destaca que al finalizar se borran los
ficheros .lid creado y el .names, ya que no son necesarios en absoluto en
las muestras de test, sólo se necesita el .data:
Print #1, "EXPERIMENTO_COM"
Print #1, "GENERADOR_SUBMUESTRAS_COM"
Print #1, " FICHERO_DATOS: " + DBSin + "-5-" + CStr(f + 1) + "tst.dat"
Print #1, " FICHERO_FORMATO: " + DBSin + "-5-" + CStr(f + 1) + "tst.dat"
Print #1, " Tipo_generador: Apriori_Cambiado"
Print #1, " GENERAR_LISTA_IDENTS_CASO"
Print #1, " Numero_muestras: 01"
Print #1, " Distribuir_al_Azar: SI"
Print #1, " Porcentaje_clase0: " + stApriori(c)
Print #1, " Modo_nombre_fichero: automatico"
Print #1, " nombre_fichero: " + DBSin + "-5-" + CStr(f + 1) + "*.lid"
Print #1, " num_ficheros: 01"
Print #1, "GENERADOR_SUBMUESTRAS_FIN"
Print #1, "Comando_DOS: " + Chr(34) + "del " + DBSin + "-5-" + CStr(f + 1) + "000.lid" +
Chr(34)
Print #1, "Comando_DOS: " + Chr(34) + "del " + DBSin + "-5-" + CStr(f + 1) + "tst.dat.names" +
Chr(34)
Print #1, "EXPERIMENTO_FIN"
Print #1, ""
Next c
Next f
Print #1, "SCRIPT_FIN"
Para Haritza del código Visual Basic Scripting empleado destaca el encargado
de crear el script, mediante el cual se cargarán muestras, se creará el árbol, se podará,
testeará y se obtendrán los resultados a posteriori:
Print #1, "DIRECTORIO_TRABAJO: " + "I:" + PathBaseDB
Print #1, "EXPERIMENTO_COM"
Print #1, "CARGAR_MUESTRA_COM"
Print #1, "Tipo_Arbol: CTC4.5"
Print #1, " Num_Ficheros: 5"
Print #1, " Fichero_Datos: " + "Submus" + CStr(r + 1) + CStr(f + 1) + "\" + DBSin + "-5-" +
CStr(f + 1) + "*.lid"
Print #1, " Fichero_Formato: " + DBSin + "-5-" + CStr(f + 1) + "tra.dat.names"
Print #1, "CARGAR_MUESTRA_FIN"
Print #1, "CONSTRUIR_ARBOL_CONSOLIDADO_C45_COM"
Print #1, " GUARDAR " + "Submus" + CStr(r + 1) + CStr(f + 1) + "\" +
"CTC45_Ns05_unpruned.har"
Print #1, "CONSTRUIR_ARBOL_CONSOLIDADO_C45_FIN"
Print #1, "PODAR_ARBOL_COM"
Print #1, " Nombre_Fichero: " + "Submus" + CStr(r + 1) + CStr(f + 1) + "\" +
"CTC45_Ns05_pruned.har"
Print #1, " Fichero_Datos: " + DBSin + "-5-" + CStr(f + 1) + "tra.dat.data"
Capítulo 5 Material, Desarrollo y Métodos
99
Print #1, "PODAR_ARBOL_FIN"
Print #1, "TESTEAR_ARBOL_COM"
Print #1, " Modo_nombre_Fichero: unico"
Print #1, " nombre_fichero: " + DBSin + "-5-" + CStr(f + 1) + "tst.dat.data"
Print #1, " num_ficheros: 1"
Print #1, "TESTEAR_ARBOL_FIN"
Print #1, "RESULTADOS_COM"
Print #1, " Nombre_fichero: " + "Submus" + CStr(r + 1) + CStr(f + 1) + "\" +
"CTC45_Ns05_pruned.app"
Print #1, " Tipo_resultado: Probabilidad_aposteriori"
Print #1, "RESULTADOS_FIN"
Print #1, "EXPERIMENTO_FIN"
Print #1, ""
Next r
Print #1, "DESALOJA_MEMORIA_MUESTRAS"
Next f
Print #1, "SCRIPT_FIN"
Los ficheros .bat ejecutables que contienen las instrucciones para la
ejecución de las plataformas en la línea de comandos.
Para generar el fichero .bat que se ejecutará en la máquina U004945.
FitxMeta_Izena = Cells(16, 6).Value 'MetaFitx (.bat)
FitxMeta_Izena = "I:\ejecutablesTamMaxSub5\gureks\U004945\" + "ImbalancedTamMaxSub5" + FitxMeta_Izena +
".bat"
Las instrucciones que formarán el fichero se generan de la siguiente
manera, para cada una de las bases de datos del estudio: Case "U004945"
Print #2, "REM ##############"
Print #2, "REM " + Datubasea
Print #2, "REM ##############"
Print #2, ""
Print #2, "cd " + Chr(34) + "I:" + GehituBestePorzentaia(PathBaseDB) + Chr(34)
FitxMeta_Izena = Cells(16, 6).Value
FitxMeta_Izena = FitxMeta_Izena + ".scp"
Print #2, "I:\v9.exe -s " + Chr(34) + Datubasea + FitxMeta_Izena + Chr(34)
FitxMeta_Izena = unitatea2 + PathBaseDB + Datubasea + FitxMeta_Izena
En el caso del Kurbak también generaremos dos ficheros pero, en este caso
no es un script sino un meta fichero de texto, en el que se indica la ruta en la que se
encuentra el archivo .app a partir del cual se calcularán las medidas de bondad.
Sub MetafitxategiakAPPSortu(DB As String) Dim PathModI As String, FitxApp As String, PathModI2 As String
Dim r As Integer, f As Integer, ap As Integer, i As Integer, m As Integer PathBaseDBI = "I:\Consolidado\Keel\ImbalancedTamMaxSub5\" + DB + "\"
For r = 0 To 4 For f = 0 To 4
' C45 submu
PathModI = PathBaseDBI + "Submus" + CStr(r + 1) + CStr(f + 1) 'PathModI = PathBaseDBI
MetaFitx = PathModI + "\Submus" + CStr(r + 1) + CStr(f + 1) + "_META.txt"
Open MetaFitx For Output As #6
FitxApp = PathModI + "\CTC45_Ns05_pruned.app"
Print #6, FitxApp
Capítulo 5 Material, Desarrollo y Métodos
100
Close #6
Next f Next r
End Sub
Como sucede con GureKS y Haritza aquí también se genera un fichero .bat,
que es el encargado de ejecutar desde la línea de comando el programa Kurbak con los
parámetros correspondientes. Para generar las instrucciones que lo forman se emplea el
siguiente código, que se ejecuta por cada una de las bases de datos.
Print #2, "REM ##############"
Print #2, "REM " + Datubasea
Print #2, "REM ##############"
Print #2, "REM A priori C45 AUC Pruned"
For r = 0 To 4
For f = 0 To 4
FitxDB = PathBaseDBI + "Submus" + CStr(r + 1) + CStr(f + 1)
Print #2, "java -jar I:\kurbak.jar -rbu -f " + FitxDB + "\Submus" + CStr(r + 1) + CStr(f + 1) +
"_META.txt" + " -o " + FitxDB + "\CTC45_Ns05_pruned"
Next f
Next r
Por último se emplea código Visual Basic Scripting para generar automáticamente
las medias y tratar los datos. En cada una de las bases de datos del estudio se generan 3
archivos Excel, en los que se agrupan de dos en dos las 6 medidas de bondad para cada
árbol generado y la media de estos 25 valores.
Sub RellenarResumen(DB As String, i As Integer) Dim pos As Integer
pos = i + 15 Workbooks.Open Filename:="I:\Consolidado\Keel\ImbalancedTamMaxSub5\" + DB + "\AUC_Error_pruned_5run.xls"
Application.Workbooks(1).Worksheets(2).Range("B" + CStr(pos)).Value = ActiveSheet.Range("E4")
Application.Workbooks(1).Worksheets(2).Range("C" + CStr(pos)).Value = ActiveSheet.Range("F4") Application.Workbooks(1).Worksheets(2).Range("E" + CStr(pos)).Value = ActiveSheet.Range("E22")
Application.Workbooks(1).Worksheets(2).Range("F" + CStr(pos)).Value = ActiveSheet.Range("F22")
ActiveWorkbook.Close '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Workbooks.Open Filename:="I:\Consolidado\Keel\ImbalancedTamMaxSub5\" + DB + "\GM_Fvalue_pruned_5run.xls"
Application.Workbooks(1).Worksheets(2).Range("H" + CStr(pos)).Value = ActiveSheet.Range("E4") Application.Workbooks(1).Worksheets(2).Range("I" + CStr(pos)).Value = ActiveSheet.Range("F4")
Application.Workbooks(1).Worksheets(2).Range("K" + CStr(pos)).Value = ActiveSheet.Range("E22")
Application.Workbooks(1).Worksheets(2).Range("L" + CStr(pos)).Value = ActiveSheet.Range("F22") ActiveWorkbook.Close
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Workbooks.Open Filename:="I:\Consolidado\Keel\ImbalancedTamMaxSub5\" + DB + "\Kap_TPR_pruned_5run.xls"
Application.Workbooks(1).Worksheets(2).Range("N" + CStr(pos)).Value = ActiveSheet.Range("E4")
Application.Workbooks(1).Worksheets(2).Range("O" + CStr(pos)).Value = ActiveSheet.Range("F4") Application.Workbooks(1).Worksheets(2).Range("Q" + CStr(pos)).Value = ActiveSheet.Range("E22")
Application.Workbooks(1).Worksheets(2).Range("R" + CStr(pos)).Value = ActiveSheet.Range("F22")
ActiveWorkbook.Close
End Sub
Capítulo 5 Material, Desarrollo y Métodos
101
Se muestra a
continuación el código para
generar el archivo con los
resultados del AUC y el
error, de la misma manera se
procede para crear el archivo
que reúne los resultados del
GM-FValue y TPR-Kappa:
Sub RellenarResumenExcel5RunAUCError(DB As String, stUn_Pruned As String)
Dim Helb_ap_etik As String 'Helburuko aprioriaren etiketa <= Klase minoritarioaren posizioaren araberakoa
Application.DisplayAlerts = False
FitxTmp = "5.0.0.Tmp(Plantilla).xls"
Workbooks.Open Filename:="I:\ejecutablesTamMaxSub5\medias aue\" + FitxTmp
FitxIzenaPl = "I:\ejecutablesTamMaxSub5\medias aue\5.0.2Irizpide_unpruned_5run(Plantilla).xls
' Excel Resultado 5 run
Workbooks.Open Filename:=FitxIzenaPl
FitxIzena1 = "AUC_Error_" + stUn_Pruned + "_5run.xls"
ActiveWorkbook.SaveAs Filename:=PathBaseDBI + FitxIzena1
Sheets("Laburpena").Select
Cells(1, 7).Value = DB
Cells(3, 4).Value = "%C=" + CStr(stApriori(k))
Cells(21, 4).Value = "%C=" + CStr(stApriori(k))
Cells(2, 1) = "AUC"
Cells(19, 1) = "Error"
A partir de estos ficheros y también mediante código, se genera un único archivo
Excel que contiene la media de las 25 ejecuciones para todas las medidas de bondad y
todas las bases de datos.
For met = 0 To 4
For r = 0 To 3
Pathres = "Submus" + CStr(met + 1) + CStr(r + 1) + "\"
TestuFitx = "CTC45_Ns05_pruned" + ".aue"
TestuFitxIzenOsoa = PathBaseDBI + Pathres + TestuFitx
Workbooks.OpenText Filename:=TestuFitxIzenOsoa, Tab:=True, DecimalSeparator:=".",
ThousandsSeparator:=","
Range("A1:F2").Select
Selection.Copy
Windows(FitxTmp).Activate
Cells(1, 1).Select
Selection.PasteSpecial Paste:=xlValues
' AUC
Windows(FitxTmp).Activate
Range("A21").Select
Selection.Copy
Windows(FitxIzena1).Activate
Ilustración 57 Ficheros Excel generados con las medidas de bondad
Capítulo 5 Material, Desarrollo y Métodos
102
Sheets("kb" + CStr(1)).Select
Cells(met + 2, r + 3).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
' Err
Windows(FitxTmp).Activate
Range("B21").Select
Selection.Copy
Windows(FitxIzena1).Activate
Sheets("kb" + CStr(1)).Select
Cells(met + 13, r + 3).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
El último paso es tratar los datos. Se programa mediante Visual Basic la creación
de los test de significancia expuestos en el capítulo 2.
También el código es el encargado de generar los rankings que se emplearán para
la comparación directa, así como funciones capaces de resaltar datos concretos que
puedan resultar interesantes.
Para finalizar esta sección, a modo resumen en la ilustración 58 se encuentran los
distintos tipos de archivos generados mediante código Visual Basic Scripting
correspondiente. (Scripts para GureKS y Haritza, .bat para GureKS, Haritza y Kurbak,
ficheros meta de Kurbak, medias y tratamiento de datos
5.9 Introducción a la experimentación realizada
Se han realizado 2 bloques de experimentos, los dos sobre el mismo conjunto
bases de datos si bien en el último experimento, el conjunto de bases de datos ha sido
preprocesado mediante técnicas SMOTE con el fin de balancear las clases. En el otro
Ilustración 58 Proceso de creación de los scripts y ejecutables necesarios para la experimentación
Capítulo 5 Material, Desarrollo y Métodos
103
bloque se realiza la experimentación con dos tamaños de submuestras distintos,
submuestras al tamaño de la clase minoritaria y submuestras al tamaño máximo y una
distribución al 50% en ambos casos.
La metodología experimental aplicada, es ampliamente conocida. Su principal
característica es que resulta ser lo suficientemente rigurosa y extensa para no poder
achacar los resultados obtenidos al azar.
En los siguientes dos capítulos de esta memoria se describen de manera detallada
cada uno de los experimentos llevados a cabo, describiendo la metodología experimental
utilizada, los distintos valores para los parámetros del algoritmo de construcción de
árboles consolidados, y para finalizar, los resultados obtenidos.
Posteriormente se compararán los resultados obtenidos por el CTC con los
publicados por Fernández et al en [FGLBH10] y se muestran las conclusiones que se
desprenden de ellos.
Cabe destacar que entre los 22 algoritmos del estudio, presumiblemente el CTC
debería obtener mejores o similares resultados que el C4.5, que podría calificarse como
el competidor por excelencia del CTC ya que fue elegido como algoritmo base para la
construcción del algoritmo de construcción de árboles consolidados. Pese a basarse en el
C4.5 conviene destacar que existen varios aspectos en los que difieren ambos algoritmos.
Capítulo 6
Experimentación 1
Análisis del comportamiento del CTC en un contexto de [33
BDS] desbalanceadas y en comparación con 22 algoritmos de
inducción de reglas [(16 evolutivos y 6 clásicos)]
En este capítulo se analiza el comportamiento del algoritmo de construcción de
árboles consolidados, CTC, para las 33 bases de datos (imbalanced) descritas en el
capítulo precedente, y una comparación con los resultados obtenidos por Fernández et
al en [FGLBH10]
Capítulo 6 Experimento 1
106
6.1 Introducción al experimento [1]
Para llevar a cabo esta experimentación, el análisis del comportamiento del CTC
en un contexto de bases de datos desbalanceadas, se han empleado las 33 bases de datos
en la modalidad imbalance descargadas del enlace http://sci2s.ugr.es/keel/index.php. Las
bases de datos en cuestión son : abalone9-18, abalone19, ecoli-0_vs_1, ecoli1, ecoli2,
ecoli3, ecoli4, glass0, glass-0-1-2-3_vs_4-5-6, glass1, glass2, glass4, glass5, glass6,
haberman, iris0, new-thyroid1, new-thyroid2, page-blocks0, pima, segment0, vehicle0,
vehicle1, vehicle2, vehicle3, vowel0, Wisconsin, yeast1, yeast-2_vs_8, yeast3, yeast4,
yeast5, yeast6.
El número de instancias de los conjuntos de datos varían entre 150 y 5.472, el
número de atributos entre 3 y 16, el porcentaje de la clase minoritaria entre 0,77 % y
33,51%. Esto supone 10 casos de la clase minoritaria en la base de datos más
desbalanceada y 560 casos de la clase minoritaria en el conjunto de datos menos
desbalanceado.
6.2 Metodología experimental
Respecto a la metodología empleada para la validación se han realizado 5
validaciones cruzadas de 5 subconjuntos o folds. Para cada subconjunto de la validación
cruzada se ha aplicado la misma técnica de remuestreo generando un número de
submuestras variable y con una distribución de clases al 50%. Esta distribución de clases
empleada deriva de los trabajos del grupo de investigación que concluyen que con esta
distribución se obtienen resultados cerca del óptimo.
El tamaño de las submuestras se ha establecido al número de elementos
pertenecientes a la clase minoritaria del conjunto de entrenamiento, como realizaron
Weiss y Provost en [WP03]. Esto hace que sea posible generar la distribución de
cualquier clase para este tamaño sin replicar ningún elemento o caso.
Para un caso extremo como abalone19, el tamaño de las submuestras sería
únicamente de 26 casos cuando el conjunto de entrenamiento tiene un tamaño de 3.339
casos (80% de todos los casos). Si se emplean únicamente 5 submuestras sólo se
recogerán el 3,89% de los ejemplos de la muestra de entrenamiento, siempre y cuando
todos sean diferentes.
Por este motivo se decide emplear además otro tamaño de submuestras que
denominaremos TamMax, y también variar el número de submuestras.
Por un lado tenemos los dos valores posibles para el tamaño de las submuestras:
El tamaño de la clase minoritaria del conjunto de entrenamiento.
Capítulo 6 Experimento 1
107
Por otro lado el tamaño máximo al que se pueden generar las
submuestras manteniendo una distribución de clases del 50 %, sin
reemplazo, es decir, eliminar el número de casos de la clase
mayoritaria que sobran.
La nomenclatura empleada será TamSizeOfMinClass para referirse a las muestras
de tamaño dado por la clase minoritaria y TamMax para las submuestras al tamaño
máximo. Haremos referencia al número de submuestras mediante N_S.
Se han empleado dos cantidades de submuestras fijo, 5 y 200 submuestras y se ha
variado el número de submuestras al número de muestras necesarias para “envolver” o
garantizar el tamaño de la muestra de entrenamiento a un porcentaje determinado
teniendo en cuenta el tamaño de las submuestras, es decir, tamaño de la clase minoritaria.
Estos porcentajes son 120%, 200%, 400% y finalmente 600%.
En concreto para cada base de datos se han empleado los dos tamaños de muestras,
y el número de submuestras indicado en la Tabla 3.
Teniendo en cuenta los 6 valores que indican el número de submuestras empleados
y los dos tamaños posibles, para cada base de datos se recogen 12 resultados.
En la siguiente ilustración se aprecia el proceso llevado a cabo para generar las
submuestras para cada uno de los tamaños de submuestras a partir de la muestra original.
Por cada base de datos, cada tipo de submuestra (TamMax y
TamSizeOfMinClass) y cada una de las diferentes cantidades de submuestras (5, 200,
120%, 200%, 400% y al 600%) se han construido 25 árboles de clasificación consolidados
(5 x 5 cross validation), lo que genera un total de 300 árboles CT.
Como disponemos de 33 bases de datos para el estudio al final se habrán generado
9900 árboles CT.
Ilustración 59 Proceso de la creación de submuestras para el primer experimento
Capítulo 6 Experimento 1
108
3
En el anexo 1 se puede encontrar los resultados obtenidos para cada una de las 33
bases de datos que forman el estudio. Como se puede apreciar, en el primer anexo se ha
calculado a parte de la media del valor GM empleado en esta experimentación, la media
de las principales medidas de bondad AUC, Error, GM, F-Value, Kappa y TPrate.-
obtenida como resultado de la clasificación de los conjuntos de test en los 25 árboles de
clasificación creados-.
No obstante para realizar la comparación directa con los 22 algoritmos propuestos
en el artículo de Fernández et al únicamente se ha empleado el GM, puesto que éste es el
que se usó y el único disponible.
3 Las siguientes bases de datos representadas en las tablas de este capítulo en rojo han sido incluidas en el estudio sin podar, debido a que en la versión podada los arboles únicamente estaban formados por el nodo raíz: Abalone19, Yeas6, Yeast4, Abalone9Vs18, Glass2, Haberman, Vehicle1 y Vehicle3.
Tabla 3 Tamaño y número de submuestras empleadas para cada una de las bases de datos
Capítulo 6 Experimento 1
109
Una vez finalizada la exposición de la metodología experimental empleada, se
pasa a mostrar los resultados obtenidos en el artículo Genetic based machine learning for
rule induction mediante la Tabla 4, que muestra los resultados obtenidos en función del
GM y a su vez también a través de la Tabla 5, mostrando el ranking de los 11 mejores
algoritmos.
La selección de éstos 11 mejores algoritmos sobre los 22 es resultado de la
selección jerárquica del mejor de cada familia en el caso de los GBML y los 6 clásicos.
Basándonos en la media se aprecia que el algoritmo que mejores resultados
obtiene es el Ripper, después el ObliqueDT y muy seguidamente el algoritmo C4.5Rules.
El C4.5 ocupa la cuarta posición. De los 5 algoritmos que muestran un mejor desempeño
en estas bases de datos desbalanceadas 3 pertenecen al grupo de los algoritmos clásicos
y 2 al conjunto de algoritmos GBML.
#BDs Results GM Test
33
Data-set UCS SIA OCEC Gassist Oblique-DT CART AQ CN2 C45 C45-Rules Ripper
Abalone19 0,00 0,00 61,72 0,00 7,53 0,00 56,64 0,00 0,00 0,00 23,20
Yeast6 75,53 51,47 54,24 0,00 62,80 68,03 55,87 0,00 56,60 73,27 79,99
Yeast5 78,14 77,71 78,04 72,67 80,82 71,45 68,12 41,33 87,51 84,89 87,39
Yeast4 59,96 26,21 58,31 17,16 55,56 10,84 38,39 21,21 41,97 55,08 63,82
Yeast2vs8 56,57 10,00 71,45 62,74 69,05 50,86 53,66 58,08 10,00 28,13 71,89
Glass5 33,97 67,79 88,34 13,97 93,65 93,90 71,86 0,00 88,04 88,04 73,47
Abalone9vs18 41,36 40,17 48,65 40,41 54,11 25,14 19,79 20,78 44,82 47,55 53,37
Glass4 36,12 95,41 69,72 62,51 62,70 76,37 74,23 58,55 55,37 58,22 78,89
Ecoli4 68,73 65,21 76,06 78,02 88,09 77,88 55,98 63,98 82,33 85,51 88,41
Glass2 9,61 19,34 65,99 0,00 32,05 25,08 65,72 0,00 60,08 60,08 36,66
Vowel0 96,68 100,00 62,38 93,60 95,59 84,68 60,06 48,83 96,83 96,83 95,73
Page-blocks0 85,04 86,59 75,14 80,87 90,07 71,04 11,70 59,29 91,95 93,09 93,57
Ecoli3 46,29 61,69 63,29 67,11 67,15 68,12 45,38 56,04 67,38 69,56 80,69
Yeast3 89,46 81,71 90,55 85,25 82,05 80,82 81,17 18,56 85,10 87,23 91,81
Glass6 88,49 90,63 89,15 84,74 82,29 80,89 88,10 81,14 79,42 79,21 84,49
Segment0 98,88 99,44 93,37 98,00 98,41 98,60 92,83 63,88 98,24 98,39 98,82
Ecoli2 50,81 86,90 53,49 87,91 86,47 81,24 55,42 51,73 85,14 86,08 86,18
New-thyroid1 89,55 91,87 83,68 96,21 95,65 94,62 86,56 85,66 90,84 91,78 92,88
New-thyroid2 91,59 90,37 93,51 97,67 93,29 91,18 92,89 85,66 93,53 93,27 92,75
Ecoli1 58,09 73,85 58,72 86,22 81,55 82,91 42,12 55,93 85,38 85,70 91,52
Vehicle0 88,64 80,54 76,49 90,77 90,07 92,28 69,86 29,88 92,90 92,83 90,88
Glass0123vs456 87,07 86,97 85,35 88,57 87,19 91,01 76,51 82,19 91,31 90,98 90,53
Haberman 47,87 52,29 45,26 45,26 59,77 25,44 13,85 23,20 35,63 35,06 55,54
Vehicle1 62,74 57,71 58,95 56,23 66,92 53,63 43,78 30,94 64,70 61,75 71,28
Vehicle2 92,63 85,09 88,41 94,75 94,48 93,52 89,08 49,64 95,57 93,64 95,33
Vehicle3 69,14 53,18 65,12 58,83 65,21 50,07 42,55 39,67 61,37 67,99 71,01
Yeast1 68,76 57,08 41,15 61,23 61,20 53,97 35,03 10,14 62,83 68,96 67,72
Glass0 30,93 77,20 68,40 81,03 74,53 74,60 63,11 21,62 81,36 78,30 76,80
Iris0 98,97 100,00 89,83 99,49 97,89 100,00 92,25 91,73 98,97 98,97 97,89
Pima 69,14 63,17 50,38 65,64 66,94 70,25 14,77 38,62 68,72 68,95 69,66
Ecoli0vs1 20,00 96,90 87,73 97,97 96,90 96,86 87,05 88,50 98,31 98,31 95,82
Wisconsin 96,22 96,61 95,38 95,23 93,21 92,23 85,36 94,84 94,50 94,81 96,38
Glass1 55,40 74,51 50,79 70,07 68,57 73,36 44,10 45,38 71,45 69,35 73,96
Mean 64,92 69,62 70,88 67,58 75,81 69,72 59,81 45,97 73,28 75,21 79,34
Median 68,76 77,20 69,72 78,02 81,55 76,37 60,06 48,83 82,33 84,89 84,49
GBML Classical methods
Results GM Test
GBML Classical methods
UCS SIA OCEC Gassist Oblique-DT CART AQ CN2 C45 C45-Rules Ripper
Rankings 7 6 9 5 3 8 10 11 4 2 1
Tabla 5 Ranking de los 11 algoritmos seleccionados (5 GBML + 6 classical)
Tabla 4 Resultado en función del GM para las 33 imbalanced datasets y los 11 algoritmos seleccionados del artículo
Capítulo 6 Experimento 1
110
Los resultados de los 5 mejores algoritmos si nos basamos en el ranking como
medida de rendimiento, son casi los mismos con la única diferencia del que ocupa la
quinta posición, mientras que basándonos en la media el que ocupa esta posición es el
OCEC. Si miramos el ranking el que consigue la quinta es el Gassist.
6.3 Resultados
Tal y como ya se ha enunciado unas cuantas veces, el objetivo principal de este
trabajo es comparar el CTC con los algoritmos propuestos por Fernández et al en
[FGLBH10] ante bases de datos muy desbalanceadas y de tamaño reducido en los que el
aprendizaje resulta más difícil. Esta comparación se lleva a cabo únicamente desde el
punto de vista de la capacidad de aprendizaje dejando al lado otros posibles puntos de
vista como podrían ser la estabilidad y la complejidad de los clasificadores.
Para medir la capacidad de aprendizaje se ha empleado el valor de la media
geométrica o GM.
Como se ha descrito en la sección metodología experimental, se ha realizado una
extensa experimentación con este fin. La comparación se realiza frente a los 22 algoritmos
(6 métodos clásicos y 12 GBML). Por lo tanto se han evaluado estos 23 algoritmos sobre
las 33 bases de datos del contexto desbalanceado.
Como en el artículo de Fernández et al [FGLBH10] se ha empleado una
metodología jerárquica en la comparación. Primero se analizan las 12 diferentes
estrategias empleadas para construir los árboles consolidados, para después seleccionar
entre ellas las que mejor se adapten al contexto.
En la gráfica que se
encuentra en la ilustración 60 se
aprecia el comportamiento que
ofrece el algoritmo CTC en
función del número de
submuestras y también teniendo
en cuenta el tamaño de las
mismas. Esta gráfica permite
abstraer el comportamiento
global y no fijarnos en ninguna
base de datos concreta, ni tener
en cuenta otras medidas
interesantes como podría ser el
ranking medio de las bases de
datos.
Ilustración 60 Valor del GM en función del número de submuestras y del tamaño de las mismas para el CTC
Capítulo 6 Experimento 1
111
En esta ilustración se aprecia de manera visual la media y mediana de la tasa del
GM obtenidas por las 33 bases de datos. Según puede observarse el tamaño de la
submuestras está directamente relacionado con el desempeño del clasificador. Este factor
tiene más importancia si además el número de submuestras empleado es reducido.
A medida que se amplía el número de submuestras los resultados obtenidos se
equiparan y se aprecia que existe menos diferencia hasta llegar a 200 submuestras en el
que se podría afirmar que obtienen el mismo resultado, tanto para la media, como para la
mediana. La razón que radica en ello es que con un número de submuestras elevado el
coverage o tanto por ciento de los elementos de la case minoritaria que se cubre con el
conjunto de submuestras es del 100% o muy cercano, tanto para tamaños de submuestra
al mínimo, como para tamaños al máximo.
No obstante queda claro que las submuestras creadas al tamaño máximo obtienen
mejores resultados. De la gráfica también se desprende que la mejora más notable se
encuentra al pasar de un número fijo de submuestas que hemos colocado en 5 al número
de submuestras necesario para cubrir el 120%. A medida que aumentamos este factor se
sigue obteniendo mejores resultados en media pero la diferencia no es tan notable, no
podríamos calificarla como lineal.
Tabla 6 Diferencia relativa para submuestras al tamaño TamMax en la izquierda y TamSizeOfMinClass a la derecha
Capítulo 6 Experimento 1
112
En la Tabla anterior se muestra, para cada una de las bases de datos del estudio, la
diferencia relativa que existe entre los resultados obtenidos para un número de
submuestras concreto y los resultados que se obtienen al aumentarlo. En concreto, la
columna etiquetada con el uno representa los resultados obtenidos para una configuración
del CTC con 5 submuestras. La columna dos muestra la ganancia relativa obtenida
aumentar el número de submuestras al 120%, en la columna 3, se muestra la ganancia
obtenida al pasar de 120% a 200%, en la cuarta la producida al pasar de 200% a 400%, la
quinta de 400% 600% y para finalizar en la columna 6 la ganancia alcanzada al pasar de
submuestras al 600% a un número fijo de 200 submuestras.
Como se ha apreciado en la gráfica, el mayor aumento se da para tamaño
TamSizeOfMinClass y al pasar de 5 submuestras al número de submuestras dado por el
120%, alcanzando una mejora del 27%, mientras que para el otro tamaño de submuestras
roza el 6.5% aunque la mediana se mantiene cercana al cero siempre.
La diferencia entre las dos variantes o configuraciones del CTC se encuentra en
que la diferencia relativa entre el número de submuestras es mayor para submuestras
TamSizeOfMinClass. Podría concluirse que es interesante aumentar el número de
submuestras si son generadas con tamaño al mínimo de la clase minoritaria mientras que
pasa a ser algo con menos impacto si las submuestas son generadas al tamaño máximo.
Tabla 7 Número de submuestras óptimo para cada base datos, a la izquierda TamSizeOfMinClass y a la derecha para TamMax
Capítulo 6 Experimento 1
113
Esta conclusión se refrenda en la Tabla 7. En las columnas del uno al seis se
muestra el valor GM para las distintas configuraciones del CTC, 5, al 120%, 200%,
400%, 600% y 200 submuestras respectivamente. La última recoge el número de
submuestras necesarios para obtener el valor óptimo del GM.
Si atendemos al número de submuestras que en cada caso han sido necesarias para
obtener los mejores resultados en el caso de TamSizeOfMinClass, el número de
submuestras aumenta frente al TamSizeOfMinClass, la explicación de esto vuelve a
basarse en el coverage de las muestras.
Con el objetivo de detectar si existen diferencias significativas entre las distintas
variantes en las que se ha probado el CTC, el primer paso es aplicar el test de Friedman,
que es el encargado de detectar si existen diferencias o no.
El siguiente paso es aplicar un test post hoc más poderoso para descubrir sobre
qué par de algoritmos aparecen las diferencias significativas. Como se ha expuesto en el
capítulo 2, se aplicarán los test de Nemenyi y Bonferroni-Dunn. Se muestran los
resultados de ambos test para los 6 números de submuestras empleados en los dos
tamaños de submuestras en los diagramas CD de las ilustraciones 61 para
TamSizeOfMinClass y 62 para TamMax. La línea de la parte inferior del diagrama indica
la máxima diferencia que puede haber entre los rangos medios de dos clasificadores según
el test de Nemenyi para que no haya entre ellos diferencias significativas. Sin entrar en
gran detalle este valor crítico se calcula a través de una fórmula y unas tablas.
En base a las líneas
mostradas para el test de
Nemenyi en el caso de
submuestras al tamaño
TamSizeOfMinClass se aprecia
que existen diferencias
significativas entre N_S=200 y
N_S=5. En el mismo diagrama
puede observarse el resultado del test de Bonferroni-Dunn para el que se ha escogido el
algoritmo CTC en su versión de 5 submuestras como algoritmo de control. Los resultados
son cualitativamente iguales, por lo tanto derivan en las mismas conclusiones. La línea
que une los algoritmos en verde es la línea de Bonferroni-Dunn cuyo valor crítico es de
1,1864.
Para el caso del algoritmo CTC y el conjunto del número de submuestras distinto
empleado para tamaños TamMax mediante el test de Nemenyi, cuyo valor crítico sigue
N_S=200 2,95
N_S 600% 3,29
N_S 400% 3,35
N_S 120% 3,50
N_S 200% 3,58
N_S=5 4,33
Ilustración 61 Diagrama CD para los test de Nemenyi y Bonferroni-Dunn para el algoritmo CTC y tamaño de submuestras TamSizeOfMinClass
N_S5
N_S200N_S120%
N_S200%
N_S400%
N_S600%
1,3126
1,1864
1 2 3 4 5 6Average ranks
Capítulo 6 Experimento 1
114
siendo de 1,3126, se observa que no existen diferencias significativas para ninguna de las
configuraciones. Lo mismo sucede con el test de Bonferroni-Dunn, (como en el caso
anterior se elige al CTC con 5 submuestras como algoritmo de control para concluir que
no existen diferencias significativas). Además, junto a la línea, se muestra el valor de la
distancia crítica para
este test, que es de
1,1864.
Entrando en más detalle, si se tienen en cuenta los resultados para cada base de
datos, véase Tabla 8, se constata que la versión del CTC que mejores resultados obtiene
es con 200 submuestras y tamaño de submuestras TamMax. #BDs Results CTC GM Test
33
Data-set N_S=5 N_S=200
N_S para
cubrir 120%
N_S para
cubrir 200%
N_S para
cubrir 400%
N_S para
cubrir 600% N_S=5 N_S=200
N_S para
cubrir 120%
N_S para
cubrir 200%
N_S para
cubrir 400%
N_S para
cubrir 600%
Abalone19 58,99 44,56 51,03 52,63 43,98 44,44 52,38 45,63 44,44 43,43 39,84 34,87
Yeast6 83,93 82,10 83,03 83,53 83,31 83,98 82,09 83,89 81,43 79,11 81,93 77,10
Yeast5 13,42 86,47 85,29 89,95 88,41 88,16 43,31 88,27 83,53 89,40 87,54 88,56
Yeast4 79,76 77,01 79,47 77,65 76,22 76,52 77,02 71,09 75,82 74,80 70,37 73,45
Yeast2vs8 72,83 72,83 72,83 72,83 72,83 72,83 72,83 72,83 72,83 72,83 72,83 72,83
Glass5 27,60 89,61 43,56 69,75 81,85 76,58 49,84 93,41 79,64 89,69 93,89 94,47
Abalone9vs18 69,62 71,35 70,28 71,29 68,02 70,12 68,78 72,59 69,81 68,49 69,02 68,75
Glass4 16,15 71,97 43,07 42,71 65,40 66,94 47,27 78,10 76,28 67,01 79,13 75,40
Ecoli4 45,80 83,82 73,91 77,09 79,92 82,79 66,49 82,85 83,22 81,45 83,56 83,52
Glass2 57,22 63,15 60,81 60,04 57,72 60,46 65,93 59,14 64,42 62,03 54,44 56,13
Vowel0 90,46 94,02 89,36 91,89 94,36 91,80 93,83 94,44 94,33 95,14 94,12 93,04
Page-blocks0 78,82 82,76 83,19 82,92 83,73 82,66 75,03 80,34 78,74 79,38 80,15 79,98
Ecoli3 51,00 76,98 73,66 70,96 72,64 72,38 69,28 74,83 71,19 73,78 71,92 76,98
Yeast3 88,53 86,16 86,54 85,47 85,59 85,57 87,22 86,00 87,33 85,69 86,46 85,11
Glass6 89,71 83,21 88,04 87,38 86,08 85,18 87,99 84,78 86,65 85,04 85,54 85,02
Segment0 98,07 98,91 98,08 98,61 98,44 98,77 98,59 98,78 98,50 98,75 98,57 98,89
Ecoli2 83,04 85,11 84,67 85,73 83,86 86,30 87,07 85,82 85,50 87,60 87,29 86,67
New-thyroid1 89,22 93,15 94,01 93,95 92,83 92,76 95,71 95,19 95,57 95,58 96,20 96,55
New-thyroid2 93,04 93,00 93,38 93,41 92,32 93,89 94,72 96,33 94,13 94,60 95,52 95,06
Ecoli1 85,69 81,96 85,82 83,48 85,43 84,33 87,57 86,78 84,76 85,54 86,40 86,92
Vehicle0 90,84 92,72 91,11 87,46 91,47 90,95 91,98 92,51 91,72 92,24 92,13 92,20
Glass0123vs456 85,35 85,32 86,97 85,91 86,63 88,03 86,78 85,24 87,05 86,85 85,94 86,28
Haberman 49,46 45,64 47,03 47,28 46,54 47,59 50,40 49,75 49,20 50,28 49,77 49,43
Vehicle1 54,03 56,39 54,41 54,89 55,74 55,84 55,71 56,53 55,51 55,91 56,17 56,22
Vehicle2 77,71 81,14 68,79 77,95 77,67 77,74 78,21 82,16 77,33 80,96 79,17 81,04
Vehicle3 56,50 56,91 55,38 56,32 56,33 56,91 57,06 57,13 56,69 56,99 57,40 56,93
Yeast1 62,97 64,01 64,62 63,34 64,39 63,65 65,32 64,56 65,69 64,84 65,20 65,16
Glass0 75,97 79,27 79,49 79,18 79,96 79,89 80,37 80,03 78,59 79,86 78,57 78,95
Iris0 98,77 98,15 98,56 98,15 98,77 98,56 98,97 98,97 98,97 98,97 98,97 98,97
Pima 68,09 68,68 68,25 68,09 68,34 67,91 69,12 65,51 67,45 67,85 67,71 67,38
Ecoli0vs1 97,60 97,95 96,83 97,46 97,95 97,74 98,16 98,24 98,16 98,16 98,09 98,09
Wisconsin 92,02 92,51 92,52 93,69 92,67 92,33 91,82 91,93 91,93 92,17 91,89 91,93
Glass1 68,13 71,46 69,87 71,13 70,52 69,86 69,62 70,94 70,16 68,15 71,15 70,18
Mean 71,22 79,04 76,18 77,34 78,18 78,29 75,65 79,53 78,68 78,87 79,00 78,85
Median 77,71 82,10 79,49 79,18 81,85 82,66 77,02 82,85 79,64 80,96 81,93 81,04
Rankings 12 5 10 11 9 8 3 1 7 2 4 6
Tam=SizeOfMinClass Tam=Max
Ilustración 62 Diagrama CD para los test de Nemenyi y Bonferroni-Dunn para el algoritmo CTC y tamaño de submuestras Tammax
N_S=200 3,00
N_S 400% 3,41
N_S 200% 3,47
N_S=5 3,52
N_S 600% 3,62
N_S 120% 3,98
Tabla 8 Resultado en función de GM para los 33 imbalanced datasets y los 12 distintas configuraciones del algoritmo CTC
N_S5N_S200 N_S120%
N_S2…
N_S400%
N_S60…
1.3126
1.1864
1 2 3 4 5 6Average ranks
CD Nemenyi
CD Bonferroni-Dunn
Capítulo 6 Experimento 1
115
Para llegar a esta conclusión nos basamos en el ranking, cabe destacar que pese a
ser la opción que mejores resultados obtiene, quizás sea interesante resaltar que la versión
para número de submuestras dado por el valor necesario para cubrir el 200 % y tamaño
TamMax podría resultar mejor, no desde el punto de vista de media, pero si desde el punto
de vista de coste computacional. Ya que obtiene la segunda posición en ranking y el
número medio de submuestras pasa a ser de 200 a 28,48 de media, con su correspondiente
reducción en el coste computacional para construir los árboles. Estos datos se pueden
consultar en la Tabla 3.
Como resultado de todo este análisis se han elegido las dos estrategias
mencionadas en el párrafo anterior, como las dos mejores y más representativas.
Antes de comparar las actitudes de clasificación que poseen estas dos
configuraciones del CTC en el ámbito del desbalanceo de clases frente a los 22
algoritmos, se muestran los resultados en una comparación entre el CTC y el C4.5. El
motivo es que presumiblemente deberían tener un comportamiento similar y podría ser
una buena forma de tener una idea real y concreta del desempeño del CTC.
En la Tabla 9 se
encuentran los rankings de la
comparación entre el CTC y el
C4.5. De verde resalta el ganador
para una base de datos en
concreto, mostrándose los
resultados para las 33 bases de
datos que componen el estudio. Si
bien se muestran los resultados
únicamente del clasificador a
estudio para una configuración de
200 submuestras y tamaño
máximo, el algoritmo obtiene los
mimos resultados en cuanto al
ranking en las distintas
configuraciones en las que se ha
probado el CTC.
Se puede concluir viendo
los resultados que en una
comparación directa con C4.5 de
las 20 bases de datos más
desbalanceadas, por lo tanto las
que suscitan mayor interés en este ámbito del class
imbalance, y que tiene en común que el número
de casos de la clase minoritaria es inferior al 17%, el CTC gana en 17 de ellas
demostrando ser más adecuado para tratar con esta bases de datos.
Results GM Test Rankings
Classical methodsCTC Tam=Max Classical methodsCTC Tam=Max
C45 N_S=200 C45 N_S=200
0,00 45,63 2 1
56,60 83,89 2 1
87,51 88,27 2 1
41,97 71,09 2 1
10,00 72,83 2 1
88,04 93,41 2 1
44,82 72,59 2 1
55,37 78,10 2 1
82,33 82,85 2 1
60,08 59,14 1 2
96,83 94,44 1 2
91,95 80,34 1 2
67,38 74,83 2 1
85,10 86,00 2 1
79,42 84,78 2 1
98,24 98,78 2 1
85,14 85,82 2 1
90,84 95,19 2 1
93,53 96,33 2 1
85,38 86,78 2 1
92,90 92,51 1 2
91,31 85,24 1 2
35,63 49,75 2 1
64,70 56,53 1 2
95,57 82,16 1 2
61,37 57,13 1 2
62,83 64,56 2 1
81,36 80,03 1 2
98,97 98,97 1 2
68,72 65,51 1 2
98,31 98,24 1 2
94,50 91,93 1 2
71,45 70,94 1 2
73,28 79,53 1,58 1,42
82,33 82,85 2,00 1,00
Tabla 9 Resultados medios y de ranking para el CTC con 200 submuestras y TamMax
#BDs
33
Data-set
Abalone19
Yeast6
Yeast5
Yeast4
Yeast2vs8
Glass5
Abalone9vs18
Glass4
Ecoli4
Glass2
Vowel0
Page-blocks0
Ecoli3
Yeast3
Glass6
Segment0
Ecoli2
New-thyroid1
New-thyroid2
Ecoli1
Vehicle0
Glass0123vs456
Haberman
Vehicle1
Vehicle2
Vehicle3
Yeast1
Glass0
Iris0
Pima
Ecoli0vs1
Wisconsin
Glass1
Mean
Median
Capítulo 6 Experimento 1
116
Basándonos en el mismo análisis jerárquico realizado en el trabajo con el que nos
comparamos, se realiza una comparación con el mejor de las 5 familias de GBML y los
6 clásicos.
Los resultados en ranking por cada base de datos así como los rankings globales
para cada uno de los métodos se muestran en la siguiente tabla.
Como se desprende de la tabla, el algoritmo CTC es el segundo mejor algoritmo
después del Ripper y seguido de los que tiene su base en el C4.5, el C4.5 propiamente
dicho y el C4.5 Rules. Llama la atención que es el que mejores resultados obtiene en 5 de
las 7 bases de datos más desbalanceadas, en las que los casos minoritarios no superan el
6 % del total.
Rankings
CTC Tam=Max
UCS SIA OCEC Gassist Oblique-DT CART AQ CN2 C45 C45-Rules Ripper N_S=200
9,00 9,00 1,00 9,00 5,00 9,00 2,00 9,00 9,00 9,00 4,00 3,00
3,00 10,00 9,00 11,50 6,00 5,00 8,00 11,50 7,00 4,00 2,00 1,00
6,00 8,00 7,00 9,00 5,00 10,00 11,00 12,00 2,00 4,00 3,00 1,00
3,00 9,00 4,00 11,00 5,00 12,00 8,00 10,00 7,00 6,00 2,00 1,00
7,00 11,50 3,00 5,00 4,00 9,00 8,00 6,00 11,50 10,00 2,00 1,00
10,00 9,00 4,00 11,00 2,00 1,00 8,00 12,00 5,50 5,50 7,00 3,00
7,00 9,00 4,00 8,00 2,00 10,00 12,00 11,00 6,00 5,00 3,00 1,00
12,00 1,00 6,00 8,00 7,00 4,00 5,00 9,00 11,00 10,00 2,00 3,00
9,00 10,00 8,00 6,00 2,00 7,00 12,00 11,00 5,00 3,00 1,00 4,00
10,00 9,00 1,00 11,50 7,00 8,00 2,00 11,50 3,50 3,50 6,00 5,00
4,00 1,00 10,00 8,00 6,00 9,00 11,00 12,00 2,50 2,50 5,00 7,00
6,00 5,00 9,00 7,00 4,00 10,00 12,00 11,00 3,00 2,00 1,00 8,00
11,00 9,00 8,00 7,00 6,00 4,00 12,00 10,00 5,00 3,00 1,00 2,00
3,00 9,00 2,00 6,00 8,00 11,00 10,00 12,00 7,00 4,00 1,00 5,00
3,00 1,00 2,00 6,00 8,00 10,00 4,00 9,00 11,00 12,00 7,00 5,00
2,00 1,00 10,00 9,00 6,00 5,00 11,00 12,00 8,00 7,00 3,00 4,00
12,00 2,00 10,00 1,00 3,00 8,00 9,00 11,00 7,00 5,00 4,00 6,00
9,00 6,00 12,00 1,00 2,00 4,00 10,00 11,00 8,00 7,00 5,00 3,00
9,00 11,00 4,00 1,00 5,00 10,00 7,00 12,00 3,00 6,00 8,00 2,00
10,00 8,00 9,00 3,00 7,00 6,00 12,00 11,00 5,00 4,00 1,00 2,00
8,00 9,00 10,00 6,00 7,00 4,00 11,00 12,00 1,00 2,00 5,00 3,00
7,00 8,00 9,00 5,00 6,00 2,00 12,00 11,00 1,00 3,00 4,00 10,00
5,00 3,00 7,00 6,00 1,00 10,00 12,00 11,00 8,00 9,00 2,00 4,00
4,00 7,00 6,00 9,00 2,00 10,00 11,00 12,00 3,00 5,00 1,00 8,00
7,00 10,00 9,00 3,00 4,00 6,00 8,00 12,00 1,00 5,00 2,00 11,00
2,00 9,00 5,00 7,00 4,00 10,00 11,00 12,00 6,00 3,00 1,00 8,00
2,00 8,00 10,00 6,00 7,00 9,00 11,00 12,00 5,00 1,00 3,00 4,00
11,00 5,00 9,00 2,00 8,00 7,00 10,00 12,00 1,00 4,00 6,00 3,00
5,00 1,50 12,00 3,00 8,50 1,50 10,00 11,00 5,00 5,00 8,50 7,00
3,00 9,00 10,00 7,00 6,00 1,00 12,00 11,00 5,00 4,00 2,00 8,00
12,00 5,00 10,00 4,00 6,00 7,00 11,00 9,00 1,50 1,50 8,00 3,00
3,00 1,00 4,00 5,00 9,00 10,00 12,00 6,00 8,00 7,00 2,00 11,00
9,00 1,00 10,00 6,00 8,00 3,00 12,00 11,00 4,00 7,00 2,00 5,00
6,76 6,52 7,09 6,30 5,35 7,05 9,61 10,79 5,35 5,12 3,47 4,61
7,00 8,00 8,00 6,00 6,00 8,00 11,00 11,00 5,00 5,00 3,00 4,00
8 7 10 6 5 9 11 12 5 3 1 2
GBML Classical methods
Tabla 10 Los 11 algoritmos seleccionados del estudio en ranking con el CTC en su versión de 200 submuestras y TamMax
#BDs
33
Data-set
Abalone19
Yeast6
Yeast5
Yeast4
Yeast2vs8
Glass5
Abalone9vs18
Glass4
Ecoli4
Glass2
Vowel0
Page-blocks0
Ecoli3
Yeast3
Glass6
Segment0
Ecoli2
New-thyroid1
New-thyroid2
Ecoli1
Vehicle0
Glass0123vs456
Haberman
Vehicle1
Vehicle2
Vehicle3
Yeast1
Glass0
Iris0
Pima
Ecoli0vs1
Wisconsin
Glass1
Mean
Median
Ranking
Capítulo 6 Experimento 1
117
Exactamente lo mismo sucede con el CTC pero en la versión basada en
submuestras TamMax y el número de submuestras al 200%. Sigue obteniendo resultados
competentes teniendo como hándicap un coste computacional inferior que depende en
qué condiciones puede resultar un punto de valor.
Buscando diferencias estadísticamente significativas mediante el test de Ivan
Davenport, el p value es cercano al cero por lo que se decide proceder con un test más
potente como es el test de Shaffer.
Comparando estos resultados con los obtenidos en el estudio de Fernández et al,
las conclusiones no cambian representativamente ya que el Ripper sigue siendo el mejor
algoritmo de todos, con diferencias estadísticamente significativas sobre UCS, SIA,
OCEC y GASSIST pero no se encuentran diferencias significativas con los algoritmos
que poseen su base en los árboles de clasificación como son los algoritmos Oblique DT,
C4.5 y C4.5 rules así como el CTC.
Rankings
CTC Tam=Max
UCS SIA OCEC Gassist Oblique-DT CART AQ CN2 C45 C45-Rules Ripper N_S 200%
9,00 9,00 1,00 9,00 5,00 9,00 2,00 9,00 9,00 9,00 4,00 3,00
3,00 10,00 9,00 11,50 6,00 5,00 8,00 11,50 7,00 4,00 1,00 2,00
6,00 8,00 7,00 9,00 5,00 10,00 11,00 12,00 2,00 4,00 3,00 1,00
3,00 9,00 4,00 11,00 5,00 12,00 8,00 10,00 7,00 6,00 2,00 1,00
7,00 11,50 3,00 5,00 4,00 9,00 8,00 6,00 11,50 10,00 2,00 1,00
10,00 9,00 4,00 11,00 2,00 1,00 8,00 12,00 5,50 5,50 7,00 3,00
7,00 9,00 4,00 8,00 2,00 10,00 12,00 11,00 6,00 5,00 3,00 1,00
12,00 1,00 5,00 8,00 7,00 3,00 4,00 9,00 11,00 10,00 2,00 6,00
9,00 10,00 8,00 6,00 2,00 7,00 12,00 11,00 4,00 3,00 1,00 5,00
10,00 9,00 1,00 11,50 7,00 8,00 2,00 11,50 4,50 4,50 6,00 3,00
4,00 1,00 10,00 8,00 6,00 9,00 11,00 12,00 2,50 2,50 5,00 7,00
6,00 5,00 9,00 7,00 4,00 10,00 12,00 11,00 3,00 2,00 1,00 8,00
11,00 9,00 8,00 7,00 6,00 4,00 12,00 10,00 5,00 3,00 1,00 2,00
3,00 9,00 2,00 6,00 8,00 11,00 10,00 12,00 7,00 4,00 1,00 5,00
3,00 1,00 2,00 6,00 8,00 10,00 4,00 9,00 11,00 12,00 7,00 5,00
2,00 1,00 10,00 9,00 6,00 5,00 11,00 12,00 8,00 7,00 3,00 4,00
12,00 3,00 10,00 1,00 4,00 8,00 9,00 11,00 7,00 6,00 5,00 2,00
9,00 6,00 12,00 1,00 2,00 4,00 10,00 11,00 8,00 7,00 5,00 3,00
9,00 11,00 4,00 1,00 5,00 10,00 7,00 12,00 3,00 6,00 8,00 2,00
10,00 8,00 9,00 2,00 7,00 6,00 12,00 11,00 5,00 3,00 1,00 4,00
8,00 9,00 10,00 6,00 7,00 3,00 11,00 12,00 1,00 2,00 5,00 4,00
7,00 8,00 10,00 5,00 6,00 2,00 12,00 11,00 1,00 3,00 4,00 9,00
5,00 3,00 7,00 6,00 1,00 10,00 12,00 11,00 8,00 9,00 2,00 4,00
4,00 7,00 6,00 8,00 2,00 10,00 11,00 12,00 3,00 5,00 1,00 9,00
7,00 10,00 9,00 3,00 4,00 6,00 8,00 12,00 1,00 5,00 2,00 11,00
2,00 9,00 5,00 7,00 4,00 10,00 11,00 12,00 6,00 3,00 1,00 8,00
2,00 8,00 10,00 6,00 7,00 9,00 11,00 12,00 5,00 1,00 3,00 4,00
11,00 5,00 9,00 2,00 8,00 7,00 10,00 12,00 1,00 4,00 6,00 3,00
5,00 1,50 12,00 3,00 8,50 1,50 10,00 11,00 5,00 5,00 8,50 7,00
3,00 9,00 10,00 8,00 7,00 1,00 12,00 11,00 5,00 4,00 2,00 6,00
12,00 5,00 10,00 4,00 6,00 7,00 11,00 9,00 1,50 1,50 8,00 3,00
3,00 1,00 4,00 5,00 9,00 10,00 12,00 6,00 8,00 7,00 2,00 11,00
9,00 1,00 10,00 5,00 7,00 3,00 12,00 11,00 4,00 6,00 2,00 8,00
6,76 6,55 7,09 6,24 5,38 6,98 9,58 10,79 5,35 5,12 3,47 4,70
7,00 8,00 8,00 6,00 6,00 8,00 11,00 11,00 5,00 5,00 3,00 4,00
8 7 10 6 5 9 11 12 4 3 1 2
GBML Classical methods
Tabla 11 Los 11 algoritmos seleccionados del estudio en ranking con el CTC en su versión de número submuestras al 200% y TamMax
#BDs
33
Data-set
Abalone19
Yeast6
Yeast5
Yeast4
Yeast2vs8
Glass5
Abalone9vs18
Glass4
Ecoli4
Glass2
Vowel0
Page-blocks0
Ecoli3
Yeast3
Glass6
Segment0
Ecoli2
New-thyroid1
New-thyroid2
Ecoli1
Vehicle0
Glass0123vs456
Haberman
Vehicle1
Vehicle2
Vehicle3
Yeast1
Glass0
Iris0
Pima
Ecoli0vs1
Wisconsin
Glass1
Mean
Median
Ranking
Capítulo 7
Experimentación 2
Análisis del comportamiento del CTC en un contexto de [33
BDS] preprocesadas con SMOTE y en comparación con 22 algoritmos
de inducción de reglas [(16 evolutivos y 6 clásicos)]
En este capítulo se muestra el comportamiento del algoritmo de construcción de
árboles consolidados, CTC, para las 33 bases de datos, habiéndoles aplicado
anteriormente la técnica de preprocesamiento SMOTE y una comparación con los
resultados publicados en el artículo de Fernández et al en [FGLBH10].
Capítulo 7 Experimento 2
120
7.1 Introducción al experimento [2]
Como sucede en la experimentación anterior se han empleado las mismas 33 bases
de datos pero esta vez aplicándolas técnicas de preprocesamiento de datos con el fin de
balancear la distribución de clases de la misma, en concreto SMOTE. Pueden ser
descargadas del enlace http://sci2s.ugr.es/keel/index.php. El estudio lo conforman las
siguientes bases de datos: abalone9-18, abalone19, ecoli-0_vs_1, ecoli1, ecoli2, ecoli3,
ecoli4, glass0, glass-0-1-2-3_vs_4-5-6, glass1, glass2, glass4, glass5, glass6, haberman,
iris0, new-thyroid1, new-thyroid2, page-blocks0, pima, segment0, vehicle0, vehicle1,
vehicle2, vehicle3, vowel0, Wisconsin, yeast1, yeast-2_vs_8, yeast3, yeast4, yeast5,
yeast6.
Las técnicas empleadas para esta manipulación de los datos son las expuestas en
la parte referente a la base teórica, en el capítulo 4 y más concretamente la detallada en la
sección referente a oversampling.
7.2 Metodología experimental
Respecto a la metodología empleada para la validación se ha empleado la misma
que en la primera experimentación, es decir, realizar 5 validaciones cruzadas de 5
subconjuntos o folds. Para cada subconjunto de la validación cruzada se ha aplicado la
misma técnica de remuestreo generando un número de submuestras que fijaremos en 5 y
con una distribución de clases al 50%, para mantener la misma que en el experimento
anterior.
En este caso, se ha decidido emplear 3 tamaños de submuestras distintos que se
especifican a continuación.
El primer tamaño se ha establecido al número de elementos pertenecientes a la
clase minoritaria del conjunto de entrenamiento (imbalanced), como realizaron Weiss y
Provost en [WP03]. A partir de ahora haremos referencia a este tamaño mediante
TamSizeOfMinClass, igual que en el experimento 1.
El segundo tamaño viene dado por el número de elementos pertenecientes a la
clase mayoritaria del conjunto de entrenamiento. En este experimento coincide con la
minoritaria porque ambas clases están balanceadas con SMOTE. La nomenclatura
empleada será TamSizeOfMajClass para referirnos a este tipo de muestras.
El tercer tamaño de submuesta que se empleará es TamMax (imbalanced),
empleado en el experimento anterior.
Capítulo 7 Experimento 2
121
En lo referente al número de muestras se ha empleado un número de muestras
fijo, 5 para ser exactos. Puede sorprender a priori que no se haya variado el número de
submuestras como en el experimento 1, la razón es
que es un análisis preliminar por considerar que con el
experimento anterior ya se han cumplido los objetivos
del proyecto.
En la siguiente tabla se encuentran detallados
los tamaños que toman las submuestras de cada base
de datos del estudio para las tres variantes.
Para cada base de datos y cada uno de los
tamaños de la submuestras (TamMax,
TamSizeOfMajClass y TamSizeOfMinClass) se han
construido 25 árboles de clasificación consolidados (5
x 5 cross validation), lo que genera un total de 75
árboles CT.
Como disponemos de 33 bases de datos para el
estudio al final se habrán generado 2475 árboles CT.
Como sucede con el experimento de las bases
de datos imbalanced, en el primer anexo al finalizar
las tablas del mismo, se encuentran los resultados
obtenidos para las bases de datos en la modalidad
SMOTE.
En la ilustración 63, se muestra el proceso
llevado a cabo para generar las submuestras a partir de
la muestra original.
Ilustración 63 Proceso llevado a cabo para la generación de submuestras en las bases de datos SMOTE
Tabla 12 Tamaño de submuestras empleadas para cada una de las bases de datos SMOTE
#BDs
33
Data-set
SizeOf
MajClass TamMax
TamSize
OfMinClass
Abalone19 3314 52 26
Yeast6 1158 60 30
Yeast5 1153 71 36
Yeast4 1147 82 41
Yeast2vs8 370 33 17
Glass5 165 15 8
Abalone9vs18 552 67 34
Glass4 161 21 11
Ecoli4 251 37 19
Glass2 157 31 16
Vowel0 720 143 72
Page-blocks0 3930 896 448
Ecoli3 240 59 30
Yeast3 1057 261 131
Glass6 149 47 24
Segment0 1584 527 264
Ecoli2 228 84 42
New-thyroid1 144 57 29
New-thyroid2 143 59 30
Ecoli1 208 124 62
Vehicle0 517 320 160
Glass0123vs456 131 82 41
Haberman 178 135 68
Vehicle1 485 385 193
Vehicle2 485 385 193
Vehicle3 485 385 193
Yeast1 844 687 344
Glass0 116 112 56
Iris0 81 80 40
Pima 401 429 215
Ecoli0vs1 115 124 62
Wisconsin 356 383 192
Glass1 111 122 61
Mean 640,48 192,58 96,61
Median 356,00 84,00 42,00
Capítulo 7 Experimento 2
122
Una vez finalizada la exposición de la metodología experimental empleada, se
encuentran los resultados obtenidos en el artículo Genetic based machine learning for
rule induction en la tabla inferior, para las bases de datos en función del GM y a su vez
el ranking de los 11 algoritmos, los 5 mejores de cada una de las familias GBML y los 6
clásicos, a destacar, que esta vez los representantes de GBML no son los mismos que en
el experimento 1.
Observando la media a primera vista se observa que los resultados obtenidos para
las bases de datos SMOTE son diferentes a las bases de datos imbalanced, ya que en
rasgos generales los basados en GBML obtienen mejores resultados en global que los
métodos clásicos.
#BDs Results GM Test
33
Data-set Tam %Min
SizeOf
MinClass XCS SIA CORE Gassist DT-GA CART AQ CN2 C45 C45-Rules Ripper
Abalone19 4174 0,77 32,14 67,08 23,35 67,01 48,18 15,58 0,00 18,26 55,41 8,00 7,99 38,80
Yeast6 1484 2,49 36,95 87,04 83,10 77,62 80,81 80,57 68,03 42,71 60,22 84,18 80,31 73,25
Yeast5 1484 2,96 43,93 96,40 94,79 93,70 95,58 90,93 71,45 34,16 68,16 95,06 95,07 84,71
Yeast4 1484 3,43 50,90 80,56 72,36 80,57 76,72 66,66 10,84 28,71 22,59 73,39 75,83 65,67
Yeast2vs8 482 4,15 20,00 68,61 70,61 72,11 76,77 81,01 50,86 41,69 69,44 82,33 74,18 58,75
Glass5 214 4,2 8,99 91,98 91,39 86,63 91,47 86,78 93,90 90,61 71,89 91,40 91,14 77,77
Abalone9vs18 731 5,65 41,30 69,27 69,18 69,45 70,24 52,79 25,14 7,08 49,71 63,19 66,46 73,80
Glass4 214 6,07 12,99 83,20 87,44 60,98 68,92 87,50 76,37 71,09 76,96 72,13 68,00 68,94
Ecoli4 336 6,74 22,65 90,65 90,70 90,56 86,35 74,55 77,88 55,61 74,59 86,48 84,28 82,39
Glass2 214 8,78 18,79 64,09 68,23 60,78 54,69 51,36 25,08 62,66 65,12 64,04 68,04 62,33
Vowel0 988 9,01 89,02 99,44 99,94 79,89 96,45 93,72 84,68 55,36 49,86 94,69 96,59 97,47
Page-blocks0 5472 10,23 559,79 94,46 92,24 73,41 88,87 94,86 71,04 0,64 73,43 94,51 94,55 94,36
Ecoli3 336 10,88 36,56 83,79 84,43 82,86 83,08 81,43 68,12 39,98 19,99 85,78 81,83 87,16
Yeast3 1484 10,98 162,94 91,84 87,16 86,84 92,03 88,77 80,82 75,14 76,40 92,26 93,55 88,26
Glass6 214 13,55 29,00 86,88 87,11 88,46 89,46 89,02 80,89 60,39 86,59 92,62 89,58 94,95
Segment0 2308 14,26 329,12 98,62 99,19 73,04 98,98 99,11 98,60 91,96 78,02 99,54 98,91 99,14
Ecoli2 336 15,48 52,01 89,29 91,00 87,39 89,77 87,25 81,24 51,91 49,77 89,08 88,64 84,06
New-thyroid1 215 16,28 35,00 97,41 98,30 93,46 94,84 96,06 94,62 83,25 85,35 93,39 94,85 94,34
New-thyroid2 215 16,89 36,31 96,57 98,60 89,60 95,72 96,49 91,18 83,27 86,12 95,93 97,70 97,11
Ecoli1 336 22,92 77,01 89,04 84,38 89,44 85,25 90,01 82,91 40,79 42,14 88,26 88,26 85,09
Vehicle0 846 23,64 199,99 93,99 84,52 75,47 94,42 90,86 92,28 75,29 76,30 92,62 92,25 93,52
Glass0123vs456 214 23,83 51,00 89,48 93,48 86,03 93,13 92,35 91,01 55,14 80,57 90,05 87,11 85,53
Haberman 306 27,42 83,91 56,47 50,86 65,93 60,69 61,59 47,07 2,98 39,58 64,03 66,90 34,78
Vehicle1 846 28,37 240,01 74,04 64,71 62,71 76,28 67,85 53,63 41,24 52,38 71,90 72,13 66,52
Vehicle2 846 28,37 240,01 96,88 77,41 39,73 95,24 94,29 93,52 71,49 68,12 95,79 95,46 96,70
Vehicle3 846 28,37 240,01 74,18 66,66 19,55 73,67 66,85 50,07 35,35 56,74 72,62 69,18 64,85
Yeast1 1484 28,91 429,02 69,74 63,95 65,85 72,73 70,76 53,97 24,93 27,93 72,23 69,94 67,92
Glass0 214 32,71 70,00 81,30 83,92 69,70 84,27 77,90 74,60 58,84 72,23 79,02 75,76 79,52
Iris0 150 33,33 50,00 100,00 99,49 100,00 100,00 98,97 100,00 95,34 94,34 98,97 98,97 97,89
Pima 768 34,84 267,57 70,27 67,08 70,36 73,98 70,97 75,96 8,78 47,90 72,92 70,47 69,44
Ecoli0vs1 220 35 77,00 97,63 95,15 97,97 97,94 98,31 96,86 86,65 86,65 97,24 97,58 95,13
Wisconsin 683 35 239,05 96,73 96,05 94,72 95,10 94,80 92,23 94,55 93,98 96,19 95,58 94,41
Glass1 214 35,51 75,99 75,53 82,33 62,43 80,07 70,03 73,36 47,25 40,77 70,49 72,04 68,37
Mean 919,94 17,61 119,97 84,92 81,79 76,19 83,69 80,61 70,55 52,52 63,61 82,43 81,79 79,48
Median 482,00 15,48 52,01 89,04 84,52 77,62 86,35 87,25 76,37 55,14 68,16 88,26 87,11 84,06
GBML Classical methods
Tabla 13 Resultado en función de GM para los 33 imbalanced datasets y los 11 algoritmos seleccionados del artículo
Capítulo 7 Experimento 2
123
Si nos centramos únicamente en los 5 mejores, 3 pertenecen a los denominados
GMBL. Con el XCS y Gassist siendo los dos mejores, seguidamente se sitúa el C4.5 (que
es el mejor colocado de los clásicos) y después SIA y C4.5 Rules con l con los mismos
resultados.
Si utilizamos como parámetro de medición el ranking en vez de la media, se
corroboran los mismos resultados ya que en el caso de los 5 mejores algoritmos mantiene
el orden.
7.3 Resultados
Se ha realizado una experimentación menos robusta que la anterior con el fin de
comparar el desempeño del CTC con los resultados de los 22 algoritmos (6 métodos
clásicos y 12 GBML) y obtener una primera idea del comportamiento del CTC para las
bases de datos SMOTE. Concretamente se desea estudiar el efecto del tamaño de las
submuestras en los resultados dejando a un lado el número de submuestras óptimos para
futuros trabajos. Por lo tanto se han evaluado estos 23 algoritmos sobre las 33 bases de
datos SMOTE.
Esta comparación, como la realizada en el capítulo anterior, únicamente es desde
el punto de vista de la capacidad de aprendizaje dejando al lado otros posibles puntos de
vista.
Igualmente para medir la capacidad de aprendizaje se ha empleado el valor de la
media geométrica o GM.
Se ha empleado la misma metodología jerárquica en la comparación empleada
hasta ahora. Se comienza con el análisis de las 3 diferentes estrategias empleadas para
construir los árboles consolidados -variando el tamaño de la submuestra- , para después
seleccionar entre ellas la que mejor se comporta.
En la Tabla 15 se encuentran los resultados obtenidos para todas las bases de datos
que componen el estudio y los 3 tamaños de submuestras expuestos en la metodología
experimental.
En la parte derecha de la misma tabla se muestra el ranking medio de las 3
variantes del CTC probadas contra los resultados obtenidos por el C4.5, su principal
competidor.
Results GM Test
XCS SIA CORE Gassist DT-GA CART AQ CN2 C45 C45-Rules Ripper
Mean 3,41 4,55 6,74 3,80 5,33 7,74 10,02 9,20 4,23 4,77 6,21
Median 3,00 5,00 7,00 3,00 5,00 9,00 11,00 10,00 4,00 4,50 7,00
Ranking 1 4 8 2 6 9 11 10 3 5 7
GBML Classical methods
Tabla 14 Rankinsg de los 11 algoritmos seleccionados (5 GBLM + 6 classical)
Capítulo 7 Experimento 2
124
Si nos fijamos en los resultados arrojados por el ranking dos de las tres
configuraciones probadas del CTC obtienen mejor ranking medio que el C4.5. Los
mejores resultados se han logrado empleado el tamaño TamMax. Por el contrario los
peores han sido con tamaños de submuestras al TamSizeOfMinClass.
Tabla 15 Resultado en función de GM para los 33 imbalanced datasets y las 3 distintas configuraciones del algoritmo CTC
Con el objetivo de detectar si existen diferencias significativas entre las distintas
variantes en las que se ha probado el CTC se aplica el test de Ivan Davenport. Se muestran
los resultados para el test de Nenemyi y Bonferroni-Dunn para detectar, en caso de que
existan diferencias significativas, entre qué casos se dan.
De la ilustración 64 se desprende que en base a las líneas mostradas para el test
de Nemenyi que no existen diferencias significativas entre las tres configuraciones del
CTC. En la parte inferior de la imagen se muestra el valor de la distancia crítica, que en
este caso es de 0,5768.
En cuanto al test de Bonferroni-Dunn tampoco existen diferencias significativas,
ya que no encontramos ningún algoritmo fuera de la línea. Junto a la línea se encuentra
la leyenda que muestra la distancia crítica, 0,5517.
#BDs Results GM Test Rankings
33 Classical methodsTam=Size
OfMajClass
Tam=Size
OfMinClass
Tam=M
ax
Classical methodsTam=Size
OfMajClass
Tam=Size
OfMinClass
Tam=M
ax
Data-set Tam %Min
SizeOf
MinClass C45 N_S=5 N_S=5 N_S=5 C45 N_S=5 N_S=5 N_S=5
Abalone19 4174 0,77 32,14 8,00 9,46 58,81 61,07 4 3 2 1
Yeast6 1484 2,49 36,95 84,18 57,93 65,83 65,87 1 4 3 2
Yeast5 1484 2,96 43,93 95,06 97,08 97,59 97,32 4 3 1 2
Yeast4 1484 3,43 50,90 73,39 86,88 88,14 88,12 4 3 1 2
Yeast2vs8 482 4,15 20,00 82,33 86,28 85,33 85,10 4 1 2 3
Glass5 214 4,2 8,99 91,40 82,38 85,21 86,81 1 4 3 2
Abalone9vs18 731 5,65 41,30 63,19 84,16 87,76 83,91 4 2 1 3
Glass4 214 6,07 12,99 72,13 77,63 76,97 81,68 4 2 3 1
Ecoli4 336 6,74 22,65 86,48 89,88 88,59 88,94 4 1 3 2
Glass2 214 8,78 18,79 64,04 70,62 69,95 71,78 4 2 3 1
Vowel0 988 9,01 89,02 94,69 61,56 54,03 57,07 1 2 4 3
Page-blocks0 5472 10,23 559,79 94,51 81,11 79,60 83,59 1 3 4 2
Ecoli3 336 10,88 36,56 85,78 75,82 92,67 87,35 3 4 1 2
Yeast3 1484 10,98 162,94 92,26 87,44 89,15 88,97 1 4 2 3
Glass6 214 13,55 29,00 92,62 61,11 17,28 45,92 1 2 4 3
Segment0 2308 14,26 329,12 99,54 98,77 98,36 98,36 1 2 3,5 3,5
Ecoli2 336 15,48 52,01 89,08 96,89 91,85 93,96 4 1 3 2
New-thyroid1 215 16,28 35,00 93,39 94,69 92,66 93,57 3 1 4 2
New-thyroid2 215 16,89 36,31 95,93 88,99 87,17 90,01 1 3 4 2
Ecoli1 336 22,92 77,01 88,26 70,33 72,10 69,82 1 3 2 4
Vehicle0 846 23,64 199,99 92,62 99,10 98,31 98,77 4 1 3 2
Glass0123vs456 214 23,83 51,00 90,05 91,81 91,15 91,85 4 2 3 1
Haberman 306 27,42 83,91 64,03 21,27 2,81 19,56 1 2 4 3
Vehicle1 846 28,37 240,01 71,90 84,02 83,09 83,73 4 1 3 2
Vehicle2 846 28,37 240,01 95,79 19,73 2,58 23,63 1 3 4 2
Vehicle3 846 28,37 240,01 72,62 94,92 93,05 94,28 4 1 3 2
Yeast1 1484 28,91 429,02 72,23 94,19 93,65 94,30 4 2 3 1
Glass0 214 32,71 70,00 79,02 69,54 70,00 69,54 1 4 2 3
Iris0 150 33,33 50,00 98,97 78,99 72,87 75,46 1 2 4 3
Pima 768 34,84 267,57 72,92 89,86 92,31 91,99 4 3 1 2
Ecoli0vs1 220 35 77,00 97,24 66,18 82,44 79,02 1 4 2 3
Wisconsin 683 35 239,05 96,19 91,29 95,20 95,08 1 4 2 3
Glass1 214 35,51 75,99 70,49 75,25 87,53 83,68 4 3 1 2
Mean 919,94 17,61 119,97 82,43 76,82 77,09 79,40 2,58 2,48 2,68 2,26
Median 482,00 15,48 52,01 88,26 84,02 87,17 85,10 3,00 2,00 3,00 2,00
3 2 4 1
Capítulo 7 Experimento 2
125
.
Si nos centramos en una comparación
en rankings medios entre el C4.5 y la mejor
estrategia probada del CTC, se ve que de las 19
bases de datos más desbalanceadas, el CTC
gana en 11 de ellas, si nos centramos en los
casos más extremos, como podían ser las
primeras 10 bases de datos con un desbalanceo
de datos al 9%, la diferencia es mayor ya que
el CTC supera el C4.5 en 8 de ellas.
Como resultado de todo este análisis se
ha elegido CTC con TamMax como la mejor y
más representativa estrategia. Ahora es
momento se comparar las actitudes de
clasificación que posee esta configuración en
el ámbito del desbalanceo de clases frente a los
22 algoritmos.
Basándonos en el mismo análisis
jerárquico realizado en el trabajo con el que
nos comparamos, se emplea el mismo método
de búsqueda en cada una de las familias, así
seleccionamos los 11 mejores algoritmos en
función de los resultados del artículo de
Fernández et al, con los que compararemos el
CTC. El resultado de esta comparación se
encuentra en la ilustración que se
sitúa en la página siguiente.
Ilustración 64 Diagrama CD para los test de Nemenyi y Bonferroni-Dunn para el algoritmo CTC en sus 3 tamaños de submuestra
Results GM Test Rankings
Tam=Size
OfMinClass
Tam=M
ax
Classical methodsTam=Size
OfMajClass
Classical methodsTam=Size
OfMajClass
C45 N_S=5 C45 N_S=5
8,00 61,07 2 1
84,18 65,87 1 2
95,06 97,32 2 1
73,39 88,12 2 1
82,33 85,10 2 1
91,40 86,81 1 2
63,19 83,91 2 1
72,13 81,68 2 1
86,48 88,94 2 1
64,04 71,78 2 1
94,69 57,07 1 2
94,51 83,59 1 2
85,78 87,35 2 1
92,26 88,97 1 2
92,62 45,92 1 2
99,54 98,36 1 2
89,08 93,96 2 1
93,39 93,57 2 1
95,93 90,01 1 2
88,26 69,82 1 2
92,62 98,77 2 1
90,05 91,85 2 1
64,03 19,56 1 2
71,90 83,73 2 1
95,79 23,63 1 2
72,62 94,28 2 1
72,23 94,30 2 1
79,02 69,54 1 2
98,97 75,46 1 2
72,92 91,99 2 1
97,24 79,02 1 2
96,19 95,08 1 2
70,49 83,68 2 1
82,43 79,40 1,55 1,45
88,26 85,10 2,00 1,00
Tabla 16 Resultados medios y de ranking para el CTC y TamMax
TamSizeOfMaj…
TamSizeOfM…
TamMax
0,5768
0,5517
0,6
0,8
1
1,2
0,00 0,50 1,00 1,50 2,00 2,50
CD NemenyiCD Bonferroni-…
TamMax 1,80
TamSizeOfMajClass 2,00
TamSizeOfMinClass 2,20
#BDs
33
Data-set
Abalone19
Yeast6
Yeast5
Yeast4
Yeast2vs8
Glass5
Abalone9vs18
Glass4
Ecoli4
Glass2
Vowel0
Page-blocks0
Ecoli3
Yeast3
Glass6
Segment0
Ecoli2
New-thyroid1
New-thyroid2
Ecoli1
Vehicle0
Glass0123vs456
Haberman
Vehicle1
Vehicle2
Vehicle3
Yeast1
Glass0
Iris0
Pima
Ecoli0vs1
Wisconsin
Glass1
Mean
Median
Capítulo 7 Experimento 2
126
Si nos basamos en la media como medida de rendimiento se aprecia que el CTC
se encuentra próximo, sin llegar a alcanzar los resultados obtenidos por el C4.5 y el C4.5
rules pero que de los métodos propuestos bajo la denominación de GBML sólo es capaz
de ganar al CORE.
Si por el contrario miramos los rankings a pesar de obtener peor media que la
mayoría del resto de los clasificadores en ranking medio se sitúa en la zona media ya que
obtiene la posición 6 de 12.
Es de esperar que aumentando el número de submuestras los resultados mejoren
considerablemente como se ha demostrado en la primera experimentación para las bases
de datos imbalanced.
Queda pendiente realizar pruebas más exhaustivas pero se escapan a los objetivos
que busca este proyecto, que es tomar una primera toma de contacto con la finalidad de
ver el efecto del tamaño de las submuestras en el rendimiento del CTC.
#BDs Results GM Test
33 Tam
=SMOTE
-Max
GBML Classical methods
Data-set Tam %Min
SizeOf
MinClass XCS SIA CORE Gassist DT-GA CART AQ CN2 C45 C45-Rules Ripper N_S=5
Abalone19 4174 0,77 32,14 67,08 23,35 67,01 48,18 15,58 0,00 18,26 55,41 8,00 7,99 38,80 61,07
Yeast6 1484 2,49 36,95 87,04 83,10 77,62 80,81 80,57 68,03 42,71 60,22 84,18 80,31 73,25 65,87
Yeast5 1484 2,96 43,93 96,40 94,79 93,70 95,58 90,93 71,45 34,16 68,16 95,06 95,07 84,71 97,32
Yeast4 1484 3,43 50,90 80,56 72,36 80,57 76,72 66,66 10,84 28,71 22,59 73,39 75,83 65,67 88,12
Yeast2vs8 482 4,15 20,00 68,61 70,61 72,11 76,77 81,01 50,86 41,69 69,44 82,33 74,18 58,75 85,10
Glass5 214 4,2 8,99 91,98 91,39 86,63 91,47 86,78 93,90 90,61 71,89 91,40 91,14 77,77 86,81
Abalone9vs18 731 5,65 41,30 69,27 69,18 69,45 70,24 52,79 25,14 7,08 49,71 63,19 66,46 73,80 83,91
Glass4 214 6,07 12,99 83,20 87,44 60,98 68,92 87,50 76,37 71,09 76,96 72,13 68,00 68,94 81,68
Ecoli4 336 6,74 22,65 90,65 90,70 90,56 86,35 74,55 77,88 55,61 74,59 86,48 84,28 82,39 88,94
Glass2 214 8,78 18,79 64,09 68,23 60,78 54,69 51,36 25,08 62,66 65,12 64,04 68,04 62,33 71,78
Vowel0 988 9,01 89,02 99,44 99,94 79,89 96,45 93,72 84,68 55,36 49,86 94,69 96,59 97,47 57,07
Page-blocks0 5472 10,23 559,79 94,46 92,24 73,41 88,87 94,86 71,04 0,64 73,43 94,51 94,55 94,36 83,59
Ecoli3 336 10,88 36,56 83,79 84,43 82,86 83,08 81,43 68,12 39,98 19,99 85,78 81,83 87,16 87,35
Yeast3 1484 10,98 162,94 91,84 87,16 86,84 92,03 88,77 80,82 75,14 76,40 92,26 93,55 88,26 88,97
Glass6 214 13,55 29,00 86,88 87,11 88,46 89,46 89,02 80,89 60,39 86,59 92,62 89,58 94,95 45,92
Segment0 2308 14,26 329,12 98,62 99,19 73,04 98,98 99,11 98,60 91,96 78,02 99,54 98,91 99,14 98,36
Ecoli2 336 15,48 52,01 89,29 91,00 87,39 89,77 87,25 81,24 51,91 49,77 89,08 88,64 84,06 93,96
New-thyroid1 215 16,28 35,00 97,41 98,30 93,46 94,84 96,06 94,62 83,25 85,35 93,39 94,85 94,34 93,57
New-thyroid2 215 16,89 36,31 96,57 98,60 89,60 95,72 96,49 91,18 83,27 86,12 95,93 97,70 97,11 90,01
Ecoli1 336 22,92 77,01 89,04 84,38 89,44 85,25 90,01 82,91 40,79 42,14 88,26 88,26 85,09 69,82
Vehicle0 846 23,64 199,99 93,99 84,52 75,47 94,42 90,86 92,28 75,29 76,30 92,62 92,25 93,52 98,77
Glass0123vs456 214 23,83 51,00 89,48 93,48 86,03 93,13 92,35 91,01 55,14 80,57 90,05 87,11 85,53 91,85
Haberman 306 27,42 83,91 56,47 50,86 65,93 60,69 61,59 47,07 2,98 39,58 64,03 66,90 34,78 19,56
Vehicle1 846 28,37 240,01 74,04 64,71 62,71 76,28 67,85 53,63 41,24 52,38 71,90 72,13 66,52 83,73
Vehicle2 846 28,37 240,01 96,88 77,41 39,73 95,24 94,29 93,52 71,49 68,12 95,79 95,46 96,70 23,63
Vehicle3 846 28,37 240,01 74,18 66,66 19,55 73,67 66,85 50,07 35,35 56,74 72,62 69,18 64,85 94,28
Yeast1 1484 28,91 429,02 69,74 63,95 65,85 72,73 70,76 53,97 24,93 27,93 72,23 69,94 67,92 94,30
Glass0 214 32,71 70,00 81,30 83,92 69,70 84,27 77,90 74,60 58,84 72,23 79,02 75,76 79,52 69,54
Iris0 150 33,33 50,00 100,00 99,49 100,00 100,00 98,97 100,00 95,34 94,34 98,97 98,97 97,89 75,46
Pima 768 34,84 267,57 70,27 67,08 70,36 73,98 70,97 75,96 8,78 47,90 72,92 70,47 69,44 91,99
Ecoli0vs1 220 35 77,00 97,63 95,15 97,97 97,94 98,31 96,86 86,65 86,65 97,24 97,58 95,13 79,02
Wisconsin 683 35 239,05 96,73 96,05 94,72 95,10 94,80 92,23 94,55 93,98 96,19 95,58 94,41 95,08
Glass1 214 35,51 75,99 75,53 82,33 62,43 80,07 70,03 73,36 47,25 40,77 70,49 72,04 68,37 83,68
Mean 919,94 17,61 119,97 84,92 81,79 76,19 83,69 80,61 70,55 52,52 63,61 82,43 81,79 79,48 79,40
Median 482,00 15,48 52,01 89,04 84,52 77,62 86,35 87,25 76,37 55,14 68,16 88,26 87,11 84,06 85,10
1 4 9 2 7 10 12 11 3 5 8 6
Tabla 17 Resultado en función de GM para los 33 imbalanced datasets y el CTC al tamaño de submuestras TamMax
Capítulo 7 Experimento 2
127
Para finalizar esta experimentación se muestran los resultados de ranking concreto
para cada una de las bases de datos.
De la última tabla que pone fin a este capítulo destaca que es el clasificador que
más veces queda en primer lugar obteniendo esta posición en el ranking 13 veces por 5
veces que quedan primero XCS y SIA, por lo que si luego queda peor es porque, en media,
queda mucho peor.
Rankings
Tam
=SMOTE
-Max
Tam=SMOTE-MaxGBML Classical methods
XCS SIA CORE Gassist DT-GA CART AQ CN2 C45 C45-Rules Ripper N_S=5
1,00 7,00 2,00 5,00 9,00 12,00 8,00 4,00 10,00 11,00 6,00 3,00
1,00 3,00 7,00 4,00 5,00 9,00 12,00 11,00 2,00 6,00 8,00 10,00
2,00 6,00 7,00 3,00 8,00 10,00 12,00 11,00 5,00 4,00 9,00 1,00
3,00 7,00 2,00 4,00 8,00 12,00 10,00 11,00 6,00 5,00 9,00 1,00
9,00 7,00 6,00 4,00 3,00 11,00 12,00 8,00 2,00 5,00 10,00 1,00
2,00 5,00 10,00 3,00 9,00 1,00 7,00 12,00 4,00 6,00 11,00 8,00
5,00 6,00 4,00 3,00 9,00 11,00 12,00 10,00 8,00 7,00 2,00 1,00
3,00 2,00 12,00 10,00 1,00 6,00 8,00 5,00 7,00 11,00 9,00 4,00
2,00 1,00 3,00 6,00 11,00 9,00 12,00 10,00 5,00 7,00 8,00 4,00
5,00 2,00 9,00 10,00 11,00 12,00 7,00 4,00 6,00 3,00 8,00 1,00
2,00 1,00 9,00 5,00 7,00 8,00 11,00 12,00 6,00 4,00 3,00 10,00
4,00 6,00 10,00 7,00 1,00 11,00 12,00 9,00 3,00 2,00 5,00 8,00
5,00 4,00 7,00 6,00 9,00 10,00 11,00 12,00 3,00 8,00 2,00 1,00
4,00 8,00 9,00 3,00 6,00 10,00 12,00 11,00 2,00 1,00 7,00 5,00
8,00 7,00 6,00 4,00 5,00 10,00 11,00 9,00 2,00 3,00 1,00 12,00
7,00 2,00 12,00 5,00 4,00 8,00 10,00 11,00 1,00 6,00 3,00 9,00
4,00 2,00 7,00 3,00 8,00 10,00 11,00 12,00 5,00 6,00 9,00 1,00
2,00 1,00 9,00 5,00 3,00 6,00 12,00 11,00 10,00 4,00 7,00 8,00
4,00 1,00 10,00 7,00 5,00 8,00 12,00 11,00 6,00 2,00 3,00 9,00
3,00 8,00 2,00 6,00 1,00 9,00 12,00 11,00 4,50 4,50 7,00 10,00
3,00 9,00 11,00 2,00 8,00 6,00 12,00 10,00 5,00 7,00 4,00 1,00
7,00 1,00 9,00 2,00 3,00 5,00 12,00 11,00 6,00 8,00 10,00 4,00
6,00 7,00 2,00 5,00 4,00 8,00 12,00 9,00 3,00 1,00 10,00 11,00
3,00 8,00 9,00 2,00 6,00 10,00 12,00 11,00 5,00 4,00 7,00 1,00
1,00 8,00 11,00 5,00 6,00 7,00 9,00 10,00 3,00 4,00 2,00 12,00
2,00 7,00 12,00 3,00 6,00 10,00 11,00 9,00 4,00 5,00 8,00 1,00
6,00 9,00 8,00 2,00 4,00 10,00 12,00 11,00 3,00 5,00 7,00 1,00
3,00 2,00 10,00 1,00 6,00 8,00 12,00 9,00 5,00 7,00 4,00 11,00
2,50 5,00 2,50 2,50 7,00 2,50 10,00 11,00 7,00 7,00 9,00 12,00
8,00 10,00 7,00 3,00 5,00 2,00 12,00 11,00 4,00 6,00 9,00 1,00
4,00 8,00 2,00 3,00 1,00 7,00 10,50 10,50 6,00 5,00 9,00 12,00
1,00 3,00 8,00 5,00 7,00 12,00 9,00 11,00 2,00 4,00 10,00 6,00
4,00 2,00 10,00 3,00 8,00 5,00 11,00 12,00 7,00 6,00 9,00 1,00
3,83 5,00 7,41 4,29 5,88 8,35 10,86 10,02 4,77 5,29 6,82 5,48
3,00 6,00 8,00 4,00 6,00 9,00 12,00 11,00 5,00 5,00 8,00 4,00
1 4 9 2 7 10 12 11 3 5 8 6
Tabla 18 Los 11 algoritmos seleccionados del estudio en ranking con el CTC en su versión con submuestras al tamaño TamMax
#BDs
33
Data-set
Abalone19
Yeast6
Yeast5
Yeast4
Yeast2vs8
Glass5
Abalone9vs18
Glass4
Ecoli4
Glass2
Vowel0
Page-blocks0
Ecoli3
Yeast3
Glass6
Segment0
Ecoli2
New-thyroid1
New-thyroid2
Ecoli1
Vehicle0
Glass0123vs456
Haberman
Vehicle1
Vehicle2
Vehicle3
Yeast1
Glass0
Iris0
Pima
Ecoli0vs1
Wisconsin
Glass1
Mean
Median
Ranking
Capítulo 8
Conclusiones
Finalmente en este último capítulo se recogen las principales conclusiones
obtenidas en las experimentaciones llevadas a cabo en este proyecto y se apuntan
algunas líneas de trabajo que han quedado abiertas.
Capítulo 8 Conclusiones
130
8.1 Resultados y discusión
En este trabajo se ha analizado el desempeño o rendimiento del algoritmo CTC.
El CTC es un algoritmo de construcción de árboles de clasificación basado en múltiples
muestras, que genera un único árbol de clasificación y proporciona una explicación de la
clasificación realizada, abordando uno de los problemas más complejos de clasificación,
class imbalance. En concreto, en este trabajo nos hemos centrado en bases de datos de
tamaño reducido y muy desbalanceadas, desde el punto de vista de la representación de
las clases, complicando el aprendizaje a partir de las mismas.
Para este trabajo se han empleado los resultados anteriormente publicados en el
trabajo realizado por Fernández et al, en donde 22 diferentes algoritmos, de los cuales 16
son evolutivos y 6 denominados clásicos para la generación de reglas inductivas, son
testeados frente a 33 bases de datos desbalanceadas. El conjunto de bases de datos,
pertenecen al proyecto KEEL, pertenecen a distintos ámbitos de la vida real, si bien la
mayoría se encuadran en el ámbito médico.
Esta comparación es directa ya que además de poner a disposición de los
investigadores las mismas bases de datos, se da la opción de descargar exactamente las
mismas muestras de entrenamiento y test de una validación cruzada, posibilitando
reproducir el experimento bajo las mismas condiciones.
Los resultados indican que en el primer experimento, el CTC muestra un
rendimiento mejor que casi la totalidad de los algoritmos, obteniendo la segunda posición
en el ranking medio de entre todos los algoritmos. Mediante el test de Shaffer se concluye
que además no se encuentran diferencias estadísticamente significativas frente al Ripper
que es el primero. Con los resultados obtenidos en este estudio, se ha presentado un
artículo al CAEPIA2013 y ha sido seleccionado para su exposición en el congreso.
El método de remuestreo empleado –obtención de muestras equilibradas al 50 %
de ambas clases – así como los parámetros del algoritmo CTC derivan de las conclusiones
obtenidas en otros trabajos desarrollados por el grupo ALDAPA y que en su momento ya
se han detallado.
Se ha realizado esta primera experimentación variando el número de submuestas
con el objetivo de estudiar el impacto de las mismas en bases de datos reducidas. Para
ello hemos empleado 6 valores distintos y además se ha experimentado con el tamaño de
la muestra que también ha resultado ser determinante.
Destaca que con tamaños de submuestras al tamaño máximo que se pueden
generar sin repetir casos se obtienen mejores resultados, que empleando tamaños de
submuestras basándonos en el tamaño dado por los casos de la clase minoritaria. El
número de submuestras también es un parámetro influyente en el rendimiento.
Capítulo 8 Conclusiones
131
Por lo que a mi refiere este proyecto ha sido una grata experiencia. Me ha dado la
oportunidad de afrontar un proyecto que podría calificarse como de investigación, en el
que al comienzo tenía mis dudas por desconocer cómo plantearlo y que posteriormente
con mi trabajo y la ayuda de Txus ha resultado apasionarme. A su vez me ha permitido
profundizar en el paradigma de los árboles de clasificación completando los
conocimientos obtenidos en la asignatura m.m.c.c, además de familiarizarme con las
herramientas necesarias para llevar a cabo un estudio de esta índole, dándome la
posibilidad de emplear herramientas fruto del trabajo y del esfuerzo de un gran número
de personas y aprender a tratar los resultados de una manera formal con el objetivo de
obtener conclusiones.
Además me ha servido para conocer en primera persona lo que es enfrentarse a un
proyecto de larga duración en el que mantener la motivación en todo momento ha sido
clave.
Gracias a este proyecto he aprendido a ir documentando y tomando referencias
desde el primer momento, descatalogando las fuentes poco serias y profundizando en las
que posteriormente emplearía como fuente.
El hecho de haberme leído el citado artículo de Quinlan sobre induction trees en
m.m.c.c hace un par de años, ha hecho que desde la primera toma de contacto y reunión
con Txus me haya interesado el tema.
8.2 Líneas abiertas
Como primer paso en el futuro trabajo, había que completar la experimentación
realizada para el conjunto de bases de datos SMOTE ya que únicamente se han realizado
3 ejecuciones variando el tamaño de las muestras pero únicamente con 5 submuestras y
el CTC obtiene la sexta posición en el ranking medio. Presuponemos que variando el
número de submuestras se podrían alcanzar resultados más competitivos.
Precisamente sería interesante realizar un análisis más profundo sobre la relación
que existe entre la representación de los casos de ambas clases mediante el número de
submuestras y el rendimiento obtenido en los árboles de clasificación. Esta relación se
conoce como coverage y mediante fórmulas matemáticas se puede calcular el número de
casos, tanto de la clase minoritaria, como mayoritaria, que se cubren para una cantidad
concreta de muestras. Analizando este parámetro se observa que en las experimentaciones
realizadas para cantidades grandes de muestras se consiguen recopilar el 100% de los
casos minoritarios y es en estos donde se alcanzan los mejores resultados. No obstante no
se cubren el 100% de los casos pertenecientes a la clase mayoritaria por lo que podrían
obtenerse a priori mejores resultados optimizando este parámetro.
Capítulo 8 Conclusiones
132
También sería interesante afrontar el problema de las bases de datos multiclásicas
(todas bi-clásicas hasta ahora) y poder así completar la comparación del CTC en los tres
contextos analizados en el artículo de Fernández et al [FGLBH10].
Otra línea abierta seria aplicar el proceso de consolidación a otros algoritmos
como el Ripper.
Bibliografía
133
Bibliografía
[AN07] Asuncion A, Newman DJ UCI machine learning repository.
University of California, School of Information and Computer Science, Irvine.
http://www.ics.uci.edu/~mlearn/MLRepository.html
[ALB12] Albisua I. "Análisis del efecto del cambio de la distribución de
clases mediante métodos de remuestreo inteligente en árboles de clasificación
simples y consolidados". Phd Thesis University of Basque Country, Donostia,
Spain (in spanish)
[AAGMMPP09] Albisua I., Arbelaitz O., Gurrutxaga I., Martín J.I.,
Muguerza J., Pérez J.M., Perona I.: Ob-taining optimal class distribution for
decision trees: comparative analysis of CTC and C4.5. In: P. Meseguer, L.
Mandow, R. M. Gasca (Eds.). Current Topics in Artficial Intelli-gence, CAEPIA
2009 Selected Papers. LNAI, Vol. 5988, Springer, pp. 101-110
[AAGMP11] Albisua I., Arbelaitz O., Gurrutxaga, I. Muguerza J.,. Pérez
J.M. "C4.5 Consolidation Process: An Alternative to Intelligent Oversampling
Methods in Class Imbalance Problems". Lecture Notes in Computer Science 7023,
Advances in Artificial Intelligence, CAEPIA 2011. Springer-Verlag. Jose A.
Lozano, José A. Gámez and José A. Moreno (Eds.), 74-83.
[AMP10] Albisua I., Muguerza J., Pérez J.M. "SMOTE versus
submuestreo aleatorio en la búsqueda de la distribución de clases óptima". Actas
del V Simposio de Teoría y Aplicaciones de Minería de Datos (TAMIDA 2010)
dentro del III Congreso Español de Informática (CEDI 2010), Valencia, Spain,
111-120.
[BPM04] Batista G. E. A. P. A., Prati R. C., Monard M. C. A study of the
behavior of several methods for balancing machine learning training data
SIGKDD Explorations Newsletter,
[AFLDGSH11] Alcalá-Fdez J., Fernandez A., Luengo J., Derrac J.,
García S., Sánchez L., Herrera F.: KEEL Data-Mining Software Tool: Data Set
Repository, Integration of Algorithms and Experimental Analysis Framework.
Journal of Multiple-Valued Logic and Soft Computing 17:2-3, 255-287 (2011)
[CJK04] Chawla, N.V., Japkowicz, N., Kolcz, A.: Editorial: special issue
on learning from imbalanced data sets. SIGKDD Explorations, 6:1 (2004) 1–6.
[CBHK02] Chawla N.V.,. Bowyer K.W, Hall L.O.,. Kegelmeyer W.P.
SMOTE: synthetic minority oversampling technique. Journal of Artificial
Intelligence Research 16 (2002) 321-357
Bibliografía
134
[Dem06] Demšar J.: Statistical Comparisons of Classifiers over Multiple
Data Sets. Journal of Ma-chine Learning Research, 7, 1-30 (2006)
[FGLBH10] Fernandez A., García S., Luengo J., Bernadó-Mansilla E.,
Herrera F., "Genetics-Based Machine Learning for Rule Induction: State of the
Art, Taxonomy and Comparative Study". IEEE Transactions on Evolutionary
Computation 14:6 (2010) 913-941,
http://dx.doi.org/10.1109/TEVC.2009.2039140
[GH08] García S., Herrera F.: An Extension on “Statistical Comparisons
of Classifiers over Multi-ple Data Sets for all Pairwise Comparisons. Journal of
Machine Learning Reserarch, 9, 2677-2694 (2008)
[GFLH10] García S., Fernández A., Luengo J., Herrera F.: Advanced
nonparametric tests for multiple comparisons in the design of experiments in
computational intelligence and data mining: Experimental Analysis of Power.
Information Sciences, 180, 2044–2064 (2010)
[GCFH06]García S., Cano J.R., Fernández A., Herrera F.. A proposal of
evolutionary prototype selection for class imbalance problems. International
Conference on Intelligent Data Engineering and Automated Learning (IDEAL06).
Lecture Notes in Computer Science 4224, Springer-Verlag 2006, Burgos (Spain,
2006) 1415-1423
[HG09] He, H., Garcia, E.: Learning from imbalanced data. IEEE Trans.
Knowl. Data Eng. 21(9), 1263–1284 (2009)
[HK06] Han J, Kamber M: Data Mining: Concepts and Techniques The
Morgan Kaufmann Series in Data Management Systems, Jim Gray, Series
Editor Morgan Kaufmann Publishers, March 2006
[MR] Maimon O, Rokach L Data mining and knowledge discovery
handbook
[Men99] Mena, J. (1999). Data Mining your website. Digital Press
[OZ99] Osmar R. Zaïane, 1999 CMPUT690 Principles of Knowledge
Discovery in Databases
[Per06] Pérez. J.M. "Árboles Consolidados: Construcción de un árbol de
clasificación basado en múltiples submuestras sin renunciar a la
Bibliografía
135
explicación". Phd Thesis University of Basque Country, Donostia, Spain (in
spanish)
[Qui86] Quinlan J.R.. Induction of decision trees. Machine Learning,
1:81{106, 1986.
[Qui92] Quinlan. J. R. C4.5: Programs for Machine Learning (Morgan
Kaufmann Series in Machine Learning). Morgan Kaufmann, 1 edition, 1992.
[Sto74] Stone, M. (1974). Cross-validatory choice and assessment of
statistical predictions. Journal of the Royal Statistical Society Series B,
36:111{147
[YW06] Yang Q., Wu X.: 10 challenging problems in data mining
research. International Journal of Information Technology & Decision Making.
5(4), 597–604 (2006)
[WP03] Weiss G.M., Provost F.: Learning when Training Data are
Costly: The Effect of Class Dis-tribution on Tree Induction. Journal of Artificial
Intelligence Research 19, 315-354 (2003)
APENDICE 1
Resumen de resultados de las Bases de datos
En las siguientes páginas se encuentran los resultados obtenidos para todas las
ejecuciones realizadas sobre el conjunto de 33 bases de datos. Están organizadas por
número y tamaño de las submuestas. Las tablas más reducidas muestran los resultados
para las bases de datos que se han decidido no podar fruto de los malos resultados
obtenidos podándola.
Apéndice 1 Resumen de resultados de las bases de datos
138
Resultados para Tamaño de submuestras al máximo y 5 submuestras
AU
CError
F valueG
MK
appaTP
R
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
abalone9-180,50000
0,000000,05811
0,000000,97007
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
abalone190,50000
0,000000,00767
0,000000,99615
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
ecoli-0_vs_10,98158
0,001820,01545
0,002490,97742
0,003390,98159
0,001930,96566
0,005360,97333
0,00000
ecoli10,90938
0,018010,09989
0,009490,93345
0,006510,87567
0,014820,73157
0,024020,91864
0,01278
ecoli20,86950
0,015260,07076
0,009490,95787
0,005560,87067
0,026660,73566
0,038710,95353
0,00385
ecoli30,87532
0,040490,09581
0,008990,94621
0,005290,69281
0,082440,47470
0,064220,94212
0,01334
ecoli40,75002
0,059650,03987
0,006540,97896
0,003430,66486
0,124790,54648
0,112730,98417
0,00498
glass00,82708
0,029560,17475
0,020790,86782
0,014590,80367
0,030170,60846
0,050980,85818
0,02052
glass-0-1-2-3_vs_4-5-60,87954
0,017490,08321
0,012980,94591
0,008170,86777
0,030100,76364
0,041150,95447
0,01411
glass10,71326
0,034950,25590
0,013840,80485
0,009650,69618
0,022190,43044
0,033900,82323
0,00810
glass20,51295
0,028950,08033
0,002080,95804
0,001300,01948
0,043560,00895
0,020020,99795
0,00459
glass40,72267
0,109580,04948
0,007080,97384
0,003520,47275
0,208980,37484
0,174220,98200
0,00758
glass50,74024
0,050000,03823
0,003900,97991
0,001990,49837
0,101700,37206
0,100970,98049
0,00000
glass60,85335
0,054830,05703
0,014890,96682
0,008820,87991
0,033040,75888
0,058970,96324
0,01291
haberman
0,500000,00000
0,264670,00000
0,847470,00000
0,000000,00000
0,000000,00000
1,000000,00000
iris00,99000
0,000000,00667
0,000000,99512
0,000000,98974
0,000000,98462
0,000001,00000
0,00000
new-thyroid1
0,958330,01037
0,047440,00895
0,970620,00566
0,957150,01020
0,846870,02740
0,950000,00878
new-thyroid2
0,949680,01095
0,055810,01740
0,964680,01210
0,947210,01082
0,830050,03666
0,942220,02173
page-blocks00,84734
0,030700,05249
0,005650,97130
0,002910,75026
0,071270,66053
0,066360,98771
0,00047
pima
0,728600,01668
0,269780,00740
0,793550,00753
0,691220,00445
0,402870,01203
0,799200,01591
segment0
0,987630,00186
0,008320,00094
0,995140,00055
0,985950,00176
0,966190,00373
0,993940,00095
vehicle00,95662
0,002190,08131
0,005050,94515
0,003790,91980
0,001510,78821
0,010340,91711
0,00853
vehicle10,50000
0,000000,25650
0,000000,85288
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vehicle20,90764
0,013310,15316
0,021520,89713
0,013830,78206
0,036570,59178
0,061500,89947
0,01195
vehicle30,50000
0,000000,25059
0,000000,85676
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vowel0
0,956010,00517
0,035230,00492
0,980390,00283
0,938260,01398
0,804800,02149
0,969940,00588
wisconsin
0,966460,00628
0,068190,00222
0,948320,00161
0,918180,00325
0,847980,00512
0,958950,00100
yeast10,71147
0,011140,24690
0,007070,83106
0,005430,65324
0,010460,37232
0,016210,85536
0,00940
yeast-2_vs_80,77391
0,000000,02077
0,000000,98927
0,000000,72831
0,000000,65905
0,000000,99783
0,00000
yeast30,92585
0,006940,05431
0,001940,96935
0,001130,87218
0,003660,73023
0,007620,96472
0,00237
yeast40,52508
0,035520,03464
0,000370,98237
0,000210,03335
0,047880,01816
0,027720,99916
0,00125
yeast50,72394
0,087290,02601
0,005820,98667
0,003010,43306
0,168470,33305
0,158640,99167
0,00354
yeast60,50000
0,000000,02358
0,000000,98807
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
AUCError
F valueG
MKappa
TPR
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
abalone9-180,74307
0,035020,21030
0,016860,87723
0,010950,68776
0,034140,17849
0,031540,80069
0,01784
abalone190,58431
0,070850,23421
0,013770,86609
0,009100,52375
0,121840,01277
0,009710,76838
0,01344
glass20,74228
0,046540,22640
0,005660,86243
0,006040,65930
0,066090,21089
0,024990,78662
0,00389
haberman
0,546220,01901
0,514390,01362
0,564070,01675
0,504040,01291
0,016610,01963
0,457780,02061
vehicle10,56124
0,010840,43664
0,019310,65802
0,023960,55705
0,003530,09415
0,008470,56732
0,03667
vehicle30,56008
0,006700,42220
0,018680,67338
0,023160,57062
0,007310,11469
0,009880,58335
0,03725
yeast40,82701
0,026080,14690
0,007630,91845
0,004490,77025
0,042890,20143
0,026960,85848
0,00763
yeast60,84070
0,023340,13084
0,016060,92796
0,009140,82092
0,011830,20205
0,031300,87125
0,01679
Apéndice 1 Resumen de resultados de las bases de datos
139
Resultados para Tamaño de submuestras al máximo y 120% submuestras
AU
CError
F valueG
MK
appaTP
R
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
abalone9-180,51902
0,026130,05914
0,002300,96949
0,001250,04224
0,059300,02123
0,033640,99783
0,00324
abalone190,50000
0,000000,00767
0,000000,99615
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
ecoli-0_vs_10,98179
0,001960,01545
0,002490,97735
0,003320,98163
0,001970,96561
0,005310,97333
0,00000
ecoli10,87137
0,051850,10829
0,020610,92861
0,013920,84759
0,030320,70093
0,055300,92404
0,01906
ecoli20,84975
0,020180,06898
0,009980,95928
0,006080,85500
0,009710,73268
0,032680,96193
0,01037
ecoli30,87897
0,025810,08515
0,010320,95264
0,005950,71188
0,038700,51977
0,051460,95816
0,01053
ecoli40,80570
0,011510,03687
0,004930,98028
0,002730,83216
0,017410,68170
0,028310,97853
0,00514
glass00,80215
0,022090,18680
0,011530,85883
0,009910,78588
0,011230,57944
0,023520,85010
0,01530
glass-0-1-2-3_vs_4-5-60,86311
0,023180,08505
0,016940,94436
0,011080,87051
0,025580,76239
0,047340,94958
0,01093
glass10,72604
0,042830,25032
0,022000,80888
0,016780,70164
0,030430,44318
0,051490,83069
0,02719
glass20,54328
0,064620,08219
0,004160,95668
0,002790,07668
0,112660,04525
0,070710,99179
0,01124
glass40,86538
0,084330,04667
0,007410,97485
0,003890,76283
0,170200,58556
0,140580,96910
0,00961
glass50,89951
0,099040,02607
0,004140,98620
0,002200,79639
0,176830,67392
0,139450,98244
0,00816
glass60,84121
0,033950,05978
0,012050,96522
0,007410,86647
0,023720,74603
0,040400,96432
0,01648
haberman
0,500000,00000
0,264670,00000
0,847470,00000
0,000000,00000
0,000000,00000
1,000000,00000
iris00,99000
0,000000,00667
0,000000,99512
0,000000,98974
0,000000,98462
0,000001,00000
0,00000
new-thyroid1
0,958650,01160
0,038140,01061
0,976480,00700
0,955660,01119
0,873900,02896
0,964440,01083
new-thyroid2
0,943100,02430
0,050230,02011
0,968760,01318
0,941320,02536
0,838830,05548
0,953330,01826
page-blocks00,86335
0,001880,04934
0,001510,97292
0,000790,78739
0,011990,69580
0,012980,98734
0,00068
pima
0,703970,02042
0,280470,00705
0,786920,00505
0,674510,01346
0,375500,01960
0,797600,01244
segment0
0,986910,00256
0,008150,00177
0,995240,00104
0,985020,00244
0,966860,00703
0,994540,00209
vehicle00,95893
0,002960,08178
0,003280,94485
0,002450,91720
0,001720,78656
0,007000,91834
0,00530
vehicle10,50000
0,000000,25650
0,000000,85288
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vehicle20,90373
0,006600,15930
0,012050,89284
0,007920,77328
0,023590,57675
0,035550,89631
0,01067
vehicle30,50000
0,000000,25059
0,000000,85676
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vowel0
0,955560,00356
0,028350,00101
0,984300,00060
0,943250,00393
0,837520,00325
0,977510,00199
wisconsin
0,969350,00015
0,067310,00000
0,948960,00000
0,919320,00000
0,849990,00000
0,959400,00000
yeast10,71617
0,012580,24608
0,004220,83124
0,002930,65693
0,020080,37659
0,019820,85403
0,01307
yeast-2_vs_80,77391
0,000000,02077
0,000000,98927
0,000000,72831
0,000000,65905
0,000000,99783
0,00000
yeast30,92077
0,006730,05417
0,003350,96939
0,001920,87331
0,006370,73271
0,014770,96473
0,00291
yeast40,66772
0,074830,03504
0,001580,98209
0,000850,23788
0,119760,14503
0,076220,99511
0,00346
yeast50,95825
0,042730,01819
0,003090,99062
0,001590,83527
0,075000,67931
0,073630,98903
0,00266
yeast60,59801
0,068640,02480
0,001210,98740
0,000630,19903
0,149850,12493
0,102390,99558
0,00300
AUCError
F valueG
MKappa
TPR
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
abalone9-180,73563
0,026790,15739
0,005260,91081
0,002990,69814
0,047740,25286
0,036850,85763
0,00491
abalone190,49152
0,043620,14730
0,011900,91993
0,007020,44437
0,070330,01643
0,006880,85703
0,01211
glass20,73804
0,045150,16281
0,030840,90566
0,020150,64425
0,079070,26494
0,073040,86372
0,03264
haberman
0,527310,01110
0,527380,01739
0,548880,02200
0,492020,01395
0,000550,01998
0,440890,02522
vehicle10,56306
0,006130,43566
0,018000,65893
0,024710,55508
0,010810,09342
0,008070,56955
0,04200
vehicle30,56230
0,007950,42480
0,021040,67160
0,024410,56686
0,006020,10856
0,013570,58175
0,03801
yeast40,82088
0,023430,09610
0,012210,94812
0,007080,75824
0,024530,28120
0,016880,91317
0,01424
yeast60,82251
0,015400,07250
0,005780,96152
0,003230,81431
0,021450,30065
0,025130,93238
0,00550
Apéndice 1 Resumen de resultados de las bases de datos
140
Resultados para Tamaño de submuestras al máximo y 200% submuestras
AU
CError
F valueG
MK
appaTP
R
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
abalone9-180,54158
0,036820,05983
0,004350,96909
0,002270,06812
0,070010,03864
0,058350,99601
0,00298
abalone190,50000
0,000000,00767
0,000000,99615
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
ecoli-0_vs_10,98179
0,001960,01545
0,002490,97735
0,003320,98163
0,001970,96561
0,005310,97333
0,00000
ecoli10,88916
0,015620,09810
0,004690,93567
0,003320,85541
0,011010,72618
0,013010,93643
0,00806
ecoli20,86150
0,027670,05947
0,008650,96485
0,005230,87599
0,010770,77136
0,029940,96759
0,00912
ecoli30,89657
0,030060,08817
0,007710,95061
0,004320,73776
0,030570,52817
0,045200,94943
0,00753
ecoli40,79877
0,010690,03153
0,003400,98326
0,001870,81452
0,018330,69792
0,027690,98611
0,00362
glass00,82005
0,009630,17652
0,010220,86712
0,008560,79856
0,020930,60138
0,026780,85690
0,02386
glass-0-1-2-3_vs_4-5-60,86658
0,020790,08516
0,008390,94457
0,005210,86854
0,016780,75961
0,026700,95080
0,00442
glass10,69293
0,026070,25978
0,019210,80408
0,013770,68146
0,028630,41672
0,046110,83476
0,01961
glass20,57506
0,050430,07754
0,002550,95942
0,001350,13429
0,092110,09260
0,061020,99595
0,00424
glass40,84020
0,071280,05050
0,015280,97290
0,008220,67013
0,161270,49446
0,171850,96902
0,01084
glass50,93878
0,069000,02423
0,002120,98701
0,001090,89690
0,125680,74664
0,105330,97756
0,00436
glass60,86688
0,058400,05697
0,016060,96716
0,009290,85043
0,048540,74670
0,073210,97297
0,01011
haberman
0,500000,00000
0,264670,00000
0,847470,00000
0,000000,00000
0,000000,00000
1,000000,00000
iris00,99000
0,000000,00667
0,000000,99512
0,000000,98974
0,000000,98462
0,000001,00000
0,00000
new-thyroid1
0,959920,00544
0,033490,00208
0,979780,00121
0,955800,01004
0,881930,00898
0,971110,00248
new-thyroid2
0,954920,01394
0,050230,01783
0,968640,01192
0,945970,01604
0,840790,04436
0,951110,02201
page-blocks00,86257
0,002790,04850
0,000700,97336
0,000370,79383
0,014030,70282
0,009340,98705
0,00245
pima
0,690650,02429
0,279710,01179
0,787140,00783
0,678520,02151
0,378700,03165
0,794400,01438
segment0
0,987680,00227
0,007450,00169
0,995650,00099
0,987480,00238
0,969710,00678
0,994540,00149
vehicle00,95758
0,001690,07871
0,006570,94679
0,004870,92242
0,003860,79560
0,014140,91959
0,00937
vehicle10,50000
0,000000,25650
0,000000,85288
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vehicle20,90998
0,005010,14584
0,009060,90063
0,006970,80961
0,008040,62332
0,019170,89277
0,01234
vehicle30,50000
0,000000,25059
0,000000,85676
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vowel0
0,960330,00457
0,026330,00357
0,985400,00202
0,951440,00518
0,850210,01706
0,978180,00390
wisconsin
0,971780,00152
0,066720,00513
0,949180,00403
0,921670,00575
0,851860,01116
0,956260,00670
yeast10,69760
0,009750,25673
0,008540,82299
0,007650,64840
0,011140,35474
0,015780,84114
0,01779
yeast-2_vs_80,77391
0,000000,02077
0,000000,98927
0,000000,72831
0,000000,65905
0,000000,99783
0,00000
yeast30,89387
0,015110,05619
0,002460,96838
0,001370,85689
0,013390,71543
0,014150,96609
0,00281
yeast40,68694
0,084280,03491
0,001300,98214
0,000690,27262
0,133290,16993
0,089820,99427
0,00302
yeast50,97577
0,008140,01792
0,001940,99073
0,001010,89404
0,027700,72007
0,030940,98722
0,00167
yeast60,76342
0,064040,02291
0,001350,98832
0,000690,46897
0,133830,33406
0,098840,99282
0,00261
AUCError
F valueG
MKappa
TPR
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
abalone9-180,71874
0,042100,16970
0,012300,90308
0,007450,68486
0,043460,22923
0,031780,84565
0,01269
abalone190,47611
0,016520,13580
0,007600,92672
0,004360,43430
0,051940,01637
0,005600,86881
0,00780
glass20,73783
0,065270,15728
0,033270,90932
0,020780,62030
0,059070,26344
0,087520,87603
0,03535
haberman
0,537620,01044
0,510360,01940
0,572990,02682
0,502780,00978
0,011450,01425
0,470220,03376
vehicle10,56445
0,002470,42907
0,013640,66728
0,018230,55915
0,006330,09865
0,005830,58069
0,03050
vehicle30,56295
0,009010,41393
0,026270,68378
0,028490,56986
0,008330,11670
0,021040,60006
0,04471
yeast40,80277
0,029220,09827
0,011910,94696
0,006860,74795
0,039600,26970
0,017970,91178
0,01451
yeast60,80512
0,035290,06913
0,012420,96330
0,006850,79110
0,030070,31176
0,047030,93680
0,01189
Apéndice 1 Resumen de resultados de las bases de datos
141
Resultados para Tamaño de submuestras al máximo y 400% submuestras
AU
CError
F valueG
MK
appaTP
R
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
abalone9-180,53113
0,054010,05949
0,002230,96928
0,001210,05051
0,112940,02976
0,070920,99674
0,00486
abalone190,50000
0,000000,00767
0,000000,99615
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
ecoli-0_vs_10,98108
0,001960,01636
0,002490,97613
0,003320,98091
0,001970,96367
0,005310,97333
0,00000
ecoli10,88101
0,031560,09815
0,006270,93530
0,003920,86401
0,014230,72945
0,018990,93020
0,00474
ecoli20,86430
0,027450,05951
0,007290,96492
0,004140,87291
0,027060,76792
0,034040,96828
0,00354
ecoli30,86554
0,052700,08579
0,009220,95221
0,005420,71921
0,027410,52487
0,039410,95672
0,01172
ecoli40,80449
0,012670,02973
0,002080,98420
0,001140,83562
0,016560,72335
0,016320,98612
0,00281
glass00,79864
0,019110,18144
0,015410,86511
0,010870,78565
0,024140,58561
0,037760,86616
0,01149
glass-0-1-2-3_vs_4-5-60,86643
0,032070,08888
0,017120,94219
0,011180,85935
0,031730,74727
0,049580,94958
0,01341
glass10,73284
0,014780,24959
0,016920,80697
0,013440,71151
0,023180,45117
0,038370,81868
0,02209
glass20,63275
0,080360,08591
0,009640,95441
0,005680,18617
0,133980,11104
0,081720,98272
0,01625
glass40,89685
0,020530,04120
0,003840,97780
0,002120,79134
0,075810,62723
0,069760,97102
0,00421
glass50,97049
0,042180,02047
0,004160,98903
0,002240,93888
0,084210,81348
0,069070,98146
0,00636
glass60,81011
0,069700,06166
0,011720,96424
0,006760,85544
0,035000,73511
0,054430,96541
0,00725
haberman
0,500000,00000
0,264670,00000
0,847470,00000
0,000000,00000
0,000000,00000
1,000000,00000
iris00,99000
0,000000,00667
0,000000,99512
0,000000,98974
0,000000,98462
0,000001,00000
0,00000
new-thyroid1
0,965710,00792
0,031630,00389
0,980870,00235
0,962000,00861
0,889310,01382
0,971110,00248
new-thyroid2
0,955000,01774
0,039070,01878
0,975700,01251
0,955160,01726
0,874270,04782
0,963330,02137
page-blocks00,86209
0,001850,04799
0,000900,97361
0,000460,80151
0,010610,70909
0,009410,98616
0,00109
pima
0,681880,01060
0,282570,00930
0,784060,00700
0,677130,01267
0,374300,02164
0,788400,00829
segment0
0,986280,00346
0,007450,00108
0,995650,00063
0,985670,00338
0,969580,00447
0,995250,00045
vehicle00,95805
0,001610,07942
0,005250,94642
0,003880,92128
0,003260,79299
0,011410,91927
0,00786
vehicle10,50000
0,000000,25650
0,000000,85288
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vehicle20,90908
0,007080,15152
0,011510,89741
0,007910,79172
0,021020,60299
0,031550,89667
0,01297
vehicle30,50000
0,000000,25059
0,000000,85676
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vowel0
0,958040,00518
0,028150,00280
0,984410,00161
0,941210,00787
0,838660,01216
0,978180,00420
wisconsin
0,969930,00131
0,068190,00196
0,948210,00167
0,918850,00104
0,848240,00392
0,957600,00402
yeast10,69726
0,007400,25080
0,005880,82789
0,005090,65199
0,002890,36551
0,009080,84948
0,01028
yeast-2_vs_80,77391
0,000000,02077
0,000000,98927
0,000000,72831
0,000000,65905
0,000000,99783
0,00000
yeast30,89751
0,019700,05538
0,002400,96878
0,001400,86463
0,010690,72275
0,010630,96518
0,00371
yeast40,70184
0,059610,03841
0,003570,98029
0,001890,30025
0,092090,16838
0,048420,99036
0,00426
yeast50,96710
0,009760,01738
0,000560,99102
0,000300,87537
0,018280,71775
0,004710,98889
0,00155
yeast60,79334
0,075910,02332
0,001390,98809
0,000710,52278
0,151450,36850
0,109510,99116
0,00314
AUCError
F valueG
MKappa
TPR
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
abalone9-180,73163
0,019920,13993
0,004050,92158
0,002470,69015
0,027980,27144
0,019390,87765
0,00506
abalone190,49243
0,040070,13455
0,020970,92740
0,012130,39843
0,102250,01319
0,006580,87016
0,02151
glass20,72004
0,041190,13668
0,008880,92364
0,005690,54441
0,125370,24523
0,062840,90441
0,01574
haberman
0,549260,00520
0,518320,00674
0,563980,01147
0,497680,00500
0,003370,00855
0,459560,01621
vehicle10,56632
0,005120,42149
0,015450,67592
0,019860,56169
0,010710,10455
0,011690,59307
0,03384
vehicle30,56728
0,003050,40921
0,018720,68833
0,021880,57399
0,002930,12343
0,008200,60544
0,03588
yeast40,78065
0,015920,08801
0,003950,95299
0,002160,70365
0,020820,26108
0,019630,92519
0,00367
yeast60,82868
0,031540,07520
0,008180,96003
0,004660,81930
0,022030,29537
0,016130,92947
0,00901
Apéndice 1 Resumen de resultados de las bases de datos
142
Resultados para Tamaño de submuestras al máximo y 600% submuestras
AU
CError
F valueG
MK
appaTP
R
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
abalone9-180,52579
0,026460,06120
0,003060,96838
0,001680,05226
0,047710,01762
0,016370,99565
0,00417
abalone190,50000
0,000000,00767
0,000000,99615
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
ecoli-0_vs_10,98108
0,001960,01636
0,002490,97613
0,003320,98091
0,001970,96367
0,005310,97333
0,00000
ecoli10,86292
0,035920,09880
0,011830,93490
0,007930,86923
0,015730,72852
0,031430,92566
0,01000
ecoli20,85780
0,039980,06124
0,009760,96396
0,005680,86665
0,026310,75964
0,040460,96831
0,00559
ecoli30,89351
0,027830,08692
0,007910,95110
0,004620,76980
0,026900,55415
0,034560,94556
0,00894
ecoli40,80394
0,014590,03090
0,004490,98357
0,002400,83517
0,018230,71597
0,036730,98486
0,00346
glass00,81117
0,022050,17654
0,011220,86888
0,007510,78945
0,024260,59580
0,030760,87069
0,01048
glass-0-1-2-3_vs_4-5-60,86286
0,035390,09262
0,012010,93930
0,008280,86280
0,014070,74218
0,029730,94216
0,01284
glass10,71386
0,029070,25138
0,021020,80792
0,016910,70182
0,025320,44151
0,045750,82735
0,02377
glass20,60022
0,054640,08126
0,007050,95708
0,003920,19110
0,111490,12250
0,089540,98774
0,00690
glass40,86802
0,020710,05156
0,008090,97207
0,004590,75399
0,048240,55682
0,027830,96105
0,01082
glass50,97122
0,027180,01953
0,002080,98949
0,001100,94470
0,025400,83620
0,024710,98341
0,00267
glass60,81723
0,069060,05980
0,014610,96542
0,008580,85016
0,030550,73949
0,061630,96973
0,01302
haberman
0,500000,00000
0,264670,00000
0,847470,00000
0,000000,00000
0,000000,00000
1,000000,00000
iris00,99000
0,000000,00667
0,000000,99512
0,000000,98974
0,000000,98462
0,000001,00000
0,00000
new-thyroid1
0,966270,01242
0,029770,00416
0,982000,00245
0,965540,01299
0,895840,01601
0,972220,00000
new-thyroid2
0,951750,01396
0,042790,01521
0,973130,01036
0,950570,01419
0,865640,03606
0,960000,01730
page-blocks00,85943
0,001660,04781
0,001290,97373
0,000690,79979
0,009010,70903
0,009860,98673
0,00072
pima
0,680210,01176
0,278160,00940
0,790140,00813
0,673770,00743
0,377490,01822
0,805600,01276
segment0
0,988600,00126
0,005460,00084
0,996820,00049
0,988890,00153
0,977640,00340
0,996770,00111
vehicle00,95789
0,002870,08179
0,008170,94450
0,005920,92196
0,004570,78907
0,018370,91400
0,01178
vehicle10,50000
0,000000,25650
0,000000,85288
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vehicle20,91155
0,010760,13992
0,008150,90527
0,004990,81040
0,017610,63442
0,025630,90363
0,00618
vehicle30,50000
0,000000,25059
0,000000,85676
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vowel0
0,952220,00894
0,028560,00400
0,984200,00224
0,930370,01277
0,834750,02206
0,979960,00431
wisconsin
0,969350,00015
0,067310,00000
0,948960,00000
0,919320,00000
0,849990,00000
0,959400,00000
yeast10,69810
0,010160,24731
0,005880,83098
0,003920,65157
0,013390,37026
0,017900,85611
0,00742
yeast-2_vs_80,77391
0,000000,02077
0,000000,98927
0,000000,72831
0,000000,65905
0,000000,99783
0,00000
yeast30,88944
0,031640,05794
0,002780,96738
0,001530,85110
0,013470,70712
0,016810,96533
0,00135
yeast40,71686
0,072140,03477
0,001690,98218
0,000900,36080
0,117660,22925
0,071610,99274
0,00337
yeast50,96686
0,017440,01658
0,001940,99143
0,001010,88564
0,036560,73205
0,036090,98903
0,00238
yeast60,87193
0,025640,02197
0,001310,98874
0,000670,72727
0,037320,52586
0,036160,98827
0,00138
AUCError
F valueG
MKappa
TPR
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
abalone9-180,71974
0,027670,15872
0,005020,91010
0,002790,68746
0,040270,23255
0,035010,85694
0,00432
abalone190,45562
0,048930,12257
0,005210,93429
0,003120,34868
0,073650,01215
0,006450,88257
0,00555
glass20,72281
0,024910,13938
0,028810,92150
0,017290,56126
0,079870,25027
0,101480,90056
0,02803
haberman
0,534320,01017
0,520880,01096
0,560890,01432
0,494260,00946
-0,000690,01570
0,456890,01761
vehicle10,56657
0,001340,42174
0,016020,67513
0,021820,56216
0,012360,10560
0,010050,59182
0,03896
vehicle30,56348
0,003590,41417
0,016220,68418
0,019980,56931
0,004960,11494
0,003290,60038
0,03399
yeast40,79858
0,021580,09314
0,003380,95002
0,001940,73450
0,036380,26843
0,022970,91806
0,00438
yeast60,78801
0,039450,06630
0,007330,96501
0,003980,77102
0,046160,29423
0,046070,94024
0,00653
Apéndice 1 Resumen de resultados de las bases de datos
143
Resultados para Tamaño de submuestras al máximo y 200 submuestras
AU
CE
rror
F va
lue
GM
Ka
pp
a
Me
dia
De
sviacio
n T
ipica
Me
dia
De
sviacio
n T
ipica
Me
dia
De
sviacio
n T
ipica
Me
dia
De
sviacio
n T
ipica
Me
dia
De
sviacio
n T
ipica
Me
dia
abalone9-180,52434
0,021200,06085
0,002600,96856
0,001410,06994
0,039100,02752
0,016780,99565
ab
alo
ne
190,50000
0,000000,00767
0,000000,99615
0,000000,00000
0,000000,00000
0,000001,00000
ecoli-0_vs_10,98250
0,001600,01455
0,002030,97856
0,002710,98236
0,001610,96755
0,004330,97333
ecoli10,87330
0,018710,09820
0,005940,93532
0,003790,86783
0,012670,72936
0,017360,92716
ecoli20,82852
0,014370,05944
0,003660,96524
0,002140,85815
0,010140,76009
0,014910,97397
ecoli30,85319
0,028050,09051
0,008230,94912
0,004690,74826
0,018910,53143
0,038490,94550
ecoli40,80245
0,012400,03210
0,003860,98294
0,002070,82845
0,014930,70342
0,031000,98423
glass00,81335
0,020210,17205
0,015270,87038
0,012110,80028
0,018600,61139
0,033830,86621
glass-0-1-2-3_vs_4-5-60,84905
0,008600,09539
0,004190,93789
0,002890,85244
0,005340,73037
0,010620,94455
glass10,72510
0,008400,25590
0,012110,80127
0,010810,70941
0,011230,44015
0,024210,80937
glass20,66275
0,038600,08219
0,009640,95639
0,005320,26276
0,055290,16579
0,056110,98364
glass40,88450
0,032390,04870
0,010820,97364
0,005950,78102
0,088100,58834
0,105130,96600
glass50,98171
0,020770,01860
0,007350,99007
0,003990,93415
0,003710,82653
0,049030,98537
glass60,81775
0,036190,05522
0,003890,96832
0,002190,84785
0,015970,75062
0,019330,97622
haberman
0,500000,00000
0,264670,00000
0,847470,00000
0,000000,00000
0,000000,00000
1,00000
iris00,99000
0,000000,00667
0,000000,99512
0,000000,98974
0,000000,98462
0,000001,00000
new-thyroid1
0,955790,01174
0,043720,01299
0,973060,00831
0,951880,01232
0,855570,03741
0,95778
new-thyroid2
0,963650,01286
0,037210,01918
0,976780,01282
0,963290,01273
0,881620,04737
0,96222
page-blocks00,86218
0,001320,04711
0,001140,97410
0,000600,80336
0,008900,71380
0,009460,98685
pima
0,673560,01104
0,295850,00251
0,775870,00203
0,655070,00252
0,339580,00517
0,78680
segment0
0,987640,00089
0,005460,00079
0,996820,00046
0,987840,00046
0,977580,00311
0,99717
vehicle00,95893
0,002220,07398
0,001790,95032
0,001340,92507
0,000880,80558
0,004020,92640
vehicle10,50000
0,000000,25650
0,000000,85288
0,000000,00000
0,000000,00000
0,000001,00000
vehicle20,91706
0,007210,13427
0,007250,90883
0,004500,82162
0,022630,65150
0,025910,90526
vehicle30,50000
0,000000,25059
0,000000,85676
0,000000,00000
0,000000,00000
0,000001,00000
vowel0
0,957770,00341
0,029970,00153
0,983370,00089
0,944410,00373
0,830810,00552
0,97528
wisconsin
0,969420,00000
0,067310,00000
0,948960,00000
0,919320,00000
0,849990,00000
0,95940
yeast10,68563
0,016700,25471
0,006850,82521
0,004310,64557
0,016410,35518
0,021790,84701
yeast-2_vs_80,77391
0,000000,02077
0,000000,98927
0,000000,72831
0,000000,65905
0,000000,99783
yeast30,88513
0,008450,05565
0,001550,96865
0,000940,85996
0,007120,71990
0,004410,96609
yeast40,72049
0,035050,03693
0,002500,98105
0,001320,35105
0,037980,20228
0,023390,99106
yeast50,97526
0,011410,01711
0,002460,99115
0,001270,88271
0,028320,72541
0,038530,98875
yeast60,85958
0,054900,02049
0,002160,98952
0,001100,67849
0,104220,50594
0,095700,99047
AUCError
F valueG
MKappa
TPR
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
abalone9-180,75904
0,042430,13205
0,011470,92618
0,006640,72590
0,052410,29944
0,057420,88312
0,00885
abalone190,52962
0,072880,13905
0,014100,92470
0,008220,45632
0,086250,01961
0,009700,86509
0,01411
glass20,72865
0,033580,12164
0,008730,93245
0,004870,59142
0,078690,28919
0,068530,91885
0,00951
haberman
0,538780,00696
0,516360,00831
0,566600,01441
0,497450,00455
0,003490,00762
0,464000,01953
vehicle10,57148
0,005020,42481
0,020250,66974
0,025890,56534
0,005390,10942
0,004360,58227
0,04273
vehicle30,56474
0,003600,41134
0,016600,68693
0,020240,57130
0,008190,11846
0,008430,60382
0,03489
yeast40,79478
0,019690,09287
0,003670,95020
0,002010,71095
0,020800,25706
0,015570,91918
0,00399
yeast60,85639
0,016370,06901
0,007840,96348
0,004240,83890
0,009010,32387
0,034230,93512
0,00789
Apéndice 1 Resumen de resultados de las bases de datos
144
Resultados para submuestras al tamaño de la clase minoritaria y 5 submuestras
AU
CError
F valueG
MK
appaTP
R
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
abalone9-180,50000
0,000000,05811
0,000000,97007
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
abalone190,50000
0,000000,00767
0,000000,99615
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
ecoli-0_vs_10,97632
0,006550,02273
0,008500,96813
0,010690,97601
0,006550,95053
0,017570,97333
0,00000
ecoli10,93219
0,010300,09219
0,011160,93990
0,007200,85688
0,025900,73920
0,033640,94566
0,00768
ecoli20,88301
0,014370,08148
0,006530,95177
0,003980,83039
0,023720,68629
0,026210,95353
0,00906
ecoli30,78549
0,139060,09350
0,010570,94857
0,005090,50996
0,240590,36195
0,184700,96534
0,01574
ecoli40,69440
0,121490,05410
0,010760,97145
0,005690,45804
0,227690,34178
0,191360,98048
0,01050
glass00,82128
0,023010,19621
0,020660,85515
0,011110,75970
0,045770,54665
0,061890,86113
0,01537
glass-0-1-2-3_vs_4-5-60,87659
0,037630,09723
0,006100,93607
0,004410,85346
0,009810,72931
0,015520,93966
0,01011
glass10,71319
0,035500,27444
0,013000,78704
0,008230,68130
0,030110,39619
0,038650,79571
0,02658
glass20,50000
0,000000,07940
0,000000,95862
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
glass40,55552
0,076840,06627
0,005100,96532
0,003060,16149
0,189360,09067
0,114750,98705
0,01298
glass50,63610
0,088280,03730
0,007390,98071
0,003890,27604
0,177680,22633
0,165800,99220
0,00740
glass60,91261
0,011660,06536
0,014920,96115
0,009200,89713
0,026480,75141
0,049240,94811
0,01510
haberman
0,500000,00000
0,264670,00000
0,847470,00000
0,000000,00000
0,000000,00000
1,000000,00000
iris00,98800
0,004470,00800
0,002980,99415
0,002180,98768
0,004590,98154
0,006881,00000
0,00000
new-thyroid1
0,912860,04376
0,080000,02448
0,950060,01645
0,892170,08661
0,736520,08820
0,923330,02897
new-thyroid2
0,931750,02022
0,068840,02492
0,956720,01632
0,930390,02079
0,787050,06739
0,931110,03254
page-blocks00,88705
0,032040,05406
0,004810,97019
0,002450,78815
0,071710,67334
0,062170,97810
0,00199
pima
0,742430,02708
0,276330,01855
0,789800,01251
0,680940,02753
0,385570,04584
0,798000,01334
segment0
0,986780,00119
0,012130,00243
0,992900,00142
0,980660,00507
0,951060,00980
0,990700,00201
vehicle00,95671
0,003290,09740
0,005200,93352
0,003800,90836
0,009270,75206
0,012440,89672
0,00945
vehicle10,50000
0,000000,25650
0,000000,85288
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vehicle20,89218
0,017930,16619
0,015980,88732
0,011100,77714
0,023760,56701
0,040310,88219
0,01684
vehicle30,50000
0,000000,25059
0,000000,85676
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vowel0
0,930440,02035
0,041120,00793
0,977210,00443
0,904570,03397
0,763980,04503
0,969490,00766
wisconsin
0,967100,00721
0,068780,00655
0,947510,00512
0,920180,00792
0,847540,01430
0,953090,00684
yeast10,73115
0,016740,24771
0,005830,83356
0,003870,62970
0,013880,35242
0,018120,87242
0,00705
yeast-2_vs_80,77391
0,000000,02077
0,000000,98927
0,000000,72831
0,000000,65905
0,000000,99783
0,00000
yeast30,94163
0,004810,05108
0,004240,97111
0,002360,88528
0,019370,74919
0,023120,96548
0,00315
yeast40,51359
0,030400,03437
0,000000,98251
0,000010,01783
0,039860,01087
0,024300,99972
0,00063
yeast50,59332
0,067190,02817
0,001810,98568
0,000920,13423
0,098500,10255
0,082160,99833
0,00233
yeast60,50000
0,000000,02358
0,000000,98807
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
AUCError
F valueG
MKappa
TPR
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
abalone9-180,75439
0,029280,27549
0,019240,83001
0,014550,69623
0,038110,14971
0,026870,72674
0,01937
abalone190,63789
0,059540,29722
0,017460,82326
0,012770,58991
0,076360,01292
0,004390,70386
0,01802
glass20,65417
0,076820,33663
0,047280,77725
0,037260,57224
0,065680,11778
0,061240,67033
0,04799
haberman
0,518240,03787
0,530820,02296
0,541560,02597
0,494580,02248
0,005820,03301
0,430220,02561
vehicle10,55118
0,008150,46927
0,010880,61923
0,019210,54029
0,013540,06685
0,019660,51612
0,03195
vehicle30,56550
0,017420,44372
0,025400,64714
0,029540,56497
0,013960,10250
0,023540,54545
0,04225
yeast40,85583
0,012210,18759
0,009120,89295
0,005900,79764
0,023540,17883
0,012320,81314
0,01018
yeast60,87729
0,018780,12319
0,022620,93213
0,013830,83925
0,029800,23877
0,028780,87839
0,02348
Apéndice 1 Resumen de resultados de las bases de datos
145
Resultados para submuestras al tamaño de la clase minoritaria y 120%
submuestras
AU
CError
F valueG
MK
appaTP
R
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
abalone9-180,50485
0,010840,05811
0,000000,97007
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
abalone190,50000
0,000000,00767
0,000000,99615
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
ecoli-0_vs_10,96875
0,008830,03273
0,011320,95545
0,014380,96834
0,008630,92979
0,023490,97333
0,00000
ecoli10,93904
0,008960,09219
0,009130,94008
0,005990,85823
0,024310,73813
0,027510,94501
0,01236
ecoli20,87989
0,023750,07967
0,013830,95252
0,008450,84671
0,019310,70171
0,046320,95000
0,01281
ecoli30,89563
0,043160,08883
0,012300,94990
0,007600,73660
0,082860,53444
0,048360,94604
0,02147
ecoli40,83963
0,067800,04338
0,008050,97688
0,004290,73909
0,156920,58480
0,134550,97731
0,00877
glass00,84143
0,017400,17925
0,017700,86488
0,013330,79494
0,027850,59577
0,043490,85576
0,02266
glass-0-1-2-3_vs_4-5-60,91524
0,026450,08600
0,013460,94374
0,008580,86966
0,028010,75935
0,040000,94837
0,01115
glass10,73970
0,022980,24955
0,007960,81070
0,004740,69873
0,024110,44148
0,028510,83735
0,02198
glass20,52397
0,037390,08219
0,004160,95678
0,002620,05203
0,075200,02630
0,042210,99282
0,01000
glass40,69154
0,077040,05790
0,005300,96944
0,003040,43068
0,104200,31194
0,081820,97907
0,01024
glass50,75171
0,057340,03260
0,007410,98313
0,003910,43556
0,167220,37080
0,167640,99122
0,00636
glass60,89831
0,037170,06357
0,017430,96260
0,010420,88035
0,052770,74365
0,072310,95459
0,01896
haberman
0,500000,00000
0,264670,00000
0,847470,00000
0,000000,00000
0,000000,00000
1,000000,00000
iris00,98600
0,005480,00933
0,003650,99317
0,002670,98563
0,005620,97846
0,008431,00000
0,00000
new-thyroid1
0,941980,01656
0,063260,02293
0,960310,01503
0,940110,01817
0,803330,06142
0,934440,02761
new-thyroid2
0,934520,01187
0,070700,01372
0,954880,00933
0,933840,01068
0,791240,03203
0,926670,01730
page-blocks00,90750
0,007600,05135
0,002460,97153
0,001270,83190
0,022140,70927
0,021600,97570
0,00170
pima
0,757230,01299
0,266200,01365
0,800530,01111
0,682540,01803
0,400030,03057
0,820800,01869
segment0
0,988620,00108
0,010050,00157
0,994130,00092
0,980840,00352
0,959080,00636
0,993530,00104
vehicle00,95634
0,001310,09527
0,004920,93492
0,003590,91109
0,009440,75757
0,012020,89796
0,01063
vehicle10,50000
0,000000,25650
0,000000,85288
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vehicle20,85910
0,051770,17779
0,024020,88329
0,011810,68790
0,127290,49509
0,115140,90169
0,02596
vehicle30,50000
0,000000,25059
0,000000,85676
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vowel0
0,918900,00362
0,038490,00303
0,978770,00176
0,893610,00799
0,769700,01202
0,974850,00530
wisconsin
0,971010,00688
0,064090,00984
0,951100,00786
0,925170,00965
0,857960,02100
0,957630,01365
yeast10,73568
0,007080,24838
0,004700,83058
0,004410,64618
0,010830,36497
0,011320,85801
0,01198
yeast-2_vs_80,77391
0,000000,02077
0,000000,98927
0,000000,72831
0,000000,65905
0,000000,99783
0,00000
yeast30,93890
0,007250,05377
0,002630,96970
0,001500,86538
0,011040,72994
0,013290,96715
0,00286
yeast40,54580
0,062960,03450
0,000740,98243
0,000380,06825
0,099310,04085
0,065510,99874
0,00174
yeast50,96215
0,042430,02183
0,004000,98870
0,002090,85286
0,063790,65359
0,074530,98431
0,00301
yeast60,54568
0,064020,02332
0,000600,98819
0,000290,06875
0,104860,04936
0,077240,99931
0,00098
AUCError
F valueG
MKappa
TPR
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
abalone9-180,75445
0,028590,23118
0,025340,86169
0,018430,70280
0,045000,17584
0,027290,77519
0,02837
abalone190,54951
0,053840,19550
0,016750,89088
0,010590,51033
0,069780,01487
0,003250,80783
0,01738
glass20,69816
0,075140,26489
0,039590,83583
0,026650,60812
0,085700,14962
0,068960,74985
0,03600
haberman
0,481670,02947
0,548390,02325
0,528140,02867
0,470260,02782
-0,031770,04345
0,421330,03347
vehicle10,55594
0,009920,46430
0,020660,62441
0,029750,54413
0,010010,07334
0,013350,52282
0,04557
vehicle30,55159
0,010050,45765
0,013710,63233
0,020900,55381
0,010840,08556
0,014280,52785
0,03411
yeast40,84286
0,039560,14851
0,012650,91716
0,007870,79465
0,037630,21482
0,022910,85528
0,01327
yeast60,86071
0,033400,09515
0,016270,94876
0,009400,83032
0,025620,26059
0,031160,90808
0,01708
Apéndice 1 Resumen de resultados de las bases de datos
146
Resultados para submuestras al tamaño de la clase minoritaria y 200%
submuestras
AU
CError
F valueG
MK
appaTP
R
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
abalone9-180,50000
0,000000,05811
0,000000,97007
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
abalone190,50000
0,000000,00767
0,000000,99615
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
ecoli-0_vs_10,97514
0,007020,02455
0,008860,96563
0,011290,97462
0,006750,94660
0,018410,97333
0,00000
ecoli10,93060
0,012460,10286
0,004530,93336
0,002750,83476
0,012150,70466
0,016880,94262
0,00320
ecoli20,88774
0,021610,06957
0,013450,95871
0,007850,85733
0,032530,73485
0,053960,95987
0,00735
ecoli30,91125
0,012210,08932
0,004670,95018
0,002680,70961
0,040520,50643
0,037730,95415
0,00865
ecoli40,87005
0,076500,04339
0,005750,97683
0,003050,77090
0,107460,60805
0,081230,97601
0,00368
glass00,82907
0,009790,18419
0,007970,86057
0,007670,79176
0,013470,58717
0,018400,85133
0,02229
glass-0-1-2-3_vs_4-5-60,88123
0,034660,09623
0,013500,93670
0,008890,85908
0,021970,73423
0,038370,93867
0,00973
glass10,74950
0,018370,24370
0,021400,81362
0,016200,71126
0,034150,45829
0,052300,83201
0,02764
glass20,50808
0,018060,08219
0,006240,95694
0,003770,01895
0,042370,00530
0,011860,99590
0,00917
glass40,68347
0,088770,05792
0,004300,96931
0,002530,42713
0,171930,31413
0,113880,97905
0,01382
glass50,84780
0,090220,03169
0,006950,98321
0,003560,69754
0,189710,55637
0,185680,97854
0,00267
glass60,89267
0,041820,06064
0,011910,96451
0,007250,87381
0,020790,74990
0,044160,96108
0,01399
haberman
0,500000,00000
0,264670,00000
0,847470,00000
0,000000,00000
0,000000,00000
1,000000,00000
iris00,98200
0,004470,01200
0,002980,99122
0,002180,98153
0,004590,97231
0,006881,00000
0,00000
new-thyroid1
0,942860,00796
0,064190,01449
0,959670,00950
0,939500,00591
0,801670,03934
0,933330,02115
new-thyroid2
0,935870,01783
0,078140,02142
0,950040,01424
0,934080,01722
0,771100,05387
0,915560,02558
page-blocks00,90802
0,002960,05285
0,003000,97068
0,001600,82918
0,019760,70240
0,022360,97456
0,00111
pima
0,755720,01835
0,262270,01880
0,805180,01380
0,680880,02361
0,404510,04341
0,834000,01334
segment0
0,988150,00097
0,008150,00103
0,995240,00061
0,986050,00221
0,966930,00409
0,994140,00145
vehicle00,93745
0,039860,10048
0,007720,93247
0,003540,87460
0,077120,72771
0,054760,90258
0,01630
vehicle10,50000
0,000000,25650
0,000000,85288
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vehicle20,90533
0,006760,15528
0,013430,89553
0,011010,77945
0,023820,58791
0,026550,89916
0,02902
vehicle30,50000
0,000000,25059
0,000000,85676
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vowel0
0,937220,01863
0,035040,00663
0,980590,00372
0,918900,01829
0,798780,03450
0,974170,00670
wisconsin
0,976100,00495
0,054430,00843
0,958520,00645
0,936860,01127
0,879270,01878
0,963040,01219
yeast10,73475
0,008250,24394
0,007210,83614
0,005140,63342
0,010700,36155
0,018020,87640
0,00800
yeast-2_vs_80,77391
0,000000,02077
0,000000,98927
0,000000,72831
0,000000,65905
0,000000,99783
0,00000
yeast30,92722
0,014510,05647
0,001990,96822
0,001120,85467
0,008260,71392
0,010960,96624
0,00157
yeast40,57758
0,049780,03531
0,000900,98200
0,000470,08694
0,069140,04319
0,040340,99776
0,00151
yeast50,98491
0,005310,02088
0,000480,98916
0,000260,89949
0,018580,69500
0,011530,98361
0,00105
yeast60,62373
0,132360,02345
0,002630,98809
0,001330,21292
0,235600,15099
0,181530,99655
0,00331
AUCError
F valueG
MKappa
TPR
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
abalone9-180,77258
0,023710,21377
0,008040,87412
0,005430,71288
0,035200,19439
0,030490,79373
0,00820
abalone190,60906
0,032190,18356
0,020110,89831
0,012100,52630
0,077240,01833
0,007040,81956
0,02032
glass20,66478
0,085890,25198
0,019320,84567
0,012710,60044
0,082850,15524
0,070390,76828
0,01768
haberman
0,497310,02699
0,534830,02874
0,549300,03548
0,472760,02096
-0,029700,03379
0,448890,04263
vehicle10,55616
0,014810,44515
0,016420,64953
0,022630,54888
0,015000,08157
0,018110,55713
0,03685
vehicle30,55414
0,005500,43400
0,016260,66090
0,020400,56322
0,005830,10149
0,009030,56724
0,03108
yeast40,83811
0,040550,14016
0,010810,92229
0,006580,77654
0,023100,21568
0,020700,86532
0,01090
yeast60,85844
0,035140,09366
0,007670,94964
0,004380,83527
0,023400,26161
0,022020,90946
0,00783
Apéndice 1 Resumen de resultados de las bases de datos
147
Resultados para submuestras al tamaño de la clase minoritaria y 400%
submuestras
AU
CError
F valueG
MK
appaTP
R
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
abalone9-180,50000
0,000000,05811
0,000000,97007
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
abalone190,50000
0,000000,00767
0,000000,99615
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
ecoli-0_vs_10,97997
0,000350,01818
0,000000,97371
0,000000,97947
0,000000,95980
0,000000,97333
0,00000
ecoli10,93271
0,015080,09695
0,010220,93677
0,006740,85427
0,014320,72671
0,027910,93955
0,01207
ecoli20,88400
0,029670,06966
0,005430,95915
0,003210,83862
0,014450,72170
0,021560,96685
0,00320
ecoli30,90714
0,021120,08935
0,008390,95003
0,004890,72645
0,037200,51835
0,040900,95077
0,01036
ecoli40,83749
0,057850,04040
0,010990,97843
0,006040,79925
0,056090,64295
0,072180,97793
0,00994
glass00,83198
0,018660,17081
0,013630,87283
0,010300,79959
0,019810,61045
0,031800,87094
0,01642
glass-0-1-2-3_vs_4-5-60,88657
0,026060,09344
0,013700,93823
0,009450,86632
0,021470,74365
0,034710,93723
0,01463
glass10,73527
0,031960,25118
0,032660,80843
0,023710,70523
0,047470,44145
0,078040,82349
0,02658
glass20,52051
0,029520,08033
0,002080,95800
0,001280,04228
0,058190,02350
0,033660,99692
0,00459
glass40,82545
0,072430,05050
0,017390,97301
0,009390,65399
0,177840,49230
0,185480,97207
0,01566
glass50,92683
0,051250,02516
0,004170,98662
0,002310,81854
0,062240,68626
0,052910,98049
0,00597
glass60,89047
0,037940,05787
0,014720,96649
0,008430,86084
0,039290,74905
0,070620,96865
0,00967
haberman
0,500000,00000
0,264670,00000
0,847470,00000
0,000000,00000
0,000000,00000
1,000000,00000
iris00,98800
0,004470,00800
0,002980,99415
0,002180,98768
0,004590,98154
0,006881,00000
0,00000
new-thyroid1
0,927220,01717
0,071630,01456
0,955270,00966
0,928300,01295
0,775330,03734
0,927780,02079
new-thyroid2
0,924130,02078
0,077210,01759
0,950700,01099
0,923200,02099
0,771340,05526
0,922220,01620
page-blocks00,90620
0,004450,05172
0,002840,97128
0,001520,83732
0,017560,71104
0,020380,97419
0,00075
pima
0,745410,01309
0,267450,00730
0,798960,00678
0,683420,00706
0,399140,01403
0,817600,01337
segment0
0,989700,00102
0,008320,00169
0,995140,00099
0,984400,00199
0,966130,00666
0,994540,00187
vehicle00,96016
0,003230,08367
0,005940,94363
0,004430,91468
0,005680,78139
0,012520,91713
0,01242
vehicle10,50000
0,000000,25650
0,000000,85288
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vehicle20,90709
0,008210,15506
0,016800,89615
0,011310,77673
0,029250,58548
0,047320,90169
0,01315
vehicle30,50000
0,000000,25059
0,000000,85676
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vowel0
0,952960,00477
0,029770,00209
0,983480,00118
0,943650,00939
0,831340,01102
0,975510,00248
wisconsin
0,969320,00631
0,062930,00557
0,952060,00438
0,926670,00658
0,860370,01213
0,958060,00963
yeast10,73570
0,010660,25027
0,009280,82944
0,007290,64386
0,012640,35998
0,020760,85649
0,01301
yeast-2_vs_80,77391
0,000000,02077
0,000000,98927
0,000000,72831
0,000000,65905
0,000000,99783
0,00000
yeast30,92272
0,015430,05444
0,004000,96937
0,002230,85589
0,018470,72341
0,022650,96866
0,00377
yeast40,61332
0,125840,03356
0,001460,98288
0,000710,16466
0,187830,11370
0,133300,99762
0,00245
yeast50,98039
0,006390,02102
0,003510,98911
0,001820,88409
0,039380,68530
0,055910,98444
0,00244
yeast60,66698
0,033220,02305
0,002490,98827
0,001270,32435
0,093620,23052
0,083330,99448
0,00189
AUCError
F valueG
MKappa
TPR
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
abalone9-180,72511
0,035760,18743
0,013920,89190
0,008820,68021
0,017660,19597
0,016400,82607
0,01511
abalone190,55597
0,039620,16905
0,013310,90706
0,008130,43979
0,043240,01332
0,004070,83491
0,01348
glass20,66758
0,064630,23001
0,032900,86202
0,023140,57718
0,128800,15220
0,075050,79503
0,03927
haberman
0,486760,02412
0,537380,01261
0,550130,01265
0,465370,01927
-0,042730,03375
0,454220,01584
vehicle10,56533
0,004830,42504
0,012750,67279
0,017690,55738
0,010700,09790
0,009300,58990
0,03147
vehicle30,56084
0,002360,41629
0,020410,68304
0,024120,56332
0,006450,10742
0,007880,60133
0,04085
yeast40,81490
0,023350,12075
0,005590,93403
0,003210,76222
0,007200,23291
0,011770,88696
0,00569
yeast60,84845
0,034900,08490
0,004990,95469
0,002770,83312
0,026830,27564
0,023310,91871
0,00440
Apéndice 1 Resumen de resultados de las bases de datos
148
Resultados para submuestras al tamaño de la clase minoritaria y 600%
submuestras
AU
CError
F valueG
MK
appaTP
R
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
abalone9-180,51182
0,016840,05914
0,002300,96951
0,001260,01742
0,038950,00583
0,013040,99855
0,00324
abalone190,50000
0,000000,00767
0,000000,99615
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
ecoli-0_vs_10,97818
0,004990,02091
0,006100,97032
0,007590,97738
0,004680,95419
0,012530,97333
0,00000
ecoli10,93765
0,011890,09932
0,011250,93568
0,007790,84334
0,014390,71577
0,027640,94342
0,01781
ecoli20,88505
0,025110,06605
0,004430,96100
0,002580,86300
0,016550,74478
0,018750,96337
0,00473
ecoli30,90036
0,034090,08284
0,002390,95393
0,001330,72379
0,025330,53835
0,022460,95940
0,00496
ecoli40,85401
0,077430,03739
0,011770,97999
0,006350,82793
0,079130,67945
0,103100,97794
0,00887
glass00,83501
0,020140,17654
0,015470,86715
0,012900,79890
0,014790,60252
0,031520,86113
0,01780
glass-0-1-2-3_vs_4-5-60,89479
0,019750,08321
0,010250,94521
0,006900,88030
0,017010,77079
0,027920,94580
0,01187
glass10,74619
0,021470,24771
0,017230,81279
0,012640,69859
0,023480,44430
0,040220,84444
0,01923
glass20,54529
0,028350,08312
0,003890,95634
0,002370,05818
0,053110,02483
0,023040,99282
0,00688
glass40,83787
0,069140,04483
0,009770,97606
0,005460,66941
0,141630,52837
0,104260,97602
0,01386
glass50,92341
0,051290,02981
0,004200,98416
0,002130,76582
0,144180,62261
0,133960,97854
0,00267
glass60,85607
0,050600,05415
0,007160,96884
0,003930,85175
0,036330,75752
0,041540,97622
0,00296
haberman
0,500000,00000
0,264670,00000
0,847470,00000
0,000000,00000
0,000000,00000
1,000000,00000
iris00,98600
0,005480,00933
0,003650,99317
0,002670,98563
0,005620,97846
0,008431,00000
0,00000
new-thyroid1
0,934130,02202
0,069770,01918
0,956610,01210
0,927630,01144
0,779170,05659
0,931110,02377
new-thyroid2
0,940240,01266
0,062330,01340
0,960080,00914
0,938860,01204
0,817450,03092
0,936670,01868
page-blocks00,89800
0,009310,05296
0,003490,97064
0,001890,82657
0,019370,70028
0,023820,97492
0,00155
pima
0,739930,01507
0,272420,00852
0,794890,00939
0,679140,00385
0,388950,01178
0,811600,02100
segment0
0,989700,00106
0,006670,00104
0,996100,00061
0,987690,00154
0,972860,00422
0,995550,00110
vehicle00,95634
0,003090,08675
0,006940,94156
0,004720,90949
0,008630,77327
0,017810,91589
0,00625
vehicle10,50000
0,000000,25650
0,000000,85288
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vehicle20,90820
0,006750,15458
0,008970,89649
0,006380,77737
0,021880,58702
0,026480,90266
0,01639
vehicle30,50000
0,000000,25059
0,000000,85676
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vowel0
0,932320,02130
0,032220,00643
0,982220,00357
0,917990,01880
0,809220,03577
0,977720,00439
wisconsin
0,971570,00566
0,067030,00838
0,948740,00660
0,923290,01018
0,851720,01818
0,951760,00921
yeast10,71987
0,009600,24946
0,005440,83103
0,004390,63651
0,011230,35580
0,013630,86445
0,01066
yeast-2_vs_80,77391
0,000000,02077
0,000000,98927
0,000000,72831
0,000000,65905
0,000000,99783
0,00000
yeast30,92984
0,008790,05552
0,003110,96876
0,001720,85565
0,012610,71705
0,018060,96699
0,00137
yeast40,61831
0,048010,03531
0,001620,98198
0,000860,15536
0,068940,08520
0,041600,99665
0,00268
yeast50,97330
0,018970,02075
0,002100,98925
0,001100,88161
0,008970,68643
0,022990,98486
0,00186
yeast60,75440
0,087890,02251
0,001620,98853
0,000830,44262
0,124290,31863
0,091990,99324
0,00179
AUCError
F valueG
MKappa
TPR
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
abalone9-180,74552
0,038660,18949
0,012670,89031
0,008800,70119
0,036570,20884
0,026510,82241
0,01343
abalone190,54550
0,031580,14816
0,008250,91945
0,004910,44444
0,058970,01522
0,006890,85616
0,00796
glass20,69335
0,074090,19296
0,052720,88525
0,035990,60455
0,080630,22151
0,079660,83603
0,05863
haberman
0,505740,02423
0,515750,02616
0,574490,03495
0,475930,01293
-0,022350,02285
0,484440,04828
vehicle10,56212
0,002310,42362
0,014430,67403
0,020190,55843
0,011660,10006
0,007460,59148
0,03622
vehicle30,56281
0,003960,41204
0,021440,68676
0,023770,56911
0,007150,11557
0,015790,60476
0,03762
yeast40,81914
0,028660,12156
0,010140,93337
0,005970,76523
0,027350,23583
0,018180,88585
0,01170
yeast60,85465
0,021060,07870
0,010700,95804
0,006090,83983
0,009770,30054
0,029780,92492
0,01119
Apéndice 1 Resumen de resultados de las bases de datos
149
Resultados para submuestras al tamaño de la clase minoritaria y 200 submuestras
AU
CError
F valueG
MK
appaTP
R
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
abalone9-180,51655
0,015510,05983
0,002420,96913
0,001300,03510
0,048060,01432
0,023700,99746
0,00275
abalone190,50000
0,000000,00767
0,000000,99615
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
ecoli-0_vs_10,98034
0,000000,01818
0,000000,97371
0,000000,97947
0,000000,95980
0,000000,97333
0,00000
ecoli10,85116
0,027030,12081
0,005810,92133
0,003770,81958
0,016560,65787
0,020020,92184
0,00884
ecoli20,85804
0,023550,06958
0,003390,95900
0,001860,85109
0,015680,72793
0,017490,96261
0,00190
ecoli30,91070
0,025440,08935
0,002100,94961
0,001290,76983
0,009610,54643
0,010180,94219
0,00377
ecoli40,84929
0,062590,03151
0,004960,98325
0,002700,83818
0,036110,71003
0,038310,98358
0,00686
glass00,80743
0,029390,17480
0,015190,87067
0,011510,79269
0,018900,59948
0,034190,87355
0,01353
glass-0-1-2-3_vs_4-5-60,85929
0,014990,09637
0,004220,93692
0,002890,85320
0,010180,73103
0,011310,94326
0,00517
glass10,72497
0,027290,24487
0,020230,81249
0,013750,71458
0,034840,45731
0,051410,82487
0,02776
glass20,54487
0,052500,08312
0,003890,95641
0,002230,04257
0,058650,02294
0,040200,99385
0,00562
glass40,87305
0,075290,04957
0,007930,97332
0,004500,71972
0,131280,54757
0,084310,96905
0,01336
glass50,94634
0,053520,02700
0,003900,98555
0,002000,89606
0,101760,73095
0,101400,97561
0,00000
glass60,84874
0,054790,06064
0,005790,96508
0,003210,83212
0,030750,72919
0,033560,97405
0,00452
haberman
0,500000,00000
0,264670,00000
0,847470,00000
0,000000,00000
0,000000,00000
1,000000,00000
iris00,98200
0,004470,01200
0,002980,99122
0,002180,98153
0,004590,97231
0,006881,00000
0,00000
new-thyroid1
0,931980,00232
0,075350,00389
0,953050,00251
0,931470,00226
0,763580,01087
0,921110,00465
new-thyroid2
0,931430,00628
0,073490,00606
0,952850,00396
0,929970,00675
0,786000,01650
0,924440,00745
page-blocks00,89905
0,003580,05234
0,002950,97099
0,001590,82764
0,017940,70365
0,021290,97549
0,00112
pima
0,703190,01021
0,266930,00514
0,798620,00442
0,686780,00590
0,402450,01079
0,814800,00879
segment0
0,990120,00164
0,005110,00112
0,997020,00065
0,989110,00228
0,979060,00458
0,997170,00077
vehicle00,95847
0,002540,06972
0,003020,95338
0,002130,92724
0,001230,81531
0,007070,93261
0,00472
vehicle10,50000
0,000000,25650
0,000000,85288
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vehicle20,91958
0,005020,13662
0,008280,90780
0,005430,81142
0,016380,64097
0,024280,90908
0,00815
vehicle30,50000
0,000000,25059
0,000000,85676
0,000000,00000
0,000000,00000
0,000001,00000
0,00000
vowel0
0,951190,00267
0,029370,00268
0,983740,00150
0,940170,00565
0,830260,01443
0,976620,00261
wisconsin
0,968900,00226
0,065270,00131
0,950210,00075
0,925130,00439
0,855360,00357
0,954000,00492
yeast10,69984
0,009180,25054
0,006810,82973
0,005010,64009
0,010330,35655
0,016520,85953
0,00867
yeast-2_vs_80,77391
0,000000,02077
0,000000,98927
0,000000,72831
0,000000,65905
0,000000,99783
0,00000
yeast30,90776
0,015140,05431
0,002270,96942
0,001280,86162
0,011890,72583
0,011990,96745
0,00278
yeast40,64503
0,076990,03518
0,001110,98202
0,000570,21907
0,120610,13011
0,077690,99525
0,00181
yeast50,97724
0,008980,02048
0,000770,98940
0,000400,86469
0,008780,67958
0,013680,98611
0,00085
yeast60,64232
0,085750,02264
0,001020,98849
0,000510,29457
0,170130,21609
0,122080,99544
0,00287
AUCError
F valueG
MKappa
TPR
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
Media
Desviacion TipicaM
ediaDesviacion Tipica
abalone9-180,75559
0,036610,18503
0,006320,89336
0,003960,71346
0,024390,21870
0,019570,82569
0,00561
abalone190,56872
0,027180,18055
0,009720,90018
0,005930,44564
0,074200,01243
0,005010,82332
0,01015
glass20,75967
0,056150,13105
0,015530,92616
0,008910,63153
0,105910,32023
0,074970,90146
0,01203
haberman
0,502880,01171
0,547220,01581
0,538570,02042
0,456400,00757
-0,054050,01449
0,439110,02711
vehicle10,56561
0,006100,41797
0,018050,67935
0,022820,56391
0,009850,10906
0,009740,59784
0,03928
vehicle30,56563
0,006600,41536
0,024060,68238
0,026460,56911
0,003100,11508
0,016140,59818
0,04217
yeast40,80738
0,032110,11644
0,009910,93643
0,005670,77013
0,021780,24888
0,023030,89115
0,01094
yeast60,84670
0,037490,07843
0,003340,95832
0,001890,82104
0,024500,28510
0,011460,92603
0,00411
Apéndice 1 Resumen de resultados de las bases de datos
150
Resultados para SMOTE TamSizeOfMajClassSub5
AU
CError
F valueG
MK
appaTP
R
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
abalone9-180,65558
0,055030,11844
0,012420,93526
0,007060,57925
0,048790,21927
0,058380,91203
0,00988
abalone190,56483
0,032310,02889
0,001650,98533
0,000850,09455
0,034160,00907
0,007620,97832
0,00163
ecoli-0_vs_10,96903
0,004920,02909
0,009960,95987
0,011980,97081
0,007920,93709
0,020210,97333
0,00000
ecoli10,88291
0,020050,10888
0,005800,92739
0,004220,86877
0,009490,70888
0,013410,90864
0,01006
ecoli20,87003
0,019960,09749
0,013210,94081
0,008080,86275
0,028460,66404
0,043970,91911
0,00896
ecoli30,85762
0,031590,11428
0,006170,93370
0,003300,82375
0,039940,51841
0,042320,90034
0,00470
ecoli40,85812
0,023140,04759
0,006680,97440
0,003650,84155
0,027030,62468
0,047340,96522
0,00596
glass00,81473
0,012700,22627
0,018430,81797
0,019200,77625
0,018090,52195
0,032160,76374
0,02949
glass-0-1-2-3_vs_4-5-60,90230
0,018680,08605
0,006250,94194
0,004390,89879
0,012150,77467
0,016290,92519
0,00806
glass10,74626
0,008970,27477
0,020910,77784
0,021070,70616
0,024000,41638
0,040710,75788
0,03958
glass20,77685
0,019430,16104
0,024370,90695
0,015690,61563
0,049790,26468
0,029150,86877
0,02812
glass40,83067
0,062380,06281
0,007040,96558
0,003780,81112
0,092020,55860
0,077520,94700
0,00570
glass50,89634
0,080360,04016
0,004160,97883
0,002240,75823
0,073150,55487
0,051830,97171
0,00534
glass60,89789
0,057920,07214
0,012210,95756
0,007040,87442
0,046580,71373
0,056730,94595
0,00382
haberman
0,615470,02860
0,323910,02549
0,761170,02887
0,611120,02588
0,241130,03627
0,723560,02988
iris00,98800
0,004470,00800
0,002980,99415
0,002180,98768
0,004590,98154
0,006881,00000
0,00000
new-thyroid1
0,972380,01153
0,019530,00764
0,988280,00466
0,968920,01029
0,929390,02590
0,985560,00745
new-thyroid2
0,949370,01830
0,040930,01843
0,973950,01247
0,946880,01774
0,875950,04384
0,964440,02277
page-blocks00,90731
0,005500,14777
0,010370,91064
0,006770,88987
0,002810,49787
0,020870,84213
0,01249
pima
0,736230,02687
0,292170,01493
0,759810,01145
0,703290,01970
0,390310,03456
0,713810,01658
segment0
0,994160,00137
0,005810,00049
0,996610,00029
0,991000,00150
0,976400,00200
0,995450,00080
vehicle00,94864
0,003000,10661
0,002690,92569
0,002170,91806
0,000770,73972
0,004730,87016
0,00513
vehicle10,54893
0,028260,61389
0,05931#¡D
IV/0!
#¡DIV
/0!0,21269
0,108430,05788
0,040790,22667
0,09466
vehicle20,88785
0,001200,18012
0,005580,86628
0,004540,84023
0,005520,59660
0,011370,79453
0,00837
vehicle30,54155
0,040310,61911
0,09132#¡D
IV/0!
#¡DIV
/0!0,19733
0,126510,06855
0,069370,22079
0,14469
vowel0
0,957970,01398
0,026120,00513
0,985520,00285
0,949240,02146
0,851030,02991
0,978840,00539
wisconsin
0,963480,01118
0,063230,00334
0,914420,00437
0,941920,00396
0,864560,00700
0,961540,01305
yeast10,72612
0,014660,28544
0,006580,78533
0,005970,69538
0,006630,36361
0,011830,73706
0,01156
yeast-2_vs_80,83214
0,010030,05436
0,003080,97112
0,001700,78994
0,013820,48346
0,013380,95758
0,00328
yeast30,94283
0,005420,06306
0,007030,96388
0,004150,89855
0,009240,71513
0,026270,94717
0,00774
yeast40,77640
0,061980,06362
0,004680,96655
0,002510,66175
0,043840,30545
0,037560,95310
0,00494
yeast50,94226
0,017660,02385
0,001820,98760
0,000940,91289
0,010640,67319
0,027220,97986
0,00147
yeast60,83288
0,020140,03868
0,001550,97998
0,000830,75245
0,024930,40098
0,012660,96991
0,00221
Apéndice 1 Resumen de resultados de las bases de datos
151
Resultados para SMOTE TamSizeOfMaxClassSub5 (imbalanced)
AU
CError
F valueG
MK
appaTP
R
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
abalone9-180,69220
0,027090,24626
0,027780,85213
0,020580,65875
0,030250,13833
0,014710,76336
0,03305
abalone190,66996
0,022180,28036
0,025950,83532
0,017470,61067
0,029130,01534
0,002650,72095
0,02639
ecoli-0_vs_10,97342
0,007460,02636
0,009850,96321
0,012670,97316
0,007560,94273
0,020550,97333
0,00000
ecoli10,92011
0,026510,11184
0,011610,92395
0,008290,88124
0,013270,71229
0,027720,89314
0,01214
ecoli20,88038
0,019350,09758
0,014490,94069
0,009610,85103
0,016670,66293
0,035230,92392
0,01410
ecoli30,89536
0,016600,12622
0,010040,92498
0,006420,86814
0,013130,52822
0,022470,87442
0,01335
ecoli40,90353
0,009460,09277
0,024210,94802
0,014360,83915
0,035170,49118
0,077750,91528
0,02393
glass00,83441
0,028920,17841
0,020220,86005
0,017850,81678
0,018360,61390
0,039320,82512
0,02601
glass-0-1-2-3_vs_4-5-60,90269
0,023530,09260
0,007790,93741
0,005540,88940
0,015500,75750
0,021560,92015
0,01245
glass10,75955
0,022770,26888
0,014220,78040
0,011980,71783
0,016450,43335
0,030420,75360
0,02105
glass20,70894
0,044670,28155
0,048170,82214
0,038120,57071
0,098500,14030
0,048760,73167
0,05463
glass40,88319
0,027360,11984
0,024360,93122
0,014920,83592
0,026580,42704
0,065640,88437
0,02385
glass50,90780
0,068890,14310
0,042750,91752
0,025950,87354
0,115930,35456
0,118300,85366
0,04322
glass60,90323
0,041670,08689
0,018460,94742
0,012470,88971
0,016870,69295
0,037970,92108
0,02824
haberman
0,580540,04416
0,423920,09420
#¡DIV
/0!#¡D
IV/0!
0,459210,14790
0,174660,07155
0,552890,15532
iris00,98400
0,005480,01067
0,003650,99220
0,002670,98358
0,005620,97538
0,008431,00000
0,00000
new-thyroid1
0,950480,00998
0,043720,01493
0,973140,00962
0,939580,01412
0,852520,04300
0,963330,01601
new-thyroid2
0,942940,01461
0,069770,01356
0,954640,00967
0,935720,01411
0,799570,03201
0,926670,01817
page-blocks00,93163
0,004090,11539
0,006600,93185
0,004260,90007
0,003550,56270
0,014540,88056
0,00764
pima
0,732100,01593
0,296080,01297
0,757790,01075
0,698180,01370
0,380350,02689
0,713420,01315
segment0
0,990880,00162
0,011010,00175
0,993550,00103
0,987710,00247
0,956030,00683
0,989490,00194
vehicle00,95047
0,001810,10519
0,001180,92683
0,000870,91846
0,001470,74225
0,002660,87264
0,00139
vehicle10,55061
0,021060,62425
0,03986#¡D
IV/0!
#¡DIV
/0!0,19561
0,075680,06263
0,033620,20190
0,05923
vehicle20,89199
0,011230,18365
0,013400,86388
0,010860,83726
0,010950,58847
0,025780,79108
0,01715
vehicle30,56453
0,017360,59805
0,03543#¡D
IV/0!
#¡DIV
/0!0,23633
0,061500,09673
0,026370,24441
0,05484
vowel0
0,954790,01517
0,042730,00535
0,976030,00311
0,942840,01692
0,776620,02442
0,959910,00468
wisconsin
0,962540,01141
0,061780,00318
0,916310,00470
0,943040,00486
0,867600,00709
0,961520,01157
yeast10,72856
0,012630,28775
0,010360,78330
0,008770,69545
0,012840,36075
0,021530,73308
0,01092
yeast-2_vs_80,82346
0,024450,10754
0,027190,94075
0,016400,75462
0,040740,30969
0,037180,90295
0,02975
yeast30,95452
0,004370, 07990
0,007360,95333
0,004500,91995
0,004140,67684
0,022160,92006
0,00858
yeast40,83875
0,022930,17009
0,007160,90378
0,004320,79024
0,022360,19241
0,019110,83252
0,00743
yeast50,95016
0,017550,05322
0,007110,97174
0,003910,95081
0,010570,50583
0,032690,94639
0,00779
yeast60,84415
0,027410,09677
0,011950,94781
0,006840,83681
0,020460,26216
0,023260,90614
0,01296
Apéndice 1 Resumen de resultados de las bases de datos
152
Resultados para SMOTE TamSizeOfMinClassSub5 (imbalanced)
AU
CError
F valueG
MK
appaTP
R
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
Media
Desviacion Tipica
abalone9-180,71120
0,040460,23916
0,013440,85714
0,009930,65827
0,028470,14171
0,011190,77092
0,01659
abalone190,67121
0,023750,35156
0,026920,78344
0,021140,58806
0,047350,00992
0,002920,64892
0,02791
ecoli-0_vs_10,97758
0,003050,02273
0,004550,96831
0,005130,97588
0,003430,95070
0,008840,97333
0,00943
ecoli10,92285
0,007180,12730
0,008250,91133
0,006730,88136
0,008200,68564
0,014770,86294
0,01361
ecoli20,88895
0,022150,12366
0,018440,92244
0,012320,85333
0,014240,61418
0,042200,88519
0,02822
ecoli30,88933
0,009960,15056
0,016160,90904
0,010450,85212
0,028740,47675
0,038860,84791
0,01710
ecoli40,90344
0,044510,11435
0,003380,93461
0,002150,87758
0,042390,46095
0,030920,88599
0,00316
glass00,81425
0,011510,22720
0,012340,81817
0,010010,76968
0,015710,51628
0,026540,76906
0,01149
glass-0-1-2-3_vs_4-5-60,89983
0,021710,10467
0,014590,92854
0,010280,88589
0,021480,73225
0,037050,90174
0,02078
glass10,73818
0,031000,28955
0,020910,76258
0,017260,69953
0,025610,39149
0,045770,72582
0,01618
glass20,59781
0,067560,40062
0,041050,72651
0,037300,54028
0,064060,06295
0,035790,60362
0,04615
glass40,81541
0,030130,17763
0,049690,89272
0,034250,79605
0,037450,35555
0,055980,82402
0,05499
glass50,94195
0,010260,13364
0,017620,92317
0,011870,92669
0,010560,38460
0,022230,86049
0,01845
glass60,88921
0,035090,08992
0,018370,94513
0,012550,89153
0,017750,69130
0,043350,91676
0,02182
haberman
0,511920,01316
0,610740,06731
#¡DIV
/0!#¡D
IV/0!
0,172830,07199
0,050180,04065
0,234670,11798
iris00,98400
0,005480,01067
0,003650,99220
0,002670,98358
0,005620,97538
0,008431,00000
0,00000
new-thyroid1
0,925240,01638
0,080000,02358
0,949990,01512
0,918540,01895
0,749720,06862
0,920000,02794
new-thyroid2
0,931750,01785
0,073490,02090
0,952960,01486
0,926640,01992
0,779490,04516
0,925560,02534
page-blocks00,90201
0,007690,09580
0,004950,94467
0,003080,87167
0,005920,58970
0,012030,91215
0,00686
pima
0,763360,01252
0,278110,01090
0,770960,01283
0,721000,00686
0,421110,01616
0,721420,02471
segment0
0,987440,00309
0,014560,00432
0,991450,00256
0,983080,00223
0,942360,01617
0,986360,00519
vehicle00,94718
0,004640,11229
0,004650,92159
0,003610,91147
0,004660,72655
0,009560,86520
0,00641
vehicle10,50798
0,017850,72797
0,03472#¡D
IV/0!
#¡DIV
/0!0,02810
0,062830,01284
0,028720,02286
0,05111
vehicle20,88321
0,013710,18909
0,007490,85939
0,006590,83092
0,006080,57759
0,013230,78632
0,00999
vehicle30,50669
0,014950,73355
0,03546#¡D
IV/0!
#¡DIV
/0!0,02577
0,057620,00931
0,020830,02583
0,05775
vowel0
0,938010,01202
0,050620,00620
0,971580,00354
0,930460,00899
0,737580,02864
0,952790,00647
wisconsin
0,963620,01058
0,067350,00662
0,908360,00843
0,936540,00647
0,855360,01373
0,951420,01204
yeast10,74892
0,008000,29273
0,004140,77573
0,005570,70000
0,010870,36188
0,013170,71469
0,01517
yeast-2_vs_80,80226
0,033330,12375
0,032850,92975
0,020140,72874
0,032390,31009
0,061610,88734
0,03544
yeast30,94394
0,005360,08449
0,010680,95036
0,006660,92307
0,009970,66798
0,029680,91325
0,01279
yeast40,87467
0,017810,18490
0,028730,89407
0,017950,82436
0,015920,19730
0,035690,81425
0,02978
yeast50,95898
0,010200,06617
0,010820,96464
0,006000,95204
0,008090,44906
0,039560,93264
0,01177
yeast60,87153
0,018300,11252
0,016520,93847
0,009800,87528
0,015450,25293
0,029400,88794
0,01664
APENDICE 2
Funciones programadas para la ampliación al formato KEEL de
GureKS
En las siguientes páginas se encuentran el código de programación necesario
para adaptar la plataforma GureKS a la lectura del formato de bases de datos KEEL y
la posterior la generación de submuestras con la distribución y técnica de remuestreo
deseada.
Apéndice 2 Funciones programadas para la ampliación al formato KEEL de GureKS
154
Función encargada de leer el formato de datos y alamcenarlo en las
estructuras correspondiente
int CArbolDoc::Leer_Fic_Formato()
/* Lee el fichero de formato de los datos y configuracion de vables. (*.FOR)
*/
/* &&& Vables. Globales: Vec_Vables, n_Fic_Fmt, Ident_VD, N_Var */
{
char Fic_Fmt[L_NOM]; // Formato de los Campos a leer
int cont_var,Tot_Var; // Contador de Variables No Ignoradas y Totales
char lin[L_LIN]/*,lin_old[L_LIN]*/; // Buffer de Lectura (Linea fichero)
char lin1[L_LIN];
BOOL FIN_FICH; // Se ha tratado hasta la ultima linea del fichero
CString msg;
char *st;
char *aux;
char *aux2;
char *aux3;
CVable *p_Vable,*p_Vable_VD;
CVableF *p_VableF;
FILE *ffor;
BOOL FRAUDE_ESP; // Valor de Fraude Especificado en el fichero de formato
BOOL VD_ESP; // Variable Dependiente Especificado en el fichero de formato
int i_vableNoCont,i_vableCont;
if ((ffor=fopen(Nom_Fich_For,"r"))==NULL)
{
msg.Format("El Fichero de Formato de Datos \"%s\" NO existe",Nom_Fich_For);
AfxMessageBox((LPCSTR)msg,MB_ICONEXCLAMATION);
return(NULL);
}
Texto_Barra_Estado((LPCTSTR)" Leyendo Fichero Formato Variables...");
// Inicializacion
// -- Vables. Globales
// Formato KEEL
if(Nom_Fich_For.Right(4)==".dat") m_FormatoKEEL=TRUE;
n_Fic_Fmt=F_INDEF;
m_FormatoUCI=FALSE;
Ident_VD=-1;
// -- Vables. Locales
cont_var=0;
Tot_Var=0;
FIN_FICH=FALSE;
FRAUDE_ESP=TRUE;
VD_ESP=FALSE;
lin[0]='\0';
fgets(lin,L_LIN,ffor);
int con;
//###############
memcpy(lin1,lin,strlen(lin)+1);
if(m_FormatoKEEL)
{ //KEEL format
int contador_atributos=0;
BOOL att_list;
// @relation
//strcspn http://souptonuts.sourceforge.net/code/strcspn_strspn_example.c.html
st=lin1;
if(con=strcspn(strupr(lin),ST_KL_RELATION)==strlen(strupr(lin)))
{
msg.Format("\nError: '%s' not found!",ST_KL_RELATION);
AfxMessageBox((LPCSTR)msg,MB_ICONEXCLAMATION);
fclose(ffor);
return(NULL);
}
st=st+con;
// Read the attribute list
att_list=FALSE;
fgets(lin,L_LIN,ffor);
Apéndice 2 Funciones programadas para la ampliación al formato KEEL de GureKS
155
memcpy(lin1,lin,strlen(lin)+1);
st=lin1;
if(con=strcspn(_strupr(lin),ST_KL_ATTRIBUTE)!=strlen(_strupr(lin))){
att_list=TRUE;// true mientras quedan atributos por leer
st=st+con;
}
else
{
msg.Format("\nError: '%s' not found!",ST_KL_ATTRIBUTE);
AfxMessageBox((LPCSTR)msg,MB_ICONEXCLAMATION);
fclose(ffor);
return(NULL);
}
i_vableNoCont=i_vableCont=0;
while(att_list)// mientras sea true sigo leyendo atributos
{
st=lin1;
// @attribute
char nom_var[L_LIN];
p_Vable = new CVable;
p_VableF = new CVableF;
sscanf((st+strlen(ST_KL_ATTRIBUTE)),"%s",nom_var);
st=strstr(st,nom_var);
st+=strlen(nom_var);
p_Vable->Nom=nom_var;
p_VableF->Nom=nom_var;
/* Skip to first non-space character */
st+=SkipFirstNonSpace(st,0);
// Tratamiento de Tipos de atributos
if(st[0]=='{')
{
//tipo discreto
m_vLocalizadorTabDatos.Add(ID_T_Tab_Datos);
m_vLocalizadorVableTabDatos.Add(i_vableNoCont);
i_vableNoCont++;
char cad[80];
int cont;
st++;
// if(!(p_Vable->VD)){// la primera etiqueta para los missing
p_Vable->Vec_CatEtiq.Add("?");
// }
do{// leo lo que viene entre dos llaves
st+=SkipFirstNonSpace(st,0);
sscanf(st,"%[^,}]", cad);
p_Vable->Vec_CatEtiq.Add(cad);
st+=strlen(cad);
st+=SkipFirstNonSpace(st,0);
if(st[0]==','){
st++;
}
}while(st[0]!='}');
//Actualizo el vector de categorias
for (cont = 0; cont<p_Vable->Vec_CatEtiq.GetSize() ; cont++){
p_Vable->Vec_Cat.Add(cont);
}
}
else// tengo un entero o un real
{
//guardo en aux por si st=strstr((st),ST_KL_INTEGER))==NULL
aux=st;
if((st=strstr(_strupr(st),ST_KL_INTEGER))!=NULL)
{
//tipo discreto(entero)
m_vLocalizadorTabDatos.Add(ID_T_Tab_Datos);
m_vLocalizadorVableTabDatos.Add(i_vableNoCont);
i_vableNoCont++;
Apéndice 2 Funciones programadas para la ampliación al formato KEEL de GureKS
156
st+=strlen(ST_KL_INTEGER);
st+=SkipFirstNonSpace(st,0);
int numMinInt, numMaxInt=0;
char o[10], f[10];
// limites
if (st[0]=='['){
sscanf(st+1,"%[^','], %[^]]",o,f);
numMinInt=atoi(o);
numMaxInt=atoi(f);
}
p_Vable->Min=numMinInt;
p_Vable->Max=numMaxInt;
}
else
{
st=aux;
if((st=strstr(_strupr(st),ST_KL_REAL))!=NULL)
{
//tipo continuo(real)
m_vLocalizadorTabDatos.Add(ID_T_Tab_DatosCont);
m_vLocalizadorVableTabDatos.Add(i_vableCont);
i_vableCont++;
st+=strlen(ST_KL_REAL);
st+=SkipFirstNonSpace(st,0);
float numMinDouble, numMaxDouble=0.0;
char o[10], f[10];
if (st[0]=='['){
sscanf(st+1,"%[^','], %[^]]",o,f);
numMinDouble=(float)atof(o);
numMaxDouble=(float)atof(f);
}
}
else
{
msg.Format("\nError: Tipo de atributo NO soportado!");
AfxMessageBox((LPCSTR)msg,MB_ICONEXCLAMATION);
fclose(ffor);
return(NULL);
}
}
}
// Leer siguiente la
do{
fgets(lin,L_LIN,ffor);
memcpy(lin1,lin,strlen(lin)+1);
}while((lin[0]=='\n') && (!feof(ffor)));
if((st=strstr(_strupr(lin),ST_KL_ATTRIBUTE))==NULL)// he leido @inputs
@outputs o @data
att_list=FALSE;
//A� la variable a los vectores Vec_Vables y Vec_VablesF
Vec_Vables.Add((CObject*)p_Vable);
Vec_VablesF.Add((CObject*)p_VableF);
Tot_Var++;
}// fin del while, la lectura de atributos
// Actualizaci�el Total de Vables No Continuas y Continuas y T_Var
T_Var=Tot_Var;
T_VarCont=i_vableCont;
T_VarNoCont=i_vableNoCont;
// @inputs @outputs o @data
if((st=strstr(_strupr(lin),ST_KL_INPUTS))!=NULL){// @input ###OPCIONAL
Apéndice 2 Funciones programadas para la ampliación al formato KEEL de GureKS
157
char cad[80];
st+=strlen(ST_KL_INPUTS);
st+=SkipFirstNonSpace(st,0);
CStringArray strVecInputs;
int numAtributos=0;
do{// leo todos los atributos
sscanf(st,"%[^,]", cad);
strVecInputs.Add(cad);
strVecInputs[numAtributos].TrimRight();
st+=strlen(cad);
numAtributos++;
st+=SkipFirstNonSpace(st,0);
if(st[0]==','){
st++;
st+=SkipFirstNonSpace(st,0);
}
}while(st[0]!='\0');
//Miro si hay variables ignoradas
int i;
int j;
int contadorIgn=0;
for(i=0; i < (Vec_VablesF.GetSize()-1) ; i++)
{// -1 por el atributo Class que es de salida
BOOL esIgnorada=TRUE;
CString inputActual= ((CVableF*) Vec_VablesF.GetAt(i))->Nom;
for(j=0; j < strVecInputs.GetSize() ; j++){
CString prueba= strVecInputs.GetAt(j);
if(inputActual.CompareNoCase(prueba)) {
esIgnorada=FALSE;
break;
}
}
if(esIgnorada){
((CVable*) Vec_VablesF.GetAt(i))->Ign=TRUE;
Vec_Vables.RemoveAt(i-contadorIgn);
contadorIgn++;
}
}
N_Var=T_Var-contadorIgn;
if(numAtributos!=(Tot_Var-1))
{
msg.Format("\n Hay variables ignoradas '%s' !",ST_KL_INPUTS);
AfxMessageBox((LPCSTR)msg,MB_ICONEXCLAMATION);
}
fgets(lin,L_LIN,ffor);
}
else
{
st=aux2;
msg.Format("\n no se ha encontrado el token '%s' !",ST_KL_INPUTS);
AfxMessageBox((LPCSTR)msg,MB_ICONEXCLAMATION);
}
if((st=strstr(_strupr(lin),ST_KL_OUTPUTS))!=NULL){// @output ###OPCIONAL
BOOL estaVD = FALSE;
CString cad;
st+=strlen(ST_KL_OUTPUTS);
st+=SkipFirstNonSpace(st,0);
CStringArray strVecOutputs;
do{// leo todos los atributos
sscanf(st,"%[^,\n]", cad);
cad.TrimRight();
strVecOutputs.Add(cad);
st+=strlen(cad);
st+=SkipFirstNonSpace(st,0);
Apéndice 2 Funciones programadas para la ampliación al formato KEEL de GureKS
158
if(st[0]==','){
st++;
st+=SkipFirstNonSpace(st,0);
}
}while(st[0]!='\0');
if(strVecOutputs.GetSize()>1){
msg.Format("\nError: El problema tiene mas de una clase!");
AfxMessageBox((LPCSTR)msg,MB_ICONEXCLAMATION);
fclose(ffor);
return(NULL);
}
else{
CString vableClase=strVecOutputs.GetAt(0);
int cont1;
for (cont1 = 0; cont1<Vec_Vables.GetSize(); cont1++){
CString vableActual=((CVable*)Vec_Vables.GetAt(cont1))->Nom;
if(vableClase.CompareNoCase(vableActual)==0){
((CVable*)(Vec_Vables.GetAt(cont1)))->Vec_Cat.RemoveAt(0);
((CVable*)(Vec_Vables.GetAt(cont1)))->Vec_CatEtiq.RemoveAt(0);
VD_ESP=TRUE;
((CVable*)(Vec_Vables.GetAt(cont1)))->VD=TRUE;
NumCatVD=((CVable*)(Vec_Vables.GetAt(cont1)))-
>Vec_Cat.GetSize();
Ident_VD=cont1;
p_Vable_VD=((CVable*)(Vec_Vables.GetAt(cont1)));
break;
}
}
}
//leo nueva linea
fgets(lin,L_LIN,ffor);
char s=lin[0];
}
else
{
st=aux3;
msg.Format("\n No se ha encontrado el la variable dependiente");
AfxMessageBox((LPCSTR)msg,MB_ICONEXCLAMATION);
}
// @data
if((st=strstr(_strupr(lin),ST_KL_DATA))!=NULL){// @output
FIN_FICH=TRUE;
}
else
{
msg.Format("\nError: '%s' not found!",ST_KL_DATA);
AfxMessageBox((LPCSTR)msg,MB_ICONEXCLAMATION);
fclose(ffor);
// return(NULL);
}
// he terminado y cierro el fichero
fflush(ffor);
fclose(ffor);
return(ONGI);
// fin del formato KEEL
Apéndice 2 Funciones programadas para la ampliación al formato KEEL de GureKS
159
Función para la lectura y almacenamiento de los datos en la estructura
correspondiente y generación del .names y .data a partir de las mismas.
int CMuestra::Leer_Fic_Datos_KEEL(CString nom_fich, BOOL Modificar_Vec_Cat)
{
FILE *fdat;
CString msg;
int caso,var,cont_var,cont_var_NO_Ign;
CVableF *p_VableF;
CVable *p_Vable;
if(pDoc->Vables_Ign!=SIN_IGNORAR){
msg.Format("Opcion no contemplada para formato KEEL ");
AfxMessageBox((LPCSTR)msg,MB_ICONEXCLAMATION);
return(NULL);
}
// Traspasar los datos a la Tabla de Datos
CMiArrayGenericoBase<T_Tab_Datos> *p_fila;
CMiArrayGenericoBase<T_Tab_DatosCont> *p_filaCont;
CMiArrayGenericoBase<T_Tab_Datos> *p_fila1;//Para el .names
CMiArrayGenericoBase<T_Tab_DatosCont> *p_filaCont1;
if ((fdat=fopen(nom_fich,"r"))==NULL)
{
msg.Format("El Fichero de Datos \"%s\" NO existe",nom_fich);
AfxMessageBox((LPCSTR)msg,MB_ICONEXCLAMATION);
return(NULL);
}
Fic_Datos=nom_fich;
CString cadena;
char linea[L_LIN];
linea[0]='\0';
char *st;
fgets(linea,L_LIN,fdat);
// me situo en la linea siguiente al @data
while((strstr(_strupr(linea),ST_KL_DATA))==NULL){
fgets(linea,L_LIN,fdat);
}
for(caso=0;(fgets(linea, L_LIN, fdat)!=NULL)&&(caso<N_Casos);caso++)
{
if(((caso)%1000)==0)
{
msg.Format("Submuestra \"%s\": Leidos %ld
casos...",Extraer_solo_nombre(nom_fich),caso);
Texto_Barra_Estado((LPCTSTR)msg);
}
cont_var=0;
cont_var_NO_Ign=0;
if(Tab_Datos_fil_x_col==C_CASOSxVABLES){
p_fila=&Tab_Datos[caso];
p_filaCont=&m_Tab_DatosCont[caso];
}
st=linea;
for(var=0;var<pDoc->T_Var;var++)
{
sscanf(st,"%[^',']",cadena);
st+=strlen(cadena);
cadena.TrimRight();
if(st[0]==',')st++;
st+=SkipFirstNonSpace(st,0);
//Miro el tipo de la varibale Discreta o Continua
if(pDoc->m_vLocalizadorTabDatos[var]==ID_T_Tab_Datos)//ID_T_Tab_Datos=0
discretos y enteros
{
Apéndice 2 Funciones programadas para la ampliación al formato KEEL de GureKS
160
p_Vable=(CVable*)(pDoc->Vec_Vables[var]);
int u=0;
CString st4;
BOOL encontrado=FALSE;
if(p_Vable->Vec_Cat.GetSize()>0){
for(u=0;u<p_Vable->Vec_CatEtiq.GetSize();u++){
st4=p_Vable->Vec_CatEtiq[u];
if(cadena.CompareNoCase(st4)==0){
encontrado=TRUE;
break;
}
}
}
if(encontrado){// tngo VD o discreta
if(var==pDoc->Ident_VD){
m_vMatIdentCasoVD[u].Add((T_NCasos)caso);
p_fila->SetAt((int)(pDoc-
>m_vLocalizadorVableTabDatos[var]),(T_Tab_Datos)(u));
}
else{
p_fila->SetAt((int)(pDoc-
>m_vLocalizadorVableTabDatos[var]),(T_Tab_Datos)(u));
}
}
else{// entero
if(cadena=="?"){
p_fila->SetAt((int)(pDoc-
>m_vLocalizadorVableTabDatos[var]),(T_Tab_Datos)UnknownInt);
}
else
p_fila->SetAt((int)(pDoc-
>m_vLocalizadorVableTabDatos[var]),(T_Tab_Datos)(atoi(cadena)));
}
}
else{//ID_T_Tab_DatosCont=1 reales
if(cadena=="?"){
p_filaCont->SetAt((int)(pDoc-
>m_vLocalizadorVableTabDatos[var]),Unknown);
}
else
p_filaCont->SetAt((int)(pDoc-
>m_vLocalizadorVableTabDatos[var]),atof(cadena));
}
}
msg.Format("Submuestra \"%s\": Leidos %ld
casos",Extraer_solo_nombre(nom_fich),caso);
Texto_Barra_Estado((LPCTSTR)msg);
}
fclose(fdat);
int u=pDoc->DameNumCatVD();
int z=pDoc->NumCatVD;
if(pDoc->DameNumCatVD()!=pDoc->NumCatVD)
{
msg.Format("El nmero de categorde la VD esperadas son %d y\n\rse han encontrado
%d",
pDoc->NumCatVD,pDoc->DameNumCatVD());
AfxMessageBox(msg);
}
// Generar . data
FILE *ficheroData;
CString nombreData=Fic_Datos+".data";
ficheroData=fopen(nombreData,"w");
msg.Format("Generando el .data para %s" ,Extraer_solo_nombre(nom_fich));
Texto_Barra_Estado((LPCTSTR)msg);
Apéndice 2 Funciones programadas para la ampliación al formato KEEL de GureKS
161
int datoEntero=0;
float datoReal;
CString st2,st_ent,lin;
for(caso=0;caso<N_Casos;caso++)
{
p_fila1=&Tab_Datos[caso];
p_filaCont1=&m_Tab_DatosCont[caso];
lin.Empty();
for(var=0;var<pDoc->T_Var;var++)
{
if(pDoc->m_vLocalizadorTabDatos[var]==ID_T_Tab_Datos)//ID_T_Tab_Datos=0
discretos y enteros
{
CVable *p_VableActual=(CVable*)(pDoc->Vec_Vables[pDoc-
>m_vLocalizadorVableTabDatos[var]]);
if(p_VableActual->Vec_CatEtiq.GetSize()>0){// tengo una discreta bien
VD, bien discreta
// etiquetas
int cont=p_fila1->GetAt((int)(pDoc-
>m_vLocalizadorVableTabDatos[var]));
if(!p_VableActual->VD){
st_ent.Format("%s",p_VableActual->Vec_CatEtiq[cont]);//missing
if(var==(pDoc->T_Var)-1)
st2+=st_ent;
else
st2+=st_ent+",";
}
else{//VD
CVable *p_VableClase=(CVable*)(pDoc->Vec_Vables[pDoc-
>Ident_VD]);
st_ent.Format("%s",p_VableClase->Vec_CatEtiq[p_fila1-
>GetAt((int)(pDoc->m_vLocalizadorVableTabDatos[var]))]);
if(var==(pDoc->T_Var)-1)
st2+=st_ent;
else
st2+=st_ent+",";
}
}
else{//tengo un entero
if(var==pDoc->T_Var-1){//Caso especial
CVable *p_VableClase=(CVable*)(pDoc->Vec_Vables[pDoc-
>Ident_VD]);
st_ent.Format("%s",p_VableClase->Vec_CatEtiq[p_fila1-
>GetAt((int)(pDoc->m_vLocalizadorVableTabDatos[var]))]);
st2+=st_ent;
}
else{// entero
datoEntero=(int)(p_fila1->GetAt((int)(pDoc-
>m_vLocalizadorVableTabDatos[var])));
if(datoEntero==UnknownInt)
st_ent.Format("?");
else
st_ent.Format("%d",datoEntero);
if(var==(pDoc->T_Var)-1)
st2+=st_ent;
else
st2+=st_ent+",";
}
}
}
else{
//real
datoReal=(p_filaCont1->GetAt((int)(pDoc-
>m_vLocalizadorVableTabDatos[var])));
if(datoReal==Unknown)
st_ent.Format("?");
else
st_ent.Format("%f",datoReal);
Apéndice 2 Funciones programadas para la ampliación al formato KEEL de GureKS
162
if(var==(pDoc->T_Var)-1)
st2+=st_ent;
else
st2+=st_ent+",";
}
lin+=st2;
st2.Empty();
}
fprintf(ficheroData,"%s\n",lin);
}
fclose(ficheroData);
// Generar .names
FILE *ficheroNames;
CString nombreNames=Fic_Datos+".names";
ficheroNames=fopen(nombreNames,"w");
msg.Format("Generando el .names para %s" ,Extraer_solo_nombre(nom_fich));
Texto_Barra_Estado((LPCTSTR)msg);
CString st3,st8,st_names,line;
//primera linea de names -> las etiquetas separadas por coma
CVable *p_VableClase;
p_VableClase=(CVable*)(pDoc->Vec_Vables[pDoc->Ident_VD]);
for(int h=0;h<pDoc->NumCatVD;h++){
if(h==(pDoc->NumCatVD)-1){// ultima etiqueta acabada en punto
st3+=p_VableClase->Vec_CatEtiq[h]+".";
}
else
st3+=p_VableClase->Vec_CatEtiq[h]+", ";
}
fprintf(ficheroNames,"%s\n",st3);
// paso a las variables
for(int p=0;p<pDoc->T_Var-1;p++){// todos menos la VD que ya esta
st3.Empty();
CVable *p_VableAtributo;
p_VableAtributo=(CVable*)(pDoc->Vec_Vables[p]);
st3=p_VableAtributo->Nom+": ";
if (p_VableAtributo->Ign)
st3+="ignore.";
else{// tomo los valores
if(pDoc->m_vLocalizadorTabDatos[p]==ID_T_Tab_Datos){//ID_T_Tab_Datos=0
discretos y enteros
if(p_VableAtributo->Vec_Cat.GetSize()>0){// tengo un discreto
for(int l=1;l<p_VableAtributo->Vec_CatEtiq.GetSize();l++){
if(l==(p_VableAtributo->Vec_CatEtiq.GetSize()-1))// 1 para
no salir el missing
st3+=p_VableAtributo->Vec_CatEtiq[l]+".";
else
st3+=p_VableAtributo->Vec_CatEtiq[l]+", ";
}
}
else{// tengo un entero
st3+="discrete 0.";
for(int j=p_VableAtributo->Min;j<p_VableAtributo->Max+1;j++){
if(p_VableAtributo->Max==j){
}
else{
}
}
st3+=st8;
}
}
else{// ID_T_Tab_ContDatos real
st3+="continuous.";
}
}
fprintf(ficheroNames,"%s\n",st3);
Apéndice 2 Funciones programadas para la ampliación al formato KEEL de GureKS
163
}
fclose(ficheroNames);
return(ONGI);
}
Función encargada de crear la muestra y volcar los datos en ella a partir de las
estructuras manejadas por la función anterior.
CMuestra * CMuestra::Construir_Muestra(CString nom_fic_dat,CArbolDoc *pDoc,int
fil_x_col)
{
FILE *fdat;
int Tam_lin;
long Tam_Fich;
CFileStatus status;
CString msg;
long num_casos;
int c,ant_c;
CMuestra *p_mu;
if ((fdat=fopen(nom_fic_dat,"r"))==NULL)
{
msg.Format("El Fichero de Datos \"%s\" NO existe",nom_fic_dat);
AfxMessageBox((LPCSTR)msg,MB_ICONEXCLAMATION);
return(NULL);
}
if(pDoc->m_FormatoKEEL)
{ //KEEL format
int z=fil_x_col;
Texto_Barra_Estado((LPCTSTR)" Leyendo Datos..");
char lin[L_LIN];
lin[0]='\0';
num_casos=0;
fgets(lin,L_LIN,fdat);
while((strstr(_strupr(lin),ST_KL_DATA))==NULL){
fgets(lin,L_LIN,fdat);
}
while (fgets(lin, L_LIN, fdat) != NULL){
num_casos++;
}
}
else
{ // Formato de Datos definido para GureKS
if(nom_fic_dat.Right(4)==".lid")
.
.
.
}
fclose(fdat); // Volver al principio del fichero
if(pDoc->m_FormatoKEEL){
if(pDoc->Vables_Ign==SIN_IGNORAR)
p_mu = new CMuestra(num_casos,pDoc->T_VarNoCont,pDoc-
>T_VarCont,C_CASOSxVABLES,pDoc);
else
p_mu = new CMuestra(num_casos,pDoc->T_VarNoCont,pDoc-
>T_VarCont,fil_x_col,pDoc);
return p_mu;
}
Apéndice 2 Funciones programadas para la ampliación al formato KEEL de GureKS
164
else{
if(pDoc->Vables_Ign==SIN_IGNORAR)
p_mu = new CMuestra(num_casos,pDoc->T_Var,fil_x_col,pDoc);
else
p_mu = new CMuestra(num_casos,pDoc->N_Var,fil_x_col,pDoc);
return p_mu;
}
}
APENDICE 3
Introducción a las herramientas de desarrollo
Se muestran de una manera sencilla y sin pretender ser exhaustiva los principales
fundamentos y funcionamiento de las herramientas empleadas para el desarrollo del
proyecto, Visual Basic Express Edition 6.0 y VisualBasicScripting.
Apéndice 3 Introducción a las herramientas de desarrollo
166
Entorno de desarrollo Visual C++
Tanto para desarrollar una aplicación desde cero, como para realizar ampliaciones
o actualizaciones en otras, -como es nuestro caso-, es recomendable emplear un entorno
de desarrollo, ya que facilita el trabajo, si bien no es la única manera, ya que se puede
programar en ficheros de texto y compilarlos desde la línea de comandos.
El entorno de desarrollo elegido para la tarea de adaptar la plataforma GureKS al
formato de bases de datos KEEL, es el Visual C++ 6.0 en su versión Express Edition.
Microsoft Visual C++ es un entorno de desarrollo de aplicaciones en el lenguaje
de programación C++ para la plataforma Windows. De
dicho entorno destacan las siguientes secciones:
Menu: Posee un menú dinámico que puede
adaptarse a los diferentes estados del entorno de
desarrollo.
Menú File, dispone de algunas opciones para todos o
los últimos ficheros abiertos.
Menú Tools, se puede adaptar a las necesidades de
cada usuario.
Menú Help, encargado de ofrecer un sistema de ayuda
visual.
Barra de herramientas: Atajo de las opciones del
menú principal para proporcionar un acceso rápido. Mediante customize permite
modificar la estructura de las mismas para adaptarla a las necesidades del usuario. Se nos
permite:
Agregar un botón
Eliminar un botón
Workspace: Herramienta básica para el desarrollo de una aplicación. Muestra una
lista de las clases y recursos de los que está compuesto el
proyecto. Permite acceder de forma sencilla a los elementos
importantes del entorno de desarrollo: subrutinas y
funciones. A la izquierda se muestra la apariencia del
workspace, en la que se agrupan los ficheros de cabecera por
un lado, los ficheros fuente por otro y finalmente una tercera
zona destinada a los demás recursos del proyecto.
Una propiedad interesante es la de permitir
modificaciones en el código fuente, con tan sólo pulsar dos
veces en la función deseada.
Ilustración 65 Apariencia principal de la aplicación Visual C++ y sus principales secciones
Ilustración 66 Apariencia gráfica del workspace
Apéndice 3 Introducción a las herramientas de desarrollo
167
Desde el workspace podemos acceder mediante la pestaña FileView a los
diferentes archivos que pertenecen al proyecto abierto.
Editor del código fuente: Simplifica considerablemente el manejo del
código fuente y, por tanto, la programación. Destacan:
• La aplicación automática de sangría en los bloques entre llaves.
• Facilitar la navegación entre el código fuente mediante el cuadro de diálogo Go
To.
•Posibilidad de utilizar marcadores de texto para permitir el acceso directo.
• Se resalta la sintaxis de C++ marcando en color las palabras clave.
Ventana de presentación: La pestaña Build proporciona mensajes de estado del
compilador de Visual C++, además de mensajes de error, indicando el nombre del
archivo, el número de página y el número del error y una descripción del mismo.
• La ficha Debug muestra los mensajes emitidos por el depurador.
Proceso de compilación
Elemento de gran importancia, ya que es el encargado de compilar el código
fuente convirtiéndolo en un ejecutable. El resultado del proceso de compilación es la
generación de archivos .obj.
Para compilar tenemos dos opciones: una de la manera rápida mediante el atajo
CTRL + F7 y la otra a través del menú Build y la opción compile.
Los resultados de la compilación se muestran en la ventana de presentación,
indicando los errores y posibles errores denominados warnings.
Una vez compilados los archivos del código fuente, es necesario vincularnos con
el objetivo de agruparlos todos en un único archivo. El encargado de esto es el linker y se
encuentra en el menú Build con el Build nombreproyecto.exe.
Ejecución del programa
Una vez compilado el programa sólo falta ejecutarlo, en el menú Build, con la
opción Execute NombreProyecto.exe se activa la ejecución del proceso de vinculación.
Otra opción interesante que ofrece esta herramienta de desarrollo es la opción de
debugear, que es de una grandísima utilidad cuando la envergadura del proyecto es
grande.
Apéndice 3 Introducción a las herramientas de desarrollo
168
Depuración de errores
La depuración de errores es el nombre que recibe el proceso de eliminación de
errores de un programa informático. El debugger es una herramienta diseñada para poder
moverse entre las instrucciones, ayudando al programador a encontrar errores
algorítmicos que no sintácticos. Permite mediante una ejecución, pasó a paso, localizar
comportamientos no deseados en la aplicación e identificar las fuentes de error.
Para poder utilizar el depurador correctamente durante el proceso de ejecución de
un programa, hay que ejecutar dicho programa en
modo ‘Debug’.
El modo depuración de errores tiene su
propia apariencia física como se aprecia en la
ilustración 67.
Entorno de trabajo
El entorno de trabajo para programar
en Visual Basic Scripting está formado por
distintas secciones.
Como se desprende de la ilustración
68, el entorno de trabajo lo componen 4 zonas
diferenciadas:
Explorador de proyectos: Herramienta
de gestión que muestra una lista jerárquica de
cada proyecto abierto, a su vez también nos
muestra los componentes asociados con los
proyectos. Útil para movernos de uno a otro.
Ventana de propiedades: Muestra las
propiedades para el objeto activo, mediante la cual podemos configurar y modificar
propiedades del mismo.
Ilustración 67 Apariencia del Debugger del Visual C++
Ilustración 68 Apariencia del editor de VBScripting del excel
Apéndice 3 Introducción a las herramientas de desarrollo
169
Barra de herramientas: En ella encontraremos los botones para las funciones más
usadas.
Área de trabajo: La zona principal, en la que desarrollaremos nuestros scripts. Se
escribe el código en Visual Basic que posteriormente se ejecutará.
Detalladas las zonas y funciones de cada uno de los componentes de este entorno
de trabajo integrado en Excel, veremos la estructura que siguen estos programas.
Estructura de un programa en VBscripting
La programación en Visual Basic Scripting se rige por el paradigma de la
programación orientada a objetos. Por tanto se disponen de:
Objetos: Engloba a cualquier entidad de Office funcional y programable, por
ejemplo: botones, tablas, consultas, formularios…
Colecciones: Objetos distintos que son del mismo tipo, concepto similar a la
clase, workseets o conjunto de hojas, workbook libros Excel abiertos.
Miembros: Conjunto formado por el estado y el comportamiento que se puede
aplicar a un objeto concreto.
Casi todos los objetos pueden derivarse en otros o subobjetos menores. Esto indica
que existe una jerarquía entre los mismos, de modo, que un objeto que forma parte del
primer nivel puede derivar en un subobjeto que forma parte del siguiente nivel. Véase la
ilustración 69.
En el nivel superior encontramos el objeto
application, objeto de mayor nivel al que podemos hacer
referencia en la aplicación.
Los módulos de código constan principalmente de
tres partes:
Instrucciones.
Declaración de constantes
Declaración de variables
Las instrucciones se pueden organizar de manera que formen subrutinas y
funciones:
Sub: Procedimiento o rutina que no devuelve ningún valor, las líneas de
código que incluye realizan alguna acción, pero no devuelven o retornan ningún valor.
Ilustración 69 Jerarquía de clases en Excel
Apéndice 3 Introducción a las herramientas de desarrollo
170
Sub
...
End Sub
· Function: Realizan un cierto cálculo y retornan o devuelven un valor que puede
ser utilizado en otros módulos, el código de una función está incluido entre estas dos
líneas:
Function
…
EndFuction
Como en todo lenguaje de programación, una variable puede ser declarada en
distintos ámbitos:
Nivel de procedimiento: Válido para la función en la que se declaran, y se realiza
al comienzo.
Nivel de módulo: Estas variables son declaradas al comienzo del programa y son
utilizables en todo el programa.
Nivel público: Hay que indicar antes de la variable que es de tipo Public, estarán
disponibles para todos los procedimientos de todos los módulos.
Ilustración 70 Cuerpo de la definición de una subrutina
Ilustración 71 Ejemplo de definción de una funcion
top related