Práctica 1 de Minería de Datos - PoliformaT - UPV

Práctica 1 de Minería de Datos - PoliformaT - UPV Práctica 1 de Minería de Datos - PoliformaT - UPV

poliformat.upv.es
from poliformat.upv.es More from this publisher

Figura 1. Una ruta en Clementine.Como se pue<strong>de</strong> ver en la parte inferior <strong>de</strong> la Figura 1, el Clementine clasifica los nodos en seiscategorías (aparte <strong>de</strong> la pestaña Favoritos, don<strong>de</strong> se incluyen los nodos más usados):• Sources (Orígenes): nodos para obtener los datos <strong>de</strong> trabajo (fuentes <strong>de</strong> datos).• Record Ops (Oper. con registros): operadores para modificar o combinar registros (filas) <strong>de</strong>distintas fuentes. Es <strong>de</strong>cir, selecciones y combinaciones.• Field Ops (Oper. con campos): operadores para modificar o combinar campos (columnas).• Graphs (Gráficos): gráficas.• Mo<strong>de</strong>lling (Mo<strong>de</strong>lado): tipos <strong>de</strong> mo<strong>de</strong>los/patrones que pue<strong>de</strong> generar Clementine• Output (Resultado): presentación <strong>de</strong> tablas, análisis <strong>de</strong> mo<strong>de</strong>los, estadísticas, exportación <strong>de</strong>datos.Las categorías han sido las mismas (salvo pequeños cambios en la nomenclatura) <strong>de</strong>s<strong>de</strong>, al menos,la versión 5.2 <strong>de</strong>l Clementine, aunque el número <strong>de</strong> nodos en cada categoría se ha idoincrementando lentamente hasta la versión 9.Pasemos a <strong>de</strong>scribir los nodos más importantes <strong>de</strong> las categorías anteriores y en las versiones en lasque están disponibles. Los nombres los damos en castellano y en inglés porque parte <strong>de</strong> la ayuda(las cosas más avanzadas) o información en webs <strong>de</strong> Clementine pue<strong>de</strong>n estar s´plo en inglés ypue<strong>de</strong> ser útil saber cómo es el nombre <strong>de</strong> los nodos en inglés:3


1.3 Operaciones con campos (Field Ops.)La siguiente figura muestra los nodos disponibles en esta categoría:Figura 4. Nodos disponibles en la categoría “Operaciones con campos”La siguiente tabla recoge una breve <strong>de</strong>scripción <strong>de</strong> cada uno <strong>de</strong> ellos:NOMBRE V5.2 V6.0 V9.0 DESCRIPCIÓNFilter (Filtrar) Permite eliminar campos no representativos o inservibles. También permiterenombrar.Derive (Derivar) Permite añadir nuevos campos <strong>de</strong>rivados como combinación <strong>de</strong> otros.Type (Tipo) Filler (Rellenar) History(Histórico)SetToFlag(Convertir amarca) Permite tipar los campos (si son discretos o continuos, si son <strong>de</strong> entrada osalida, etc.). Este paso suele ser necesario para po<strong>de</strong>r aplicar mo<strong>de</strong>los ygráficos. También se pue<strong>de</strong> utilizar para <strong>de</strong>scartar datos anómalos.Permite rellenar o sustituir campos faltantes o anómalos siguiendo unascondiciones.Permite generar campos con memoria, especialmente en series (acumuladosparciales, etc.)Permite generar nuevos campos como transformación <strong>de</strong> un valor discreto<strong>de</strong> n posibles valores a n nuevos campos booleanos (tipo flag).1.4 Gráficos (Graph)La siguiente figura muestra los nodos disponibles en esta categoría:Figura 5. Nodos disponibles en la categoría “Gráficos”La siguiente tabla recoge una breve <strong>de</strong>scripción <strong>de</strong> cada uno <strong>de</strong> ellos:NOMBRE V5.2 V6.0 V9.0 DESCRIPCIÓNGráfico (Plot) Permite representar la relación entre dos valores numéricos en dosdimensiones.Histograma(Histogram)Distribución(Distribution) Malla (Web) Colección/Recolectar (Collect)Directd Web(Malladireccional)Gráf. múltiple(multiplot) Evaluación(Evaluation) Representa un histograma <strong>de</strong> la distribución <strong>de</strong> los datos respecto a un valornumérico.Representa un histograma <strong>de</strong> la distribución <strong>de</strong> los datos respecto a un valorno numérico.Representan la fuerza <strong>de</strong> asociaciones entre distintos valores <strong>de</strong> dos o másatributos simbólicos (no numéricos). Permite ver las asociaciones entrecampos. A partir <strong>de</strong> la versión 9 integra la versión direccional.Similar al histograma, pero muestra la distribución <strong>de</strong> un valor numéricorespecto a otro.Genera un subconjunto <strong>de</strong> las asociaciones que muestra el nodo “Web”. Eneste caso, muestra sólo las conexiones entre uno o más campos “FROM” aun campo “TO”. En la versión 9, esta funcionalidad se ha integrado en laMalla.Es un <strong>de</strong>rivado <strong>de</strong>l nodo Gráfico/Plot. Permite <strong>de</strong>finir varios campos “Y”respecto a un campo “X”Variantes <strong>de</strong> los gráficos <strong>de</strong> respuesta, que permiten evaluar qué mo<strong>de</strong>lo seva a comportar mejor <strong>de</strong>pendiendo <strong>de</strong>l contexto, como los ROI (return oninvestment). Muy relacionado con el análisis ROC (Receiver OperatingCharacteristic).5


1.5 Mo<strong>de</strong>lado (Mo<strong>de</strong>lling)La siguiente figura muestra los nodos disponibles en esta categoría:Figura 6. Nodos disponibles en la categoría “Mo<strong>de</strong>lado”La siguiente tabla recoge una breve <strong>de</strong>scripción <strong>de</strong> cada uno <strong>de</strong> ellos:NOMBRE V5.2 V6.0 V9.0 DESCRIPCIÓNRed Neuronal Red neuronal multicapa con backpropagation. Dispone <strong>de</strong> muchos(Train Net)parámetros. Especialmente útil para problemas <strong>de</strong> clasificación einterpolación (tanto los campos <strong>de</strong> entrada como los <strong>de</strong> salida, la clase,pue<strong>de</strong>n ser simbólicos o numéricos). Requiere uno y sólo un atributo“SALIDA”.C5.0 (Build C5.0) Árbol <strong>de</strong> <strong>de</strong>cisión <strong>de</strong>rivado <strong>de</strong>l ID3 y el C4.5 <strong>de</strong> Quinlan. Dispone <strong>de</strong>diferentes opciones. Los campos <strong>de</strong> entrada pue<strong>de</strong>n ser simbólicos onuméricos, pero la clase ha <strong>de</strong> ser discreta. Requiere uno y sólo un atributo“SALIDA”.Tr. Kohonen Re<strong>de</strong>s Asociativas <strong>de</strong> Kohonen, conocidas también como Knets. Permiterealizar agrupamiento/conglomerado/segmentaciones (clustering). Elalgoritmo actúa sólo sobre los atributos <strong>de</strong>finidos como “ENTRADA “ (elresto se ignoran). El resultado es un conjunto <strong>de</strong> condiciones queRegression(Reg. Lineal) GRI Kmedias (TrainKmeans) A Priori Logística (Log.Regression) Árbol C&R (C&R,CART) PCA/Factorial Bietápico(TwoStep) separan/segmentan las instancias en dos o más grupos (clusters).Construye un mo<strong>de</strong>lo <strong>de</strong> regresión lineal, es <strong>de</strong>cir, una función lineal <strong>de</strong> unvalor numérico respecto uno o más atributos numéricos. Requiere uno y sóloun atributo “SALIDA”.Genera reglas <strong>de</strong> asociación orientadas <strong>de</strong> uno o más atributos (numéricoso simbólicos) o un atributo simbólico <strong>de</strong> or<strong>de</strong>nadas por support y accuracy.Método basado en el movimiento <strong>de</strong> centros. Permite realizarsegmentaciones (clustering). El algoritmo actúa sólo sobre los atributos<strong>de</strong>finidos como IN (el resto se ignoran). El resultado es un conjunto <strong>de</strong>condiciones que separan/segmentan las instancias en dos o más grupos(clusters).Este nodo <strong>de</strong>scubre reglas <strong>de</strong> asociación en los datos, en la forma “ifantece<strong>de</strong>nt(s) then consequent(s)”. Se pue<strong>de</strong> especificar confianza ysoporte.También llamada regresión nominal. Es como la regresión lineal, pero paraclasificación. Es <strong>de</strong>cir, requiere uno y sólo un atributo “SALIDA” y <strong>de</strong>be serdiscreto (nominal).Es un método <strong>de</strong> clasificación y regresión basado en árboles, originalmente<strong>de</strong>nominado CART (Classification And Regression Trees). La clase pue<strong>de</strong>ser discreta (clasificación) o continua (regresión). Requiere uno y sólo unatributo “SALIDA”.Permite realizar “Principal component analysis (PCA)” o análisis factorial.QUEST Un método para agrupamiento/conglomerado/segmentación (clustering). Aligual que el Kmeans, el algoritmo actúa sólo sobre los atributos <strong>de</strong>finidoscomo IN (el resto se ignoran). El resultado es un conjunto <strong>de</strong> condicionesque separan/segmentan las instancias en dos o más grupos (clusters). Es un tipo <strong>de</strong> árbol <strong>de</strong> <strong>de</strong>cisión, similar al C&R, pero presumiblemente máseficiente.CHAID Es un tipo <strong>de</strong> árbol <strong>de</strong> <strong>de</strong>cisión, similar al C&R, pero basado en Chicuadrado, que a<strong>de</strong>más permite particiones no binarias.CARMA Es un método <strong>de</strong> reglas <strong>de</strong> asociación. Es más flexible que A Priori o queGRI.Secuencia(Sequence) Permite reglas <strong>de</strong> asociación secuenciales, es <strong>de</strong>cir, que se <strong>de</strong>n en más <strong>de</strong>un ejemplo en tiempo posterior, p.ej. “si un cliente compra una cuchilla y unaloción para <strong>de</strong>spués <strong>de</strong>l afeitado, la próxima vez que vaya a comprar, habráun 80% <strong>de</strong> posibilida<strong>de</strong>s <strong>de</strong> que compre la crema para el afeitado". Esnecesario especificar un campo <strong>de</strong> ID, un campo <strong>de</strong> tiempo opcional y uno ovarios campos <strong>de</strong> contenido.6


Extracción <strong>de</strong>Texto (TextExtraccion)Build Rule 1.6 Resultado (Output) Permite procesar datos no estructurados o semiestructurados: documentos<strong>de</strong> texto y páginas web y extraer términos relevantes.Este nodo pue<strong>de</strong> requerir una licencia especial y la traducción <strong>de</strong> textospue<strong>de</strong> requerir una instalación aparte. La ayuda <strong>de</strong> este nodo sólo está enLa siguiente figura muestra los nodos disponibles en esta categoría:inglés en la versión 9.0.Genera un conjunto <strong>de</strong> reglas <strong>de</strong> clasificación. Los campos <strong>de</strong> entradapue<strong>de</strong>n ser simbólicos o numéricos, pero la clase ha <strong>de</strong> ser discreta.Requiere uno y sólo un atributo “SALIDA”.Figura 7. Nodos disponibles en la categoría “Resultado”La siguiente tabla recoge una breve <strong>de</strong>scripción <strong>de</strong> cada uno <strong>de</strong> ellos:NOMBRE V5.2 V6.0 V9.0 DESCRIPCIÓNTabla (Table) Muestra los datos <strong>de</strong> una ruta en una tabla.Análisis Se aña<strong>de</strong> a la salida <strong>de</strong> un mo<strong>de</strong>lo para analizar su vali<strong>de</strong>z.(Analysis)Val. globales(Set Globals) Permite calcular ciertos valores (medias, máximos, mínimos, <strong>de</strong>sviaciones)que al ejecutar el nodo están disponibles para expresiones, condiciones encualquier nodo.Matriz (Matrix) Genera una matriz <strong>de</strong> ocurrencias para los valores <strong>de</strong> dos campos. Encada una <strong>de</strong> las celdas se muestra la cantidad o el porcentaje <strong>de</strong>instancias con el para <strong>de</strong> valores <strong>de</strong> cada dimensión.Estadísticos Genera estadísticas <strong>de</strong> distribuciones <strong>de</strong> los distintos atributos.(Statistics)Especialmente útil para calcular correlaciones.Informe (Report) Permite realizar informes combinando los resultados <strong>de</strong> una ruta.Archivo Plano(File)Exportar SPSS(SPSS Export)Base <strong>de</strong> <strong>Datos</strong>(Database/ODBCOutput)ProcedimientoSPSS (SPSSProcedure) Permite exportar a fichero, también permite exportar a ficheros cachés. Exporta a ficheros <strong>de</strong> datos con el formato SPSS.Calidad (Quality) Proporciona un informe sobre la proporción <strong>de</strong> datos faltantes por campo. Permite exportar y enlazar una ruta con una fuente <strong>de</strong> bases <strong>de</strong> datos,generalmente ODBC, insertando el resultado <strong>de</strong> la ruta en una tabla. Permite ejecutar in situ en el Clementine un procedimiento estadísticogenerado en el paquete estadístico SPSS.Excel Permite lanzar una ruta al Excel.Exportar SAS Exporta a ficheros <strong>de</strong> datos con el formato SAS.(SAS Export) Auditar <strong>Datos</strong>(Data Audit) El nodo Auditar datos permite realizar un primer análisis exploratorio <strong>de</strong> losdatos. Se utiliza generalmente durante la exploración <strong>de</strong> datos iniciales, ymuestra estadísticos <strong>de</strong> resumen así como histogramas y gráficos <strong>de</strong>distribución para cada campo <strong>de</strong> datos.Editor (SolutionPublisher) El nodo Solution Publisher permite exportar rutas completas <strong>de</strong> Clementinepara po<strong>de</strong>r incrustar dichas rutas en aplicaciones externas.Pue<strong>de</strong> requerir una licencia especial para su funcionamiento. Este nodo hacambiado significativamente <strong>de</strong>s<strong>de</strong> las versiones 5.2 y 6.0.A<strong>de</strong>más <strong>de</strong> los nodos anteriores, existen nodos para los mo<strong>de</strong>los, que serepresentan con la figura <strong>de</strong> un diamante. A partir <strong>de</strong> ahora <strong>de</strong>nominaremosa estos nodos, nodos diamante, para diferenciarlos <strong>de</strong>l resto.7


2. Un primer ejemploVamos a construir la ruta <strong>de</strong> la Figura 1. En primer lugar, aparte <strong>de</strong>l Clementine, dispones <strong>de</strong> undirectorio llamado “LabKDD” con todos los ficheros <strong>de</strong> datos necesarios para realizar este boletín. Enparticular, en este primer ejemplo, vamos a trabajar con los datos acerca <strong>de</strong> los días que se hapodido jugar al tenis, <strong>de</strong>pendiendo <strong>de</strong> diversos aspectos meteorológicos. El objetivo es po<strong>de</strong>r<strong>de</strong>terminar (pre<strong>de</strong>cir) si hoy podremos jugar al tenis. Los datos <strong>de</strong> que disponemos están en elfichero: “..\LabKDD\PlayTennis\playtennis-evi<strong>de</strong>nce.txt” y son los siguientes:Sky Temperature Humidity Wind PlayTennisSunny Hot High Weak NoSunny Hot High Strong NoOvercast Hot High Weak YesRain Mild High Weak YesRain Cool Normal Weak YesRain Cool Normal Strong NoOvercast Cool Normal Strong YesSunny Mild High Weak NoSunny Cool Normal Weak YesRain Mild Normal Weak YesSunny Mild Normal Strong YesOvercast Mild High Strong YesOvercast Hot Normal Weak YesRain Mild High Strong NoAbrimos el Clementine (para ello, ve a Inicio → Programas → Clementine 9.0 → Clementine 9.0). Alabrir el programa, las dos áreas <strong>de</strong> trabajo (izquierda superior y <strong>de</strong>recha superior) te aparecen enblanco (mejor dicho, en azul y gris). Existe otra parte que incluye dos pestañas (CRISP-DM y Clases)que, <strong>de</strong> momento, no vamos a utilizar (pue<strong>de</strong>s minimizarla si quieres).Lo primero que vamos a hacer es insertar un nodo fuente <strong>de</strong> datos al área <strong>de</strong> trabajo. Para ello,pincha dos veces (o pincha una vez en el nodo y <strong>de</strong>spués otra vez en el área <strong>de</strong> trabajo) en el nodo“Archivo var.” que está en la categoría “Orígenes” (abajo a la izquierda). Te aparecerá el nodo en elárea <strong>de</strong> trabajo, como se muestra en la Figura 8:Figura 8. Insertando el primer nodo en el área <strong>de</strong> trabajo9


Para borrar un nodo, simplemente se selecciona y se pulsa la tecla “Supr”. También se pue<strong>de</strong> borrarcon el menú <strong>de</strong> contexto asociado a un nodo, el cual se abre pulsando el botón <strong>de</strong>recho sobre unnodo.Ahora vamos a conectar el nodo con una fuente <strong>de</strong> datos. Para ello, pincharemos con el botón<strong>de</strong>recho sobre el nodo ”Archivo variable” <strong>de</strong> la zona <strong>de</strong> trabajo y seleccionaremos “Edición”. En lapantalla <strong>de</strong> edición modificaremos el nombre <strong>de</strong>l fichero, el directorio don<strong>de</strong> está y la forma <strong>de</strong>importarlo (utilizando los tabuladores). Veámoslo paso por paso.Para seleccionar el fichero, simplemente pincha en los puntos suspensivos a la <strong>de</strong>recha <strong>de</strong>l campo“Fichero”. Busca el fichero “..\LabKDD\PlayTennis\playtennis-evi<strong>de</strong>nce.txt”. En la siguiente pantalla(Figura 9) se muestra don<strong>de</strong> pinchar y qué aparece una vez asignado el fichero.Figura 9. Una vez asignado el fichero <strong>de</strong> datosA continuación pincha el CheckBox “Tabulador” y asegúrate que el checkbox “Leer nombres <strong>de</strong>campo <strong>de</strong>l archivo” esté activados, como aparece en la siguiente Figura 10:10


Ahora vamos a unirlos manualmente. Para ello:Figura 13. Los dos nodos <strong>de</strong>sconectadosPara enlazar dos nodos en Clementine, se pulsa el botón <strong>de</strong>l medio <strong>de</strong>l ratónsobre el nodo origen y se arrastra el ratón hasta el nodo <strong>de</strong>stino, soltando eneste momento el botón <strong>de</strong>l medio.(si el ratón no tiene botón <strong>de</strong>l medio, también se pue<strong>de</strong> realizar pulsando el botónizquierdo y <strong>de</strong>recho a la vez)Veamos paso a paso esta <strong>de</strong>licada operación:El resultado es el siguiente:Figura 14. Enlazando dos nodosFigura 15. Dos nodos enlazadosUna vez conectados, pulsa sobre el nodo “Tabla” con el botón <strong>de</strong>recho y seleccionas “EJECUTAR”.Te <strong>de</strong>berán aparecer los datos importados en una tabla, tal y como se muestra a continuación:Figura 16. Los datos se han enganchado correctamente12


Como se muestra en la tabla, el problema que estábamos intentando tratar era el <strong>de</strong> ver los días quepo<strong>de</strong>mos jugar al tenis. Para po<strong>de</strong>r abordar este problema, hemos <strong>de</strong> <strong>de</strong>cir que los campos “Sky”,“Temperature”, “Humidity”, “Wind” son predictores (es <strong>de</strong>cir <strong>de</strong> entrada), mientras que el campo“Playtennis” es la clase a pre<strong>de</strong>cir, el resultado (es <strong>de</strong>cir la salida).Para ello vamos a añadir un nodo “Tipo”, que se encuentra en la categoría “Operaciones conCampos”. Ahora enlazamos el nodo “playtennis-evi<strong>de</strong>nce...” con el nodo “tipo”. A continuación, vamosa editar el nodo “tipo”. Para ello pinchamos con el botón <strong>de</strong>recho en “tipo” y pinchamos en “EDICIÓN”.Como vemos todos los nodos tienen dirección “Entrada”. Como la salida va a ser “playtennis”modificamos su dirección a “Salida”, como vemos en la siguiente figura:Figura 17. Tipando los atributos.Una vez hecho esto, le damos a “Aceptar” y ya estamos en disposición <strong>de</strong> intentar apren<strong>de</strong>r unmo<strong>de</strong>lo a partir <strong>de</strong> los datos, en este caso, una función, que dados unos <strong>de</strong>terminados valores <strong>de</strong> losatributos <strong>de</strong> entrada nos dé un valor para el valor <strong>de</strong> salida.Para ello añadimos un nuevo nodo “C5.0” (está en la categoría <strong>de</strong> “Mo<strong>de</strong>lado”) para construir unárbol <strong>de</strong> <strong>de</strong>cisión sobre los datos. El Clementine nos conecta el nodo “Tipo” con el nodo “C5.0”, quepasa a llamarse Playtennis, quedando el resultado como se muestra en la siguiente figura.Figura 18. Ruta resultante.Ahora ya estamos en disposición <strong>de</strong> apren<strong>de</strong>r un mo<strong>de</strong>lo (en este caso un árbol <strong>de</strong> <strong>de</strong>cisión). Paraello, cogemos carrerilla y sobre el nodo C50 (llamado Playtennis) le damos al botón <strong>de</strong>recho yseleccionamos “Ejecutar”. ¡¡¡A “minerizar”!!!!Como pue<strong>de</strong>s observar, se ha generado un nuevo icono en el área <strong>de</strong> trabajo <strong>de</strong> la <strong>de</strong>recha(pestaña <strong>de</strong> “Mo<strong>de</strong>los”, con la forma <strong>de</strong> un diamante). ¿Somos ricos?13


No, <strong>de</strong> momento. Pinchamos dos veces en el diamante <strong>de</strong> la <strong>de</strong>recha y nos aparece en el área <strong>de</strong>trabajo <strong>de</strong> la izquierda.Figura 19. Mo<strong>de</strong>lo generado y una copia en el área <strong>de</strong> trabajo.Ahora pinchamos con el botón <strong>de</strong>recho en el diamante que hemos copiado en el área <strong>de</strong> trabajo (elque aparece a la izquierda <strong>de</strong>l todo en la Figura 19) y pinchamos en “Editar”. En la pantallita que saleaparecen algunas reglas <strong>de</strong>l árbol. Para verlas todas pulsamos en “Todos”, con lo que tendremos yatodas las reglas. A<strong>de</strong>más pinchamos en el %, con lo que veremos el número <strong>de</strong> elementos que caenpor cada regla y el porcentaje <strong>de</strong> aciertos. Ahora tienes el árbol etiquetado como se muestra en lasiguiente figura:Figura 20. Árbol generado y su cobertura/confianza.14


A<strong>de</strong>más, la Figura 20 nos muestra para cada hoja cuántos ejemplos <strong>de</strong> la evi<strong>de</strong>ncia son cubiertos ycon qué confianza (en este caso el 100% en todas las ramas). ¿Cómo interpretramos el árbolanterior? Si pulsamos en “Visor”, tenemos una representación gráfica::La representación lógica <strong>de</strong>l árbol anterior sería:Figura 21. Árbol representado gráficamente.(Outlook=Sunny AND Humidity=Normal) OR (Outlook=Overcast) OR (Outlook=Rain AND Wind=Weak)Finalmente, po<strong>de</strong>mos utilizar el mo<strong>de</strong>lo para pre<strong>de</strong>cir si po<strong>de</strong>mos jugar o no jugar al tenis hoy.Supongamos que tenemos, p.ej., la instancia (Sky = rain, Temperature = cool, Humidity = high, Wind= strong). Po<strong>de</strong>mos ver en el árbol que la clase es NO, con lo que no jugaremos al tenis. No nosharemos ricos pero nos ahorraremos un constipado.Hemos acabado, <strong>de</strong> momento, con este ejemplo sencillo. Po<strong>de</strong>mos grabar lo que hemos realizadoen un fichero .str mediante “Archivo Guardar Ruta”. También, si cerramos el Clementine (aunqueno es necesario hacerlo ahora), nos permitirá (por <strong>de</strong>fecto) grabar los mo<strong>de</strong>los generados, en unfichero con nombre “Mo<strong>de</strong>losGenerados.gen”.15


3. Un problema <strong>de</strong> clasificaciónVamos a abordar problemas más complejos a partir <strong>de</strong> ahora, en particular en la parte <strong>de</strong> preparación<strong>de</strong> datos.3.1 Enunciado <strong>de</strong>l problema. Selección <strong>de</strong> FármacoEn este caso se trata <strong>de</strong> pre<strong>de</strong>cir el tipo <strong>de</strong> fármaco (drug) que se <strong>de</strong>be administrar a un pacienteafectado <strong>de</strong> rinitis alérgica según distintos parámetros/variables. Las variables que se recogen en loshistoriales clínicos <strong>de</strong> cada paciente son:• Age: Edad• Sex: Sexo• BP (Blood Pressure): Tensión sanguínea.• Cholesterol: nivel <strong>de</strong> colesterol.• Na: Nivel <strong>de</strong> sodio en la sangre.• K: Nivel <strong>de</strong> potasio en la sangre.Hay cinco fármacos posibles: DrugA, DrugB, DrugC, DrugX, DrugY. Se han recogido los datos <strong>de</strong>lmedicamento idóneo para muchos pacientes en cuatro hospitales (los ficheros están en el directorio“..\LabKDD\drugs”). Se preten<strong>de</strong>, para nuevos pacientes, <strong>de</strong>terminar el mejor medicamento a probar.3.2 Resolución <strong>de</strong>l problemaEn primer lugar vamos a coger los datos <strong>de</strong>l primer hospital, ya que al ser el <strong>de</strong> menor tamaño (200registros), permite hacer más pruebas inicialmente. Limpiamos la zona <strong>de</strong> trabajo (po<strong>de</strong>mosseleccionar y borrar todos los nodos o ir al menú Archivo -> Nueva Ruta). Los datos <strong>de</strong>l fichero“drug1n” tienen cabecera, con lo que añadiremos un nodo fuente “Archivo Var.” y al editar,indicaremos el nombre y directorio <strong>de</strong>l fichero y marcaremos el checkbox para que lea el nombre <strong>de</strong>los campos a partir <strong>de</strong> la primera línea <strong>de</strong>l fichero (es el valor por <strong>de</strong>fecto):Figura 22. Abriendo el fichero <strong>de</strong>l primer hospital16


Ahora añadiremos un nodo tabla y lo engancharemos con el nodo “Archivo Var.”. Po<strong>de</strong>mos ver losdatos ya cargados al ejecutar la tabla, como se ve en la siguiente figura:Figura 23. <strong>Datos</strong> <strong>de</strong>l primer hospitalLa primera pregunta que nos po<strong>de</strong>mos hacer es ver qué fármacos son más comunes en general, paraver si todos suelen ser igualmente efectivos en términos generales. Para ello añadimos un nodo“Distribución” en la categoría “Gráficos” y lo enlazamos con la fuente <strong>de</strong> datos “drug1n”. La situación<strong>de</strong>be ser similar a la siguiente:Figura 24. Primeros pasos analizando los fármacosSi editamos el nodo “distribución”, po<strong>de</strong>mos elegir el atributo por el cual vamos a representar elgráfico. Seleccionamos “drug” como el atributo para mostrar las distribuciones.17


Figura 25. Pasos para visualizar la distribución <strong>de</strong> los fármacosAhora ya po<strong>de</strong>mos ejecutar la “ruta” y ver la distribución <strong>de</strong>l uso <strong>de</strong> fármacos en el hospital 1.Figura 26. Distribución <strong>de</strong> los fármacos en el hospital 1Vemos que el fármaco más efectivo es el Y, que se administra con éxito en casi la mitad <strong>de</strong> lospacientes. 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 <strong>de</strong> uso con éxito. Con la herramienta Clementine seguroque lo po<strong>de</strong>mos hacer mucho mejor...Apliquemos lo mismo que hemos realizado en el ejemplo anterior. Intentemos generar un árbol <strong>de</strong><strong>de</strong>cisión. Construyamos y ejecutemos una ruta con un nodo “Tipo” (don<strong>de</strong> el atributo drug se hapuesto como “salida”) y con un nodo C5.0. Añadamos el mo<strong>de</strong>lo generado al área <strong>de</strong> trabajo como seve en la siguiente figura:Figura 27. Realización <strong>de</strong> un mo<strong>de</strong>lo directamente sobre los datos18


El mo<strong>de</strong>lo resultante es el siguiente (para verlo sólo tienes que pinchar con el botón <strong>de</strong>recho en eldiamante y EDITAR. Una vez allí mostrar “Todos” los niveles y también el %):Figura 28. Árbol <strong>de</strong> <strong>de</strong>cisión directamente sobre los datosComo po<strong>de</strong>mos observar, el árbol tiene bastantes ramas (en concreto 13). Po<strong>de</strong>mos ver cuál es elacierto (también <strong>de</strong>nominado precisión o accuracy) <strong>de</strong> este árbol respecto a los datos <strong>de</strong>entrenamiento. Para ello, conectamos el nodo “Tipo” al nodo diamante “Drug” y éste a un nuevo nodo“Análisis” <strong>de</strong> la categoría “Resultado”, como se ve en la siguiente figura:Figura 29. Ruta para analizar la calidad <strong>de</strong> un mo<strong>de</strong>loSi ejecutamos el nodo “análisis” (con el menú contextual pulsando el botón <strong>de</strong>recho) obtenemos lossiguientes resultados:19


Figura 30. Calidad <strong>de</strong>l mo<strong>de</strong>lo generado para los datos <strong>de</strong> entrenamientoCon lo que tenemos un 96,5% <strong>de</strong> acierto. Es <strong>de</strong>cir un error <strong>de</strong> sólo el 3,5% sobre los datos <strong>de</strong>entrenamiento. Este mo<strong>de</strong>lo es muchísimo mejor que sí sólo nos guiamos por la distribución, que nosdaría un error <strong>de</strong> más <strong>de</strong>l 50% (el 54,5% <strong>de</strong> las veces el medicamento DRUGY no es el a<strong>de</strong>cuado).De todas maneras, es posible hacerlo mejor... ¿pero cómo? ¿con otro tipo <strong>de</strong> algoritmo <strong>de</strong>aprendizaje, una red neuronal, p.ej.?Es posible que otros mo<strong>de</strong>los (p.ej. las re<strong>de</strong>s neuronales) dieran mejor resultado (ya loprobaremos), pero el asunto aquí es que igual no hemos examinado suficientemente los datos <strong>de</strong>entrada.Vamos a analizar, con más <strong>de</strong>tenimiento, los atributos <strong>de</strong> entrada <strong>de</strong>l problema. Es posible que sepuedan establecer mejores mo<strong>de</strong>los si combinamos algunos atributos. Po<strong>de</strong>mos analizar pares <strong>de</strong>atributos utilizando diferentes gráficos.Para comparar los atributos discretos, el gráfico “Malla” suele ser conveniente. Creemos un nodo“malla” y enganchemos el nodo <strong>de</strong> fuentes <strong>de</strong> datos “drug1n” con él. Al editarlo, <strong>de</strong>cimos que vamos aexaminar los campos discretos (Sex, BP, Cho, Drug):Figura 31. Configurando un nodo mallaUsaremos valores “Absolutos”. Ahora ejecutaremos el nodo:20


Figura 32. Relación (asociaciones) entre los atributos discretos Sex x BP x Cho x Drug con un nivel <strong>de</strong> 5(izquierda) y uno <strong>de</strong> 35 (<strong>de</strong>recha)Las líneas más gruesas representan asociaciones más fuertes. A un nivel absoluto <strong>de</strong> 5 no parecever ninguna relación especial entre los distintos valores <strong>de</strong> los atributos discretos, exceptuando laclase (valor <strong>de</strong> salida “drug”), que va <strong>de</strong>creciendo la intensidad <strong>de</strong> una manera regular para losfármacos menos usuales. Pero si movemos el límite a 35 po<strong>de</strong>mos ver algunas cosas interesantes: lapresión “High” y “Low” está más asociada a hombres que a mujeres (sólo se asocia la presión “High”).En cualquier caso, este tipo <strong>de</strong> gráfico nos permite conocer un poco mejor la relación entre losatributos discretos (no numéricos) pero no parece aportar mucha información <strong>de</strong> cómo po<strong>de</strong>mosintentar mejorar el mo<strong>de</strong>lado.Estudiemos la relación que hay entre los atributos continuos (numéricos) y su influencia en laclase. Para ello vamos a utilizar el nodo “gráfico” <strong>de</strong> la categoría “gráficos”. Añadimos el nodo al área<strong>de</strong> trabajo y lo enganchamos con el nodo <strong>de</strong> entrada “drug1n”. Lo editamos y seleccionaremos quequeremos comparar el Na y el K. Para ello al editar el nodo “gráfico” pondremos en el Campo X elcampo Na, en el Campo Y el campo K y en el “Superponer” la clase Drug, tanto en “color” como en“forma”. Lo <strong>de</strong>más se <strong>de</strong>ja por <strong>de</strong>fecto, como se ve en la siguiente figura:Figura 33. Editando un nodo GráficoEn la pestaña <strong>de</strong> “Aspecto” po<strong>de</strong>mos cambiar el fondo <strong>de</strong>l gráfico a color blanco, para que se veanmás claros los colores. El resultado al ejecutar el gráfico es el siguiente:21


Figura 34. Resultado <strong>de</strong> un nodo Gráfico (Na x K x Drug)En este gráfico sí que se ven algunas características muy significativas. Parece haber una claraseparación lineal entre una relación K/Na alta y una relación K/Na baja. De hecho, para lasconcentraciones K/Na bajas, el fármaco Y es el más efectivo <strong>de</strong> una manera clara y parece mostrarseque por encima <strong>de</strong> un cierto cociente K/Na ese medicamento <strong>de</strong>ja <strong>de</strong> ser efectivo y se <strong>de</strong>be recurrir alos otros cuatro.Po<strong>de</strong>mos utilizar este conocimiento que acabamos <strong>de</strong> extraer para mejorar nuestros mo<strong>de</strong>los.Hemos establecido que el medicamento a administrar <strong>de</strong>pen<strong>de</strong> en gran medida <strong>de</strong>l cocienteentre K/Na. Por tanto, vamos a realizar un nuevo mo<strong>de</strong>lo que utilice este cociente. Para ello, vamos acrear un nuevo atributo <strong>de</strong>rivado (también llamados atributos pick & mix) mediante el nuevo nodo“Derivar” <strong>de</strong> la categoría “Oper. con campos”, que enganchamos con el nodo drug1n.Figura 35. Definiendo un atributo <strong>de</strong>rivadoAhora duplica (para duplicar un nodo, en el menú contextual con el botón <strong>de</strong>recho pulsamos en“copiar” y luego en el área <strong>de</strong> trabajo pulsamos “pegar”) los nodos Tipo y el nodo C5.0 Drug que22


teníamos <strong>de</strong> antes y engánchalos al ruta que sale <strong>de</strong>l nodo Na_to_Ka. Cambia el nombre <strong>de</strong>l nodoDrug (C5.0) a Drug2, para no liarte. Para ello, pulsa el botón <strong>de</strong>recho sobre “Cambiar Nombre yAnotaciones”:Figura 36. Cambiando el nombre <strong>de</strong>l nodoAhora vamos a la pestaña “Mo<strong>de</strong>lo” y cambiamos el nombre <strong>de</strong>l campo <strong>de</strong> salida, como se ve en lasiguiente figura:Figura 37. Cambiando el nombre <strong>de</strong>l mo<strong>de</strong>lo a generarAhora ejecuta ese nodo y te generará un nuevo mo<strong>de</strong>lo “Drug2”. Añá<strong>de</strong>lo al área <strong>de</strong> trabajo,engánchalo con el nodo “Tipo” <strong>de</strong> abajo y aña<strong>de</strong> un nodo <strong>de</strong> “Análisis” como hicimos con el primermo<strong>de</strong>lo. El grafo <strong>de</strong> rutas resultante <strong>de</strong>be ser el <strong>de</strong> la siguiente figura:Figura 38. Rutas realizadas para el problema <strong>de</strong>l fármaco23


A<strong>de</strong>más si analizamos su calidad con el nodo <strong>de</strong> análisis, tenemos:Figura 41. Calidad <strong>de</strong>l segundo mo<strong>de</strong>lo que utiliza el atributo <strong>de</strong>rivado Na_to_KTenemos con el nuevo mo<strong>de</strong>lo un 99.5% <strong>de</strong> precisión, con lo que el mo<strong>de</strong>lo es mucho más fiable queantes. La precisión no es exactamente 100% en este caso porque hay un ejemplo con Na_to_K =14,642. El árbol lo toma sólo con dos dígitos 14,64 y por tanto le asigna DrugX, mientras que elanálisis lo toma con los tres dígitos y le asigna DrugY, ya que la regla principal <strong>de</strong>pen<strong>de</strong> <strong>de</strong> si esmayor o menor <strong>de</strong> 14,64.No obstante, los árboles <strong>de</strong> <strong>de</strong>cisión pue<strong>de</strong>n tener poda y tener porcentajes que no son <strong>de</strong>l 100%ni siquiera con los mismos datos que se han usado para el aprendizaje. Todos estos <strong>de</strong>talles lostrataremos más a<strong>de</strong>lante. De hecho, como veremos, los mo<strong>de</strong>los los evaluaremos con datos <strong>de</strong>validación/prueba, nunca con los mismos datos <strong>de</strong> entrenamiento, como hemos hecho ahora.Ahora graba la ruta en un fichero “.str”, p.ej. “drug1.str”, porque volveremos sobre esteproblema.4. Un problema <strong>de</strong> agrupación4.1 Enunciado: Agrupación <strong>de</strong> EmpleadosLa empresa <strong>de</strong> software para Internet “Memolum Web” quiere extraer tipologías <strong>de</strong> empleados, con elobjetivo <strong>de</strong> hacer una política <strong>de</strong> personal más fundamentada y seleccionar a qué grupos incentivar.Las variables que se recogen <strong>de</strong> las fichas <strong>de</strong> los 15 empleados <strong>de</strong> 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 <strong>de</strong> la empresa).• Hijos: si tiene hijos.• Alq/Prop: si vive en una casa alquilada o propia.• Sindic.: si pertenece al sindicato revolucionario <strong>de</strong> Internet• Bajas/Año: media <strong>de</strong>l nº <strong>de</strong> bajas por año• Antigüedad: antigüedad en la empresa• Sexo: H: hombre, M: mujer.Los datos <strong>de</strong> los 15 empleados se encuentran en el directorio “..\LabKDD\empleados\empleados.txt”).Se intenta extraer grupos <strong>de</strong> entre estos quince empleados.4.2 Resolución <strong>de</strong>l ProblemaEn primer lugar vamos a leer los datos <strong>de</strong> los empleados. Limpiamos la zona <strong>de</strong> trabajo o creamosuna nueva ruta. Los datos <strong>de</strong>l fichero “empleados” tienen cabecera y están tabulados, con lo que25


añadiremos un nodo fuente “Archivo Var.” y al editar, indicaremos el nombre y directorio <strong>de</strong>l fichero ymarcaremos el checkbox para que obtenga el nombre <strong>de</strong> los atributos a partir <strong>de</strong> la primera línea <strong>de</strong>lfichero y a<strong>de</strong>más marcaremos el checkbox Tabulador:Figura 42. Abriendo el fichero fuente empleados.txtA continuación añadimos un nodo “Tipo” y lo enganchamos. Todos los atributos <strong>de</strong>berían ser <strong>de</strong>“ENTRADA” exceptuando el número <strong>de</strong> ejemplo (#Ej), que es irrelevante y pondremos “NINGUNA”,como se muestra en la siguiente figura:Figura 43. Tipando los datos <strong>de</strong> los empleadosAhora vamos a utilizar un algoritmo <strong>de</strong> clustering para obtener grupos sobre esta población. En primerlugar vamos a probar con tres grupos. Para ello añadimos un nodo Kmedias (en mo<strong>de</strong>lado), loenganchamos al nodo Tipo y modificamos el campo “Número <strong>de</strong> conglomerados” a 3, también26


marcamos que nos genere el campo <strong>de</strong> distancia y que nos muestra la proximidad <strong>de</strong>conglomerados, como se ve en la siguiente figura:Figura 44. Determinando el número <strong>de</strong> clustersAhora po<strong>de</strong>mos ejecutar la ruta, obteniendo un nodo diamante K-medias. Lo po<strong>de</strong>mos añadir yenganchar al nodo Tipo, como se muestra en la siguiente figura:Figura 45. Ruta para el problema <strong>de</strong> los empleadosSi examinamos el nodo diamante Kmeans vemos qué características tiene cadacluster/conglomerados. A continuación, se muestra <strong>de</strong> una manera más resumida a cómo lo muestrael Clementine (que incluye <strong>de</strong>sviaciones y distancias):cluster 1 cluster 2 cluster 35 examples 4 examples 6 examplesSueldo : 226000Casado : No -> 0.8Sí -> 0.2Coche : No -> 0.8Sí -> 0.2Hijos : 0Alq/Prop : Alquiler -> 1.0Sindic. : No -> 0.8Sí -> 0.2Bajas/Año : 8Antigüedad : 8Sexo : H -> 0.6Sueldo : 225000Casado : No -> 1.0Coche : Sí -> 1.0Hijos : 0Alq/Prop : Alquiler -> 0.75Prop -> 0.25Sindic. : Sí -> 1.0Bajas/Año : 2Antigüedad : 8Sexo : H -> 0.25M -> 0.75Sueldo : 188333Casado : Sí -> 1.0Coche : Sí -> 1.0Hijos : 2Alq/Prop : Alquiler -> 0.17Prop -> 0.83Sindic. : No -> 0.67Sí -> 0.33Bajas/Año : 5Antigüedad : 8Sexo : H -> 0.83M -> 0.1727


Po<strong>de</strong>mos verlo <strong>de</strong> una manera gráfica tal y como lo muestra el Clementine en la pestaña <strong>de</strong> Visor:Figura 46. Visualización gráfica <strong>de</strong> las distribuciones por grupos formados.En esta visualización gráfica po<strong>de</strong>mos ver a<strong>de</strong>más a qué campos el K-medias les asigna mayor omenor “importancia” a la hora <strong>de</strong> haber realizado los grupos.Si añadimos un nodo tabla a la salida <strong>de</strong>l nodo diamante Kmedias po<strong>de</strong>mos observar quéejemplos exactamente han caído en qué clúster.28


Figura 47. Ejemplos agrupados por clusters.Po<strong>de</strong>mos ver a qué conglomerado va a parar cada ejemplo. Pero a<strong>de</strong>más, po<strong>de</strong>mos ver la distanciaal centro <strong>de</strong> su conglomerado. Cuanto menor es ese valor la pertenencia a su conglomerado es másfuerte. En cambio, cuanto mayor es ese valor el empleado no está tan claramente asignado <strong>de</strong>ntro <strong>de</strong>su conglomerado.EJERCICIOS PROPUESTOS:• ¿Cómo interpretarías los tres grupos anteriores?• Varía el número <strong>de</strong> clusters (2, 4, 5, ...) y vuelve a ejecutar la ruta para cada uno <strong>de</strong> estosvalores. ¿qué se pue<strong>de</strong> observar?• Analiza las distancias entre grupos y las distancias <strong>de</strong> los elementos al centroAhora graba la ruta en un fichero “.str”, p.ej. “empleados.str”, porque volvemos sobre esteproblema a continaucín.29

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!