0% encontró este documento útil (0 votos)
71 vistas

Mineria WEKA

Weka es una suite de herramientas Java para el análisis de datos y minería de datos. Proporciona varios entornos de trabajo como la línea de comandos, una interfaz gráfica y herramientas para experimentación y visualización. Weka incluye técnicas de preprocesamiento, clasificación, agrupamiento, reglas de asociación y selección de atributos.
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
71 vistas

Mineria WEKA

Weka es una suite de herramientas Java para el análisis de datos y minería de datos. Proporciona varios entornos de trabajo como la línea de comandos, una interfaz gráfica y herramientas para experimentación y visualización. Weka incluye técnicas de preprocesamiento, clasificación, agrupamiento, reglas de asociación y selección de atributos.
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 18

ENTORNO DE DESARROLLO WEKA

Weka es un conjunto de librerias JAVA para la extracción de conocimientos desde bases de datos.
Es un software ha sido desarrollado bajo licencia GPL lo cual ha impulsado que sea una de las
suites más utilizadas en el área en los últimos años.

Como se puede ver en la parte inferior de la Figura 1, Weka define 4 entornes de trabajo

· Simple CLI: Entorno consola para invocar directamente con java a los paquetes de weka

· Explorer: Entorno visual que ofrece una interfaz gráfica para el uso de los paquetes

· Experimenter: Entorno centrado en la automatización de tareas de manera que se facilite la


realización de experimentos a gran escala.

· KnowledgeFlow: Permite generar proyectos de minería de datos mediante la generación de flujos


de información.

1.1 Explorer
Como se puede observar existen 6 sub-entornos de ejecución:

· Preprocess: Incluye las herramientas y filtros para cargar y manipular los datos

· Classification: Acceso a las técnicas de clasificación y regresión

· Cluster: Integra varios métodos de agrupamiento

· Associate: Incluye una pocas técnicas de reglas de asociación

· Select Attributes: Permite aplicar diversas técnicas para la reducción del número de atributos

· Visualize: En este apartado podemos estudiar el comportamiento de los datos mediante técnicas
de visualización.
Abrimos el Weka y lanzamos el Explorer. Lo primero que vamos a hacer es cargar los datos en el
área de trabajo. Para ello, pincha en el botón “Open file” del entorno “preprocess”. Seleccionamos
el fichero “weather.arff” y si todo ha ido bien veremos la pantalla de la Figura 3. Weka utiliza un
format específico de datos, el formato arff. Un fichero con este formato, no sólo contiene los datos
desde donde vamos a efectuar el aprendizaje, además incluye meta-información sobre los propios
datos, como por ejemplo el nombre y tipo de cada atributo, así como una descripción textual del
origen de los datos. Podemos convertir ficheros en texto conteniendo un registro por línea y con
los atributos separados con comas (formato csv) a ficheror arff mediante el uso de un filtro
convertidor.
Desde esta ventana podemos conocer bastantes detalles del dataset que acabamos de cargar. Por
ejemplo, el sistema nos indica que tenemos 14 registros con 5 atributos. Si seleccionamos cada
uno de los atributos, conoceremos más información del atributo en cuestión: tipo(nominal o
numérico), valores distintos, registros que no tienen información de ese atributo, el valor máximo
y mínimo (solo en atributos numéricos), y finalmente un histograma con información sobre la
distribución de los ejemplos para ese atributo, reflejando con el uso de colores la distribución de
clases de cada uno de los registros. Por ejemplo, en la Figura 3 podemos observar que el atributo
Outlook tiene tres valores diferentes (Sunny, Overcast y Rainy) siendo la distribución de [5,4,5]. En
el caso de los 5 registros donde el atributo Outlook=sunny, tenemos 3 con clase no y 2 con clase
yes2, cuando Outlook=overcast los 4 registros son yes, y finalmente cuando Outlook=rainy existen
3 con clase yes, y 2 con clase no.

Pulsando en el botón Choose en Filter, tendremos acceso a multitud de herramientas para el


preprocesamiento de datos. Estas herramientas permiten (entre otras muchas funcionalidades):

· Realizar un filtrado de atributos

· Cambiar el tipo de los atributos (discretizar o numerizar)

· Realizar muestreos sobre los datos

· Normalizar atributos numéricos


· Unificar valores de un mismo atributo

1.2 CLASSIFY
Desde esta ventana podemos conocer bastantes detalles del dataset que
acabamos de cargar. Por ejemplo, el sistema nos indica que tenemos 14 registros
con 5 atributos. Si seleccionamos cada uno de los atributos, conoceremos más
información del atributo en cuestión: tipo(nominal o numérico),
valores distintos, registros que no tienen información de ese atributo, el valor
máximo y mínimo (solo en atributos numéricos), y finalmente un histograma con
información sobre la distribución de los ejemplos para ese atributo, reflejando con
el uso de colores la distribución de clases de cada uno de los registros. Por
ejemplo, en la Figura 3 podemos observar que el atributo Outlook tiene tres
valores diferentes (Sunny, Overcast y Rainy) siendo la distribución de [5,4,5]. En el
caso de los 5 registros donde el atributo Outlook=sunny, tenemos 3 con clase no y
2 con clase yes, cuando Outlook=overcast los 4 registros son yes, y finalmente
cuando Outlook=rainy existen 3 con clase yes, y 2 con clase no.
Pulsando en el botón Choose en Filter, tendremos acceso a multitud de
herramientas para el preprocesamiento de datos. Estas herramientas permiten
(entre otras muchas funcionalidades):
· Realizar un filtrado de atributos
· Cambiar el tipo de los atributos (discretizar o numerizar)
· Realizar muestreos sobre los datos
· Normalizar atributos numéricos
· Unificar valores de un mismo atributo
Como podemos observar weka nos informa en primer lugar de algunos parámetros
del dataset. A continuación nos muestra de manera textual el modelo aprendido
(en este caso el árbol de decisión). Por ultimo nos incluye información sobre la
evaluación del modelo. En este problema, el árbol aprendido tiene una precisión
máxima (100%) por lo que todas las medidas de error son 0. Además
podemos conocer más detalles de la distribución de los ejemplos por clase en la
matriz de confusión). Podemos visualizar el árbol de una manera más atractiva si
pulsamos el botón derecho sobre el texto trees.J48 de la caja Result-list.
Seleccionamos la opción Visualize Tree, y obtendremos el árbol de decision.

3. Un problema de clasificación
Vamos a abordar problemas más complejos a partir de ahora, en particular en la
parte de preparación de datos.
3.1 Enunciado del problema. Selección de Fármaco
En este caso se trata de predecir el tipo de fármaco (drug) que se debe administrar
a un paciente afectado de rinitis alérgica según distintos parámetros/variables. Las
variables que se recogen en los historiales clínicos de cada paciente son:
· Age: Edad
· Sex: Sexo
· BP (Blood Pressure): Tensión sanguínea.
· Cholesterol: nivel de colesterol.
· Na: Nivel de sodio en la sangre.
· K: Nivel de potasio en la sangre.
Hay cinco fármacos posibles: DrugA, DrugB, DrugC, DrugX, DrugY. Se han recogido
los datos del medicamento idóneo para muchos pacientes en cuatro hospitales. Se
pretende, para nuevos pacientes, determinar el mejor medicamento a probar.
3.2 Resolución del problema
En primer lugar vamos a cargar los datos del primer hospital fichero “drug1n.arff”,
ya que al ser el de menor tamaño (200 registros), permite hacer más pruebas
inicialmente.
La primera pregunta que nos podemos hacer es ver qué fármacos son más
communes en general, para ver si todos suelen ser igualmente efectivos en
términos generales. Para ello seleccionamos el atributo drug, y de esta manera
vemos al distribución por clases. Podemos concluir que el fármaco más efectivo es
el Y, que se administra con éxito en casi la mitad de los pacientes. Una regla vulgar
sería aplicar el fármaco Y, en el caso que falle, el fármaco X, y así sucesivamente
siguiendo las frecuencias de uso con éxito.
Weka tiene un método que permite generar este modelo tan simple, es decir
asignar a todos los ejemplos la clase mayoritaria, recibe el nombre de ZeroR4 en la
familia rules. Si vamos a la parte de Classify y ejecutamos este modelo evaluamos
sobre todos los datos de entrenamiento, veremos que como era de esperar
obtenemos un clasificador de precisión 45.5%.
Modelo mucho más simple y corto que el anterior, en el que se ve la importancia
del atributo que hemos creado Na_to_K. Además si analizamos su calidad vemos
que el nuevo modelo un 100% de precisión, con lo que el modelo es mucho más
fiable que antes.
No obstante, los árboles de decisión pueden tener poda y tener porcentajes que
no son del 100% ni siquiera con los mismos datos que se han usado para el
aprendizaje. De hecho si cambiamos el método de evaluación a validación cruzada
con 10 pliegues, podremos observar que la precisión baja ligeramente (99%). Sin
embargo, tal y como vimos en la parte de teoría, este método de evaluación
es mucho más justo. Observad, que el modelo que aparece corresponde al
aprendizaje al modelo aprendido con todos los datos. Weka muestra este modelo
de manera sólo informativa, ya que no lo utiliza para la evaluación.

3.3 Filtrado de atributos


En el árbol de decisión final se puede observar que no se utilizan todos los
atributos para efectuar una clasificación, esto indica que hay atributos que no son
significativos para la resolución del problema.
Bien, en este caso probablemente los atributos no relevantes están afectando a la
calidad del método. Veamos como podemos efectuar un filtrado de atributos. Para
ello vamos a la sección Select Attributes. Esta sección esta especializada en este
proceso, y contiene una gran cantidad de técnicas diversas para realizar la
selección de atributos. Si recordamos la parte teórica, sabremos que hay dos
familias de técnicas: los wrappers, y los métodos de filtro. Dadas las características
del problema en este caso podemos probar con una técnica wrapper realizando
una búsqueda exhaustiva. Para ello, pulsamos Choose de AttributeEvaluator y
seleccionamos el método WrapperSubsetEval. Para configurarlo pulsamos en la
ventana de texto. Vamos a utilizar el propio Naive Bayes para el wrapper, por lo
que seleccionaremos es método en classifier. Por otra parte en SearchMethod,
indicamos que queremos una búsqueda exhaustiva eligiendo ExhaustiveSearch. De
esta manera tendremos la herramienta configurada tal y como aparece en la
Figura
3.4 Aprendizaje Sensible al Coste
En muchos problemas, nos encontraremos situaciones donde dependiendo el tipo
de error que cometamos tendremos un coste diferente asociado. Por ejemplo,
suponed que en un entorno bancario tenemos un modelo que nos recomienda si
conceder o no un crédito a un determinado cliente a partir de las características
propias de ese cliente. Obviamente, y desde el punto de vista del banco, es mucho
más costoso que el sistema se equivoque dando un crédito a una persona que no
lo
devuelve, que la situación contraria, denegar un crédito a un cliente que sí lo
devolvería.
En este ejemplo vamos a utilizar el dataset “credit-g.arff”. Este conjunto de datos
contiene 1.000 ejemplos que representan clientes de una entidad bancaria que
demandaron un crédito. Existen siete atributos numéricos y 13 nominales. Los
atributos de cada objeto indican información sobre el cliente en cuestión: estado
civil, edad, parado, etc., así como información del crédito: propósito del crédito,
cantidad solicitada, etc. La clase es binaria e indica si el cliente puede ser
considerado como fiable para concederle el crédito o no.
Este dataset, trae información de los costes de clasificación errónea, en concreto la
siguiente matriz de coste:

Esta tabla indica que es 5 veces más costoso si se otorga un crédito a una persona
que no lo devuelve, que la situación contraria, Bien, vamos a ver cómo podemos
evaluar los modelos con respecto a la matriz de coste en Weka.
Para ello vamos a la ventana Classify, y en Test Options, pulsamos More Options.
Hablilitamos la opcion Cost-Sensitive Evaluation. Pulsamos Set para introducir la
matriz. Indicamos el número de clases, 2, e introducimos la matriz de costes. Es
importante que pulsemos enter tras escribir las cifras ya que es bastante
quisquillosa esta ventana. Finalmente cerramos todas las ventanas.

Probemos como funcionan estos métodos. Seleccionad este paquete dejando


ZeroR como clasificador base. Además hemos de indicarle al método la matriz de
coste que ha de utilizar en el aprendizaje. Esto se hace, fijando CostMatrixSource
como Use Explicit Matriz Cost. Y en Cost Matrix introducimos la misma matriz de
coste que hemos utilizado para la evaluación. MinimizeExpectedCost lo dejamos
como falso.
El esquema resultante sería:

3.5 Combinación de Modelos


Uno de los aspectos más destacados de Weka es la gran cantidad de métodos de
combinación de modelos que posee. Estos métodos mejoran la calidad de las
predicciones mediante combinando las predicciones de varios modelos. En
realidad estos métodos implementan la estrategia de “cuatro ojos ven más que
dos”, aunque también es cierto que para que esta afirmación se cumpla los ojos
deben tener buena vista, y además no deben tener un comportamiento idéntico,
ya que en ese caso no habría mejora.
Vamos a empezar con el método Bagging. Como sabeis esta técnica se fundamenta
en construer un conjunto de n modelos mediante el aprendizaje desde n conjuntos
de datos. Cada conjunto de dato se construye realizando un muestreo con
repetición del conjunto de datos de entrenamiento.
Para seleccionar Bagging, pulsamos Choose y en Meta, tendremos el método
Bagging. Vamos a Configurarlo. En este caso las opciones más importantes son
numIterations donde marcamos el número de modelos base que queremos crear,
y Classifier, donde seleccionamos el método base con el cual deseamos crear los
modelos base.

Veamos que pasa con Boosting. Esta técnica es bastante parecida al Bagging,
aunque utiliza una estrategia más ingeniosa ya que cada iteración intenta corregir
los errores cometidos anteriormente dando más peso a los datos que se han
clasificado erróneamente.
Seleccionamos AdaBoostM1 en Meta. En este método las opciones más
importantes son también numIterations donde marcamos el número de
iteraciones máximas (es decir de modelos base), y
Classifier, donde seleccionamos el método base con el cual deseamos crear los
modelos base.
4. Un problema de agrupación
4.1 Enunciado: Agrupación de Empleados
La empresa de software para Internet “Memolum Web” quiere extraer tipologías
de empleados, con el objetivo de hacer una política de personal más
fundamentada y seleccionar a qué grupos incentivar.
Las variables que se recogen de las fichas de los 15 empleados de la empresa son:
· Sueldo: sueldo anual en euros.
· Casado: si está casado o no.
· Coche: si viene en coche a trabajar (o al menos si lo aparca en el párking de la
empresa).
· Hijos: si tiene hijos.
· Alq/Prop: si vive en una casa alquilada o propia.
· Sindic.: si pertenece al sindicato revolucionario de Internet
· Bajas/Año: media del no de bajas por año
· Antigüedad: antigüedad en la empresa
· Sexo: H: hombre, M: mujer.
Los datos de los 15 empleados se encuentran en el fichero “empleados.arff”. Se
intenta extraer
grupos de entre estos quince empleados.
4.2 Resolución del Problema
Vamos a utilizar un algoritmo de clustering para obtener grupos sobre esta
población. En primer lugar
vamos a probar con tres grupos. Para ello acudimos a la ventana Cluster. Vamos a
empezar a trabajar con el algoritmo de Kmedias. Para ello en Clusterer, pulsamos
Choose, y seleccionamos SimpleKmeans. Lo configuramos definiendo como 3 el
NumClusters.

Si pulsamos el botón derecho sobre SimpleKmeans de la parte de Result List


Podremos ver a qué Grupo va a parar cada ejemplo. Pero además, podemos
estudiar cómo se asignan los ejemplos a los clusters dependiendo de los atributos
seleccionados para dibujar la gráfica.
5. Reglas de Asociación y Dependencias
Vamos a estudiar ahora los datos del hundimiento del Titanic. Los datos se
encuentran en el fichero “titanic.arff” y corresponden a las características de los
2.201 pasajeros del Titanic. Estos datos son reales y se han obtenido de: "Report
on the Loss of the ‘Titanic’ (S.S.)" (1990), British Board of Trade Inquiry Report_
(reprint), Gloucester, UK: Allan Sutton Publishing.
Para este ejemplo sólo se van a considerar cuatro variables:
· Clase (0 = tripulación, 1 = primera, 2 = segunda, 3 = tercera)
· Edad (1 = adulto, 0 = niño)
· Sexo (1 = hombre, 0 = mujer)
· Sobrevivió (1 = sí, 0 = no)
Para ello, vamos a ver que reglas de asociación interesantes podemos extraer de
estos atributos.
Para ejecutar los métodos en Weka de reglas de asociaciación, seleccionamos la
ventana de associate.
En cada regla, tenemos la cobertura de la parte izquierda y de la regla, así como la
confianza de la regla. Podemos conocer alguna regla interesante aunque otras los
son menos. Por ejemplo, la regla 1 indica que, como era de esperar toda la
tripulación es adulta. La regla 2 nos indica lo mismo, pero teniendo en cuenta a los
varones. Parecidas conclusiones podemos sacar de las reglas 4, 5 y 6. La
regla 3 nos indica que los varones que murieron fueron en su mayoría adultos
(97%). La regla 7 destaca que la mayoría que murieron fueron adultos (97%). Y
finalmente la 10 informa que la mayoría de los muertos fueron hombres (92%).

También podría gustarte