Вы находитесь на странице: 1из 57

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

Minera de Datos con R. Aprendiendo con Casos de Estudio Luis Torgo Captulo 2: Prediccin de las Floraciones de Algas
Resumen elaborado por: Yonel Pealoza M. Universidad de Los Andes. Facultad de Ciencias Econmicas y Sociales. Instituto de Estadstica Aplicada y Computacin. Mrida, Venezuela. yonelp@gmail.com

El objetivo principal de este Captulo, consiste en familiarizar al usuario con R. En este sentido, se trata el caso de estudio referido a la prediccin de la floracin de las algas, en el que el objetivo de investigacin se centra en de predecir la frecuencia de la aparicin de algas dainas en varias muestras de agua, con la cual se desarrollan diversas tareas bsicas de la Minera de Datos, como lo son pre-procesamiento de datos, anlisis exploratorio de datos, y la construccin de modelos predictivos.

2.1 Descripcin del problema y objetivos Las altas concentraciones de ciertas algas nocivas en los ros constituyen un grave problema ecolgico con un fuerte impacto no slo en las formas de vida del ro, sino tambin la calidad del agua. Con el objetivo de abordar este problema de prediccin, varias muestras de agua se recogieron en diferentes ros europeos y distintas veces durante un perodo de aproximadamente 1 ao. Para cada muestra de agua, se midieron diferentes Propiedades qumicas, as como la frecuencia de ocurrencia de siete algas nocivas. Algunas otras caractersticas del proceso de recoleccin de agua tambin fueron almacenadas, tales como la estacin del ao, el tamao del ro, y la velocidad del ro. Una de las principales motivaciones detrs de esta aplicacin radica en el hecho de que control qumico es barato y fcil de automatizar, mientras que el anlisis biolgico de las muestras para identificar a las algas que se encuentran

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

presentes en el agua implica el examen microscpico, que requiere personal capacitado, y es por lo tanto caro y lento. Como estos modelos, logrando que sean capaces de precisin predecir las frecuencias de las algas sobre la base de las propiedades qumicas facilitara la creacin de sistemas baratos y automatizados para el control de flores de algas nocivas. Otro de los objetivos de este estudio es proporcionar una mejor comprensin de los factores de las frecuencias de las algas. Es decir, queremos entender cmo estas frecuencias estn relacionadas con ciertos atributos qumicos de las muestras de agua, as como otras caractersticas de las muestras (como la estacin del ao, el tipo de ro, etc.) 2.2 Descripcin de datos Los datos disponibles para este problema fueron recolectados en el contexto de la red de investigacin ERUDIT. y se utiliza en la COIL 1999. Est disponible de varias fuentes, como por ejemplo en la UCI, Maquina de Almacn de aprendizaje de conjunto datos. Hay dos conjuntos de datos principales para este problema. La RST se compone de datos de 200 muestras de agua. Para ser ms precisos, cada observacin en la disposicin de conjuntos de datos se encuentra en efecto una agregacin de varias muestras de agua recogidas del mismo ro en un perodo de 3 meses, durante la misma temporada del ao. Cada observacin contiene informacin sobre 11 variables. Tres de estas variables son nominales, y describe la temporada del ao, cuando las muestras de agua para ser agregada han sido recogidas, as como el tamao y la velocidad del ro en cuestin. Los ocho restantes variables son los valores de los diferentes parmetros Qumicos medidos en las muestras de agua que forma la agregacin, a saber: El valor de pH mximo El valor mnimo de O2 (oxgeno) El valor medio de Cl (cloro) El valor medio del NO3 (nitratos) El valor medio de NH4 (amonio) La media de (ortofosfato) La media de PO4 total (fosfato) La media de la clorofila

Asociados a cada uno de estos parmetros son siete el nmero de la frecuencia de diferentes algas nocivas encontrados en las muestras de agua respectivas. No hay informacin dada en relacin con los nombres de las algas que se identificaron. El segundo conjunto de datos contiene informacin sobre 140 observaciones adicionales. Utiliza la misma estructura bsica, pero no incluye informacin relativa a la frecuencia de las siete algas nocivas. Estas observaciones adicionales pueden ser consideradas como especie de prueba de datos. El objetivo principal de nuestro estudio es predecir las frecuencias de las siete algas de estas 140 muestras de agua. Esto significa que estamos frente a una tarea de minera

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

predictiva de datos. Este es uno entre el conjunto de los diversos problemas abordado en la minera de datos. En este tipo de tarea, nuestro principal objetivo es obtener un modelo que nos permite predecir el valor de una variable, dados los valores de un conjunto de variables predictoras. Este modelo tambin puede proporcionar indicaciones sobre las variables de prediccin que tienen un mayor impacto en la variable objetivo, es decir, el modelo puede proporcionar una descripcin completa de los factores que influyen en la variable objetivo.

2.3 Carga de datos en R Vamos a considerar dos formas de obtener los datos en R: (1) un simplemente tomando ventaja de el paquete que acompaa el libro, que incluye los marcos de datos con los conjuntos de datos lista para su uso, y (2) por otro lado ir al sitio web del libro, descargar el texto de archivos con los datos, y luego cargarlos en R. El primero es, obviamente, mucho ms prctico. Se incluye informacin sobre la segunda alternativa para propsitos ilustrativos sobre cmo cargar datos en R a partir de los textos. Si desea seguir el camino fcil, slo tiene que cargar el paquete de libros, e inmediatamente tener un marco de datos con el nombre de algea disponibles para su uso. Este cuadro de datos contiene el primer conjunto de las 200 observaciones antes mencionada. > library(DMwR) > head(algae)
season size speed mxPH mnO2 Cl NO3 NH4 oPO4 PO4 Chla

1 winter small medium 8.00 2 spring small medium 8.35 3 autumn small medium 8.10 4 spring small medium 8.07 5 autumn small medium 8.06 6 winter small high 8.25 a1 a2 a3 a4 a5 a6 1 0.0 0.0 0.0 0.0 34.2 8.3 2 1.4 7.6 4.8 1.9 6.7 0.0 3 3.3 53.6 1.9 0.0 0.0 0.0 4 3.1 41.0 18.9 0.0 1.4 0.0 5 9.2 2.9 7.5 0.0 7.5 4.1 6 15.1 14.6 1.4 0.0 22.5 12.6

9.8 8.0 11.4 4.8 9.0 13.1 a7 0.0 2.1 9.7 1.4 1.0 2.9

60.800 6.238 578.000 105.000 170.000 50.0 57.750 1.288 370.000 428.750 558.750 1.3 40.020 5.330 346.667 125.667 187.057 15.6 77.364 2.302 98.182 61.182 138.700 1.4 55.350 10.416 233.700 58.222 97.580 10.5 65.750 9.248 430.000 18.250 56.667 28.4

Un marco de datos puede ser visto como una especie de matriz o tabla con las columnas nombre, que es la estructura de datos ideal para la celebracin de las tablas de datos en R. El director () funcin nos muestra las primeras seis lneas de cualquier cuadro de datos. Alternativamente, puede usar el texto en la seccin "Datos" del sitio Web del libro. El enlace "Formacin de datos" contiene las 200

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

muestras de agua enun fichero llamado "Analysis.txt", mientras que los "datos de prueba" enlace apunta al archivo "Eval.txt" que contiene las muestras de prueba 140. Existe un vnculo adicional que los puntos de un archivo ("Sols.txt") que contiene las frecuencias de las algas de las 140 muestras de ensayo. Este ltimo archivo ser utilizado para comprobar el rendimiento de nuestros modelos de prediccin y se tomar como informacin desconocida por el momento. El archivo tiene los valores para cada observacin en una lnea diferente. Cada lnea de la formacin y el archivo prueba contiene los valores de las variables (de acuerdo con la descripcin dada en la seccin 2.2) separados por espacios. Valores desconocidos se indican con la cadena "XXXXXXX". La primera cosa a hacer es descargar los tres archivos de el sitio Web de libro y guardarlos en algn directorio de tu disco duro (de preferencia en el actual el directorio de trabajo de la sesin R de carrera, que usted puede comprobar la emisin del comando getwd() en el sistema). Despus de descargar los archivos de datos en un directorio local, podemos empezar por carga en R los datos del archivo "Analysis.txt" (los datos de entrenamiento, es decir, los datos que sern utilizados para obtener los modelos de prediccin). Para leer los datos del archivo es suficiente para emitir el siguiente comando

> algae <- read.table('Analysis.txt', + header=F, + dec='.', + col.names=c('season','size','speed','mxPH','mnO2','Cl', + 'NO3','NH4','oPO4','PO4','Chla','a1','a2','a3','a4', + 'a5','a6','a7'), + na.strings=c('XXXXXXX'))

El encabezado de parmetro = F indica que el archivo para ser ledo no incluye una primera lnea con los nombres de variables. dec = '.' establece que los nmeros de uso del carcter '.' para separar decimales. Estos dos ajustes de parmetros anteriores podran haber sido omitido ya que estamos usando los valores por defecto. col.names nos permite ofrecer un vector con los nombres de dar a las variables cuyos valores son que se lee. Por ltimo, na.strings sirve para indicar un vector de cadenas que se interpretan como valores desconocidos. Estos valores se representan internamente en R por el valor de NA 2.4 Visualizacin de Datos y resumen

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

Dada la falta de informacin sobre el dominio del problema, es conveniente investigar algunas de las propiedades estadsticas de los datos, a fin de obtener una mejor comprensin del problema. Incluso si eso no fuera el caso, siempre es una buena idea para comenzar nuestro anlisis con algn tipo de anlisis exploratorio de datos similar al que se muestra a continuacin. Un primer concepto de las propiedades estadsticas de los datos puede ser obtenido a travs de un resumen de las estadsticas descriptivas:

Esta simple instruccin inmediatamente nos da una primera visin general de las propiedades estadsticas de los datos. En el caso de las variables nominales (que son representado por los factores R de cuadros de datos), que proporciona recuentos de frecuencia para cada valor posible. Por ejemplo, podemos observar que hay ms muestras de agua recogidos en invierno que en las otras estaciones.

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

Para variables numricas, R nos da una serie de estadsticas como su media, mediana de, cuartiles y los valores extremos. Estas estadsticas dan una primera idea de la distribucin de los valores de las variables (volveremos a este tema ms adelante). En el caso de una variable tener algunos valores desconocidos, su nmero tambin se muestra despus de las cadenas. Al observar la diferencia entre las medianas y los medios, as como el rango intercuartil (3 cuartil menos el cuartil 1 ), podemos hacernos una idea de la asimetra de la distribucin, as como su propagacin. Sin embargo, la mayora de las veces, esta informacin es mejor captada grficamente. Veamos un ejemplo: > hist(algae$mxPH, prob = T)

Esta instruccin nos muestra el histograma de la mxPH variable. Con el problema de parmetros prob= T tenemos probabilidades de cada intervalo de valores, mientras que la omisin de esta configuracin de parmetros que nos dan un recuento de la frecuencia. La siguiente figura nos dice que los valores de la

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

variable de mxPH aparentemente siguen una distribucin muy cerca de la distribucin normal, con los valores bien agrupados en torno al valor medio. Un control ms preciso de esta hiptesis se puede obtener utilizando las parcelas normales de QQ. La grfica se ha obtenido con el siguiente cdigo: > library(car) > par(mfrow=c(1,2)) > hist(algae$mxPH, prob=T, xlab='', + main='Histogram of maximum pH value',ylim=0:1) > lines(density(algae$mxPH,na.rm=T)) > rug(jitter(algae$mxPH)) > qq.plot(algae$mxPH,main='Normal QQ plot of maximum pH') > par(mfrow=c(1,1))

Despus de cargar el paquete, el cdigo comienza con una llamada a la par () la funcin que se puede utilizar para configurar varios parmetros del sistema de R grficos. En este caso, estamos dividiendo la ventana de salida de grficos en una lnea de una en dos columnas de la zona, con el objetivo de obtener dos grficos lado a lado en la misma figura. A continuacin, obtenemos la primera grfica, que es otra vez un histograma de la variable mxPH, excepto que esta vez se especifica un vaco del eje X, el cambio. Cambiamos el ttulo de la grfica, y proporcionar otros tipos de lmites para el eje. La siguiente instruccin dibuja una versin suave del histograma (una estimacin de la densidad del ncleo de la distribucin de la variable), mientras que las parcelas despus de los valores reales de la variable cerca del eje X, lo que permite fcil localizacin de los valores extremos

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

Por ejemplo, podemos observar que hay dos valores significativamente menor que todos los dems. Este tipo de inspeccin de datos es muy importante ya que puede identificar posibles errores en la muestra de datos, o incluso ayudar a localizar a los valores que son tan poco prcticos que slo puede haber errores, o al menos sera mejor o despreciarlos en el anlisis posterior. El segundo grfico muestra una parcela Q-Q obtenidos con la qq.plot(), la cual representa los valores de las variables en contra los cuantiles tericos de una distribucin normal (lnea de color negro slido). La funcin tambin traza sobre un intervalo de confianza del 95% de la distribucin normal (lneas discontinuas). Como podemos observar, hay varios valores bajos de la variable que claramente rompe la hiptesis de una distribucin normal con 95% de Confianza. Tambin debe tener en cuenta el amplio uso de la composicin de funciones en el anterior ejemplo, con varias funciones que se llama con el resultado de otras funciones. Cada vez que se dificulte la comprensin de este tipo de instruccin, siempre se les puede llamar por separado, uno a la vez, para entender completamente lo que producen. Otro ejemplo que muestran este tipo de inspeccin de datos, se puede lograr con las siguientes instrucciones, esta vez para la variable oPO4 > boxplot(algae$oPO4, ylab = "Orthophosphate (oPO4)") > rug(jitter(algae$oPO4), side = 2) > abline(h = mean(algae$oPO4, na.rm = T), lty = 2)

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

La primera instruccin dibuja un diagrama de caja de variable oPO4. Los diagramas de caja proporcionan un resumen rpido de algunas de las propiedades clave de la distribucin variable. Es decir, hay una caja cuyos lmites verticales son el primer y tercer cuartiles de lavariable. Este cuadro tiene una lnea horizontal en el interior que representa el valor de la mediana de la variable. Sea r el rango intercuartil. La pequea raya horizontal por encima de la caja es la observacin ms grande que es menor o igual al tercer cuartil ms 1.5.x r. El tablero pequeo horizontal debajo de la caja es la ms pequea observacin que es mayor o igual al primer cuartil menos r. x 1.5. Los crculos por debajo o por encima de estos guiones pequeos representan las observaciones que son extremadamente bajas (altas) en comparacin con todos los dems, y se consideran por lo general los valores extremos. Esto significa que los diagramas de caja nos dan un montn de informacin con respecto a no slo el valor central y dispersin de la variable, sino tambin los valores extremos eventuales. La segunda instruccin se ha descrito antes (la nica diferencia puede ser el lugar donde se trazan los datos), mientras que el tercero utiliza la funcin abline() para trazar una lnea horizontal en la parte media de la variable, que se obtiene utilizando la funcin media (). Al comparar esta lnea con la lnea dentro de la caja lo que indica la mediana, podemos concluir que la presencia de valores atpicos varios ha distorsionado el valor de la media como una estadstica de la centralidad (i.e, indicando el valor ms comn de la variable).

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

10

El anlisis de la figura 2.3 nos muestra que la variable de oPO4 tiene una distribucin de los valores observados claramente concentrado en los valores bajos, por lo tanto con un sesgo positivo. En la mayora de las muestras de agua, el valor de oPO4 es baja, pero hay varias observaciones con valores altos, e incluso con tasas de valores extremadamente altas. A veces, cuando nos encontramos con los valores atpicos, estamos interesados en la inspeccin de las observaciones que tienen estos "extraos" valores. Vamos a mostrar dos maneras de hacer esto. En primer lugar, vamos a hacerlo de forma grfica. Si graficamos los valores de la variable de NH4, que cuenta un valor muy grande. Podemos identificar la respectiva muestra de agua:

> plot(algae$NH4, xlab = "") > abline(h = mean(algae$NH4, na.rm = T), lty = 1) > abline(h = mean(algae$NH4, na.rm = T) + sd(algae$NH4, na.rm = T), + lty = 2) > abline(h = median(algae$NH4, na.rm = T), lty = 3) > identify(algae$NH4)

La primera instruccin grafica todos los valores de la variable. Las llamadas a la funcin abline() dibuja tres lneas informativas, una con el valor medio, otra con la media ms una desviacin estndar, y el otro con la mediana. No son necesarios para esta tarea la identificacin. La ltima instruccin es interactiva y permite al usuario hacer clic en los puntos trazados con el botn izquierdo del ratn. Para cada punto se hace clic, R escribir el nmero de fila correspondiente en el cuadro de los datos de las algas. El usuario puede terminar la interaccin haciendo clic en el botn derecho del ratn. Si queremos examinar las observaciones respectivas en el cuadro de los datos de las algas, entonces es mejor proceder de la siguiente manera: > plot(algae$NH4, xlab = "") > clicked.lines <- identify(algae$NH4) > algae[clicked.lines, ]

Como ya habrs imaginado antes, la funcin identificar (), da como resultado el nmero de las lneas correspondientes a los puntos de clic en el grfico y por lo tanto podemos tomar ventaja de este hecho al ndice del marco de datos de algas, por lo tanto obtener la informacin completa sobre estas observaciones. Tambin podemos realizar esta inspeccin sin grficos, como se muestra a continuacin: > algae[algae$NH4 > 19000, ]

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

11

Esta instruccin ilustra otra forma de indexacin de una trama de datos, utilizando una expresin lgica, como un selector de fila (vase la Seccin 1.2.7 para ms ejemplos de esta). La salida de esta instruccin puede parecer un poco extraa. Esto da como resultado del hecho de que hay algunas observaciones con valores de NA en la variable NH4. Por estas observaciones, R es incapaz de conocer el resultado de la comparacin y por lo tanto la NAs. Podemos evitar este comportamiento mediante la emisin en lugar de la instruccin algea [! is.na (algea $ NH4) y algea $ NH4> 19000,]. La llamada a la funcin is.na () produce un vector de valores booleanos (true o false).Un elemento de este vector es cierto cuando NH4 es NA. Este vector tiene tantos elementos como filas hayan en el marco de datos algea. La construccin ! is.na (algas $ NH4), lo que devuelve un vector de valores booleanos que son verdaderas en posiciones correspondientes a las filas donde NH4 se sabe, porque '!' es el operador lgico de negacin. En resumen, esta llamada alternativa que nos dara las filas del marco de datos que han conocido los valores de NH4 y son mayores de 19.000. Exploremos ahora algunos ejemplos de otro tipo de inspeccin de datos. Estos ejemplos utilizan la red (Sarkar, 2010) el paquete de R, que ofrece un amplio conjunto de herramientas grficas impresionantes aplicacin de las ideas detrs de enrejado grficos (Cleveland, 1993). Supongamos que queremos estudiar la distribucin de los valores de, por ejemplo, las algas a1. Podramos utilizar cualquiera de las posibilidades discutidas antes. Sin embargo, si quera estudiar cmo esta distribucin depende de otras variables, las nuevas herramientas se requieren. Grficos acondicionados son representaciones grficas que dependen de un cierto factor. Un factor es una variable nominal con un conjunto de valores finito. Por ejemplo, podemos obtener un conjunto de diagramas de caja para la variable a 1, para cada valor de la variable tamao (ver figura 2.4). Cada uno de los diagramas de caja se obtuvieron usando el subconjunto de muestras de agua que tienen un cierto valor de la variable tamao. Estos grficos nos permiten estudiar cmo esta variable nominal puede influir en la distribucin de los valores de A1. El cdigo para obtener los diagramas de caja es: > library(lattice) > bwplot(size ~ a1, data=algae, ylab='River Size',xlab='Algal A1') La primera instruccin se carga en el paquete de red. El segundo obtiene un diagrama de caja utilizando la versin de red de estas graficas. El primer argumento de esta instruccin se puede leer como "a1 parcela para cada valor de tamao". El resto de argumentos tienen un significado obvio. La Figura 2.4 nos permite observar que las frecuencias ms altas de alga a1 son las esperadas en los ros ms pequeos, lo cual aporta valiosos conocimientos. Una variante interesante de este tipo de trama que nos da ms informacin sobre la distribucin de las variables que se traza, se percentil caja de parcelas, que estn disponibles en Hmisc paquete. Veamos un ejemplo de su uso con las mismas algas a1 contra el tamao de los ros:

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

12

> library(Hmisc) > bwplot(size ~ a1, data=algae,panel=panel.bpplot, + probs=seq(.01,.49,by=.01), datadensity=TRUE, + ylab='River Size',xlab='Algal A1') El resultado de esta llamada se muestra en la siguiente figura. Los puntos son el valor medio de la frecuencia de las algas para los tamaos de ro diferente. Las lneas verticales representan el primer cuartil, la mediana y tercer cuartil, en ese orden. Los grficos nos muestran los valores reales de los datos con guionespequeos, y la informacin de la distribucin de estos valores es proporcionado por las graficas cuantil. Estos grficos por lo tanto proporcionan mucha ms informacin que diagramas de caja estndar. Por ejemplo, podemos confirmar nuestra observacin anterior que los ros ms pequeos tienen frecuencias ms altas de esta alga, pero se puede observar tambin que el valor de las frecuencias observadas para estos pequeos ros es mucho ms generalizada en todo el dominio de las frecuencias que para otros tipos de ros. Este tipo de grafica acondicionada no se limita a las variables nominales, ni a un solo factor. Puede llevar a cabo el mismo tipo de estudio acondicionado con las variables continuas, siempre y cuando exista previamente un "discretizado" de ellos. Vamos a ver un ejemplo al observar el comportamiento de la frecuencia de las algas a3 acondicionado segn la estacin y mnO2, siendo esta ltima

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

13

una variable continua. La siguiente figura muestra un grfico y el cdigo para lograr lo siguiente: > minO2 <- equal.count(na.omit(algae$mnO2), + number=4,overlap=1/5)

La primera instruccin utiliza equal.count function () para crear una versin del MnO2 variable continua factorizada. El nmero de parmetro establece el nmero de contenedores que desee, mientras que la superposicin de los conjuntos de parmetros de la superposicin entre los contenedores cerca de sus respectivos lmites (esto significa que algunas observaciones se le asignarn a los contenedores adyacentes). Los contenedores se crean de tal manera que contienen un nmero igual de observaciones. Usted puede haber notado que no hemos usado algea $ MnO2 directamente. La razn es la presencia de valores de NA en esta variable. Esto podra causar problemas en la funcin de los grficos siguientes. Hemos utilizado la funcin na.omit () que elimina cualquier valor de NA de un vector. La segunda lnea contiene la llamada a la funcin grfica stripplot (). Esta es otra de las funciones grficas del paquete de red. Se crea un grfico que contiene los valores reales de una variable, en tiras diferentes en funcin de otra variable (en este caso la temporada). Grficos diferentes son dibujados para cada intervalo de

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

14

la variable de mnO2. Los contenedores estn ordenados de izquierda a derecha y de abajo hacia arriba. Esto significa que la grafica inferior izquierda corresponde a los valores ms bajos de mnO2. La existencia de valores de NA en mnO2 tambin tiene algn impacto en los datos que se utiliza para dibujar el grfico. En lugar de utilizar los datos de parmetros = algea (como la creacin de la figura 2.4), que tuvo que "eliminar" a los filas correspondientes a las muestras con valores de NA en mnO2.

2.5 Los valores desconocidos Hay varias muestras de agua con valores desconocidos en algunas de las variables. Esta situacin, bastante comn en los problemas del mundo real, puede impedir el uso de ciertas tcnicas que no son capaces de manejar los valores faltantes. Cada vez que estamos manejando un conjunto de datos con valores perdidos, podemos seguir varias estrategias. Los ms comunes son: Retire los casos de incgnitas. Rellene los valores desconocidos mediante la exploracin de las correlaciones entre las variables. Rellene los valores desconocidos mediante la exploracin de la similitud entre los casos. Use herramientas que son capaces de manejar estos valores.

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

15

La ltima alternativa es la ms restrictiva, ya que limita el conjunto de herramientas que se puede usar. No obstante, puede ser una buena opcin siempre que se confi en el mrito de las estrategias utilizadas por las herramientas de minera de datos para manejar los valores faltantes. En las siguientes secciones vamos a mostrar ejemplos de cmo poner en prctica estas estrategias en R. Si usted decide probar el cdigo indicado en estas secciones, deben ser conscientes de que no son complementarios. Esto significa que a medida que se vaya a otro mtodo se debe tratar con los valores que faltan, debe leer de nuevo los datos originales para todos los casos desconocidos de nuevo, como cada seccin maneja de una manera diferente. La forma ms fcil de hacer esto es ejecutar el siguiente cdigo: > library(DMwR) > data(algae) 2.5.1 Eliminacin de las observaciones con valores desconocidos La opcin de eliminar los casos con valores desconocidos es muy fcil de implementar, y tambin puede ser una opcin razonable, cuando la proporcin de casos con incgnitas son pequeos con respecto al tamao del conjunto de datos disponibles. Antes de la eliminacin de todas las observaciones con al menos un valor desconocido en alguna variable, siempre es aconsejable echar un vistazo, o al menos contar con: > algae[!complete.cases(algae),] ... ... > nrow(algae[!complete.cases(algae),]) La funcin complete.cases () produce un vector de valores booleanos con tantos elementos como filas haya en el marco de datos algea, un elemento es cierto si la fila respectiva esta "clean" de los valores de NA (i.e., es una observacin completa). As, la instruccin de arriba muestra las muestras de agua con algunos valores NA debido a que el operador '!' realiza una negacin lgica, como se mencion antes. Con el fin de eliminar estas 16 muestras de agua de nuestra hoja de datos, podemos simplemente hacer: > algae <- na.omit(algae) Incluso si decide no utilizar este mtodo drstico para eliminar todos los casos con un valor desconocido, podemos eliminar algunas observaciones porque el nmero de valores desconocidos es tan alta que es casi intil, y complejo, incluso mtodos el de rellenar estos valores ser muy poco fiable. Tenga en cuenta que si usted ha

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

16

ejecutado el comando anterior, usted debe leer los datos de nuevo, ya que esta instruccin ha eliminado todas las incgnitas, por lo que la siguiente sentencia no tendra sentido. En cuanto a los casos de incgnitas, podemos ver que tanto las muestras 62 y 199 tienen seis de las once variables explicativas con valores desconocidos. En estos casos, es prudente hacer caso omiso de estas observaciones, simplemente mediante la eliminacin de ellos: > algae <- algae[-c(62, 199), ] En los problemas donde la inspeccin visual de todos los casos con incgnitas es inviable debido a su nmero, tenemos que ser capaces de encontrar las filas con un gran nmero de nuevos NAs. El siguiente cdigo te da el nmero de valores desconocido de cada fila del conjunto de datos de algea: > apply(algae, 1, function(x) sum(is.na(x))) La funcin apply () pertenece a un conjunto de funciones muy potentes de R. Estas funciones son a veces conocidas como meta-funciones y permitir la aplicacin de otras funciones a los objetos bajo ciertas condiciones. En el caso de la funcin apply (), podemos utilizarla para aplicar una funcin a una de las dimensiones de un objeto multidimensional. El uso de la funcin apply () que se est ejecutando un la funcin en todas las filas del cuadro de datos. Esta funcin, especficamente en la tercera edicin argumento de la aplicacin (), se llamar a cada fila de la trama de datos. La la funcin que hemos proporcionado en este caso es una funcin temporal. Es temporal ya que slo existe dentro de la llamada de apply (). Por otra parte, podra haber suministrado el nombre de una funcin "normal". La funcin temporal bsicamente calcula el nmero de nuevos NAs en el objeto x de su argumento. Tomar ventaja de este factor que un valor true en R es equivalente a el numero 1 y false vale 0 lo que significa que cuando se suma un vector de valores booleanos, se obtiene cuantos TRUE existen en el vector. En base a este cdigo, podemos crear una funcin que nos da las filas en algae que tienen un cierto nmero de incgnitas. Tal funcin est disponible en el paquete de libro y se puede utilizar de la siguiente manera: > data(algae) > manyNAs(algae, 0.2) La llamada a data() slo es necesario si previamente se han eliminado la filas con una gran cantidad de incgnitas. La funcin manyNAs () proporciona los nmeros de fila que, en este caso, tienen ms del 20% de las columnas con NA. En el segundo argumento puede alternativamente, proporcionar el nmero exacto de columnas que usted desea considerar como lmite. Por lo tanto, una alternativa al

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

17

cdigo dado antes, que no requiere saber el nmero de las filas con una gran cantidad de incgnitas es > algae <- algae[-manyNAs(algae), ] En este caso hemos usado el valor predeterminado del segundo argumento de manyNAs(), que es de 0,2.

2.5.2 Llenado de los Desconocidos con los valores ms frecuentes Una alternativa a la eliminacin de los casos con valores desconocidos es para tratar de encontrar el valor ms probable para cada una de estas incgnitas. Una vez ms, varias estrategias se pueden seguir, con diferentes soluciones de compromiso entre el nivel de aproximacin y la complejidad computacional del mtodo. La forma ms sencilla y rpida de llenar los valores desconocidos es el uso de algunas estadsticas de la centralidad. Estas estadsticas reflejan el valor ms frecuente de una distribucin variable, por lo tanto son una eleccin natural para esta estrategia. Varias estadsticas de la centralidad de existir, al igual que la media, mediana, modo, etc La eleccin del valor ms adecuado depende de la distribucin de la variable. Para la distribucin aproximadamente normal, donde todas las observaciones son bien agrupadas en torno a la media, esta estadstica es la mejor opcin. Sin embargo, para distribuciones asimtricas, o de las variables con valores extremos, la media puede ser desastrosa. Las distribuciones asimtricas tienen la mayora de los valores agrupados cerca de uno de los lados de la rango de valores de la variable, por lo que la media no es claramente representativo de la el valor ms comn. Por otro lado, la presencia de valores atpicos (extremos valores) puede distorsionar el clculo de la media, lo que conduce a similares problemas de representatividad. Por lo tanto, no es conveniente utilizar la media, sin una inspeccin anterior de la distribucin de la variable usando, por ejemplo, algunas de las herramientas grficas de R (por ejemplo, la Figura 2.2). Para distribuciones sesgadas o para las variables con valores extremos, la mediana es una mejor estadstica de la centralidad. Por ejemplo, las algas de la muestra [48], no tiene valor en la variable mxPH. A medida que la distribucin de esta variable es casi normal que podra usar su valor medio para llenar el "hueco". Esto podra ser realizado por > algae[48, "mxPH"] <- mean(algae$mxPH, na.rm = T) Donde la funcin mean() da el valor medio de un vector de nmeros, y na.rm = T no tiene en cuenta los valores de NA en este vector en el clculo.

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

18

La mayora de las veces estaremos interesados en la cumplimentacin de todas las incgnitas de una columna en lugar de trabajar sobre una base caso por caso que el anterior. Veamos un ejemplo de esto con el CHLA variable. Esta variable no es conocida en 12 muestras de agua. Por otra parte, se trata de una situacin fuera de la media es un representante muy pobre de el valor ms frecuente de la variable. En efecto, la distribucin de la CHLA es sesgada hacia valores ms bajos, y hay algunos valores extremos que hacen que la media valor (13.971) muy poco representativo del valor ms frecuente. Por lo tanto, vamos a utilizar el medio para llenar todas las incgnitas en esta columna, > algae[is.na(algae$Chla), "Chla"] <- median(algae$Chla, na.rm = T) La funcin centralImputation(), disponible en el paquete de libros, llena en todas las incgnitas en un conjunto de datos con una estadstica de la centralidad. Esta funcin utiliza la mediana para las columnas numricas y utiliza el valor ms frecuente (la moda) para las variables nominales. Usted puede utilizarlo de la siguiente manera: > data(algae) > algae <- algae[-manyNAs(algae), ] > algae <- centralImputation(algae) Aunque la presencia de valores desconocidos pueden poner en peligro el uso de algunos mtodos, llenar sus valores usando una estrategia que el anterior se considera generalmente como un mal idea. Esta estrategia simple, aunque muy rpido, y por lo tanto atractiva para grandes conjuntos de datos, puede introducir un sesgo importante en los datos, que pueden influir en nuestra el anlisis posterior. Sin embargo los mtodos imparciales, que encontrar el valor ptimo para rellenar un desconocido son extremadamente complejos y pueden no ser adecuados para algunos grandes problemas de minera de datos.

2.5.3 Llenado de los valores desconocidos mediante la exploracin de correlaciones Una alternativa para obtener los estimadores menos sesgados de los valores desconocidos es explorar las relaciones entre las variables. Por ejemplo, utilizando la correlacin entre los valores de las variables, podramos descubrir que una determinada variable es muy correlacionado con mxPH, que nos permiten obtener otros, valores ms probables para el nmero de la muestra 48, que cuenta con un desconocido en esta variable. Este puede ser preferible el uso de la media como lo hicimos anteriormente. Para obtener la correlacin de las variables que puede ejecutar el comando

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

19

> cor(algae[, 4:18], use = "complete.obs") La funcin Cor() produce una matriz con los valores de correlacin entre las variables (hemos evitado las primeras 3 variables/columnas porque son nominales). El uso de la opcin de R = "complete.obs" indica hacer caso omiso de las observaciones con valores de NA en este clculo. Valores cercanos a 1 (-1) indican una fuerte y positiva (negativo) de correlacin lineal entre los valores de los respectivos dos variables. Otras funciones de R podra ser utilizado para aproximar el funcionamiento forma de esta correlacin lineal, que a su vez nos permiten estimar el los valores de una variable a partir de los valores de la variable relacionada. El resultado de esta funcin cor() no es muy legible, pero podemos ponerlo a travs de la funcin symnum () para mejorar esto: > symnum(cor(algae[,4:18],use="complete.obs"))

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

20

Antes de analizar la informacin proporcionada por la funcin summary() cuando se aplica a los modelos lineales, digamos algo acerca de cmo manejar el R tres variables nominales. Cuando se utiliza como se muestra arriba, R va a crear un conjunto de las variables auxiliares. Es decir, para cada variable de factor con los niveles k, R crear k-1 variables auxiliares. Estas variables tienen los valores 0 o 1. Un valor de 1 significa que el valor asociado del factor est "presente", y que Tambin significa que las variables auxiliares otro tendr el valor 0. Si todos los k 1 las variables son 0, entonces significa que la variable de factor tiene el resto de KTH de valor. Volviendo al resumen presentado anteriormente, podemos ver que R ha creado tres variables auxiliares para la temporada de los factores (seasonspring, seasonsummer y seasonwinter). Esto significa que si tenemos una muestra de agua con la valor de "otoo" en la temporada de variable, las tres variables auxiliares se ajustar a cero. La aplicacin del resumen function () a un modelo lineal da una informacin de diagnstico sobre el modelo obtenido. En primer lugar, hemos informacin relativa a los residuos (es decir, los errores) de la t de la lineal modelo a los datos utilizados. Estos residuos deben tener una media

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

21

de cero y debe tienen una distribucin normal (y, obviamente, ser tan pequeo como sea posible). Para cada coeficiente (variable) de la ecuacin de regresin mltiple, R mostrar su valor y su error estndar (una estimacin de la variabilidad de los estos coeficientes). Con el fin de comprobar la importancia de cada coeficiente, se puede la hiptesis de que cada uno de ellos es nulo, es decir, H0: i = 0. Para poner a prueba esta hiptesis, el t-test se utiliza normalmente. R calcula un valor de t, que es definido como el cociente entre el valor del coeficiente y su error estndar, que es decir, Bi/sBi. R nos mostrar una columna (Pr (> | t |)) asociados a cada coeficiente con el nivel en el que la hiptesis de que el coeficiente es nula es rechazada. As, un valor de 0,0001 tiene el significado que estamos seguros de que el 99,99% el coeficiente no es nulo. R marcas de cada prueba con el smbolo correspondiente a un conjunto de niveles comunes de Con cia para realizar dichas pruebas. En resumen, slo de los coeficientes que tienen algn smbolo en frente de ellos podemos rechazar la hiptesis de que puede ser nulo con anza al menos el 90%.En resumen, slo de los coeficientes que tienen algn smbolo en frente de ellos podemos rechazar la hiptesis de que puede ser nulo, con al menos el 90% de confianza. Otra pieza de informacin de diagnstico relevante reproducidas por R son los R2 coeficientes (mltiples y ajustado). Estos indican el grado de t del modelo a los datos, es decir, la proporcin de la varianza en los datos que es explicada por el modelo. Valores cercanos a 1 son mejores (casi el 100% se explica varianza) mientras que los ms pequeos los valores, mayor es la falta de t. El coeficiente R2 ajustado es ms exigente, ya que toma en cuenta el nmero de parmetros del modelo de regresin. > anova(lm.a1)

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

22

Estos resultados indican que la variable season es la variable menos que contribuye a la reduccin del error de ajuste del modelo. Quitmosla del modelo: > lm2.a1 <- update(lm.a1, . ~ . - season) La funcin update() se puede utilizar para realizar pequeos cambios en un modelo lineal existente. En este caso lo usamos para obtener un nuevo modelo mediante la eliminacin de la variable season del modelo lm.a1. La informacin de summary de este nuevo modelo es la siguiente:

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

23

El t ha mejorado un poco (32,8%), pero todava no es demasiado impresionante. Se puede llevar a cabo una comparacin ms formal entre los dos modelos mediante el usando de nuevo la funcin ANOVA(), pero esta vez con los dos modelos como argumentos: > anova(lm.a1,lm2.a1)

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

24

Esta funcin realiza un anlisis de varianza de los dos modelos que utilizan un Ftest para evaluar la importancia de las encontr diferencia. En este caso, aunque la suma de los errores al cuadrado se ha reducido (-448), la comparacin muestra que la encontr diferencia no es significativa (un valor de 0,6971 nos dice que con slo alrededor del 30% de confianza se puede decir que son diferentes).

2.6.2 Los rboles de regresin Veamos ahora en otro tipo de modelo de regresin disponible en R. Es decir, vamos a aprender cmo obtener un rbol de regresin (e.g., Breiman et al., 1984) para predecir el valor de las frecuencias de las algas a1. A medida que estos modelos de manejar bases de datos con valores perdidos, slo tenemos que extraer muestras de 62 y 199 por las razones se mencion antes. Las instrucciones necesarias para obtener un rbol de regresin se presentan a continuacin: > library(rpart) > data(algae) > algae <- algae[-manyNAs(algae), ] > rt.a1 <- rpart(a1 ~ ., data = algae[, 1:12]) La primera instruccin para cargar rpart (Therneau y Atkinson, 2010) pagina que implementa la regresin por rboles en R. La ltima instruccin obtiene el rbol. Tenga en cuenta que esta funcin utiliza el mismo esquema que el lm () para describir la forma funcional del modelo. El segundo argumento de rpart () indica que los datos a utilizar para obtener el rbol. El contenido del objeto rt.a1 objeto es el siguiente:

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

25

Un rbol de regresin es una jerarqua de pruebas lgicas sobre algunas de las variables explicativas. Modelos basados en rbol automticamente seleccionan las variables ms relevantes, y por esta razn, no todas las variables necesitan aparecer en el rbol. El rbol es ledo desde el nodo raz que es marcado por R con el nmero 1. R provee alguna informacin de los datos en este nodo. Se puede observar que hay 198 muestras para este nodo (corresponde a los datos de entrenamiento utilizados para generar el rbol), esas 198 muestras tienen un valor promedio para la frecuencia del tipo de alga a1 de 16.99 y su desviacin respecto a este valor es 90401.29. Cada nodo del rbol tiene dos ramas, las cuales estn relacionadas con el resultado de la prueba sobre una de las variables predictoras. Por ejemplo, desde el nodo raz se tiene una rama (etiquetada por R con 2)) para los casos donde la prueba PO443.818 es verdadera (147 muestras cumplen esa condicin) y tambin una rama para los 51 casos restantes que no satisfacen esa condicin (marcada con R con 3)). Desde el nodo 2 se tienen otras dos rama hacia los nodos 4 y 5, dependiendo del resultado de la prueba sobre la variable Cl. Esta prueba continua hasta que un nodo hoja es alcanzado. Estos nodos son marcados con un asterisco por R. estas hojas tienen las predicciones del rbol. Esto significa que si se desea utilizar un rbol para obtener una prediccin para

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

26

una muestra de agua particular, solo se necesita seguir una rama desde el nodo raz hasta una hoja, de acuerdo al resultado de la prueba para esta muestra. El valor promedio encontrado para la variable objetivo hasta la hoja que se ha alcanzado es la prediccin del rbol. Tambin se puede obtener una representacin grfica del rbol. Esto se puede efectuar aplicando repetidamente las funciones plot() y text() para el rbol. Estas funciones tienen varios parmetros para controlar la visualizacin del rbol. Para facilitar la obtencin del grfico se ha incluido la funcin prettyTree(). > prettyTree(rt.a1)

Existe una estrategia utilizada por R en los arboles de regresin para manejar valores faltantes y es conocida como divisiones o particiones sustitutas. Los arboles son usualmente obtenidos en dos pasos. Inicialmente, un rbol de gran tamao est creciendo y despus este rbol es podado eliminando los nodos inferiores a travs del proceso de estimacin estadstica. Este proceso tiene como finalidad evitar el sobreajuste. Esto se presenta cuando arboles de gran tamao se ajustan perfectamente al conjunto de datos de entrenamiento, pero posteriormente presentan un desempeo bajo cuando se enfrentan a nuevos datos para obtener las respectivas predicciones. La funcin rpart() que se ha utilizado para obtener el rbol, solo hace crecer el rbol, detenindose cuando cierto criterio se alcanza. El rbol para de crecer cuando:

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

27

1) El decremento de la desviacin va por debajo de cierto umbral. 2) El nmero de muestras en el nodo es menor que otro umbral. 3) La profundidad del rbol excede otro valor. Estos umbrales son controlados por los parmetros cp, minsplit y maxdepth, respectivamente. Por defecto estos valores son 0.01, 20 y 30, respectivamente. Si se desea evitar el problema del sobreajuste se debe verificar la validez de estos criterios. El paquete rpart implementa un mtodo para podar llamado costo de complejidad de podar. Este mtodo utiliza el valor del parmetro cp que R calcula para cada nodo del rbol. Este mtodo para podar trata de estimar el valor de cp que asegura el mejor compromiso entre la precisin predictiva y el tamao del rbol. Dado un rbol obtenido con la funcin rpart(), R puede producir un conjunto de sub-arboles de este rbol y estimar su desempeo predictivo. Esta informacin puede ser obtenida utilizando la funcin printcp().

El rbol producido por la funcin rpart() es el ultimo rbol de esa lista (rbol 9). Este rbol tiene un valor de cp de 0.01 (el valor por defecto de ese parmetro), incluye nueve pruebas y tiene un error relativo (comparado con el nodo raz) de 0.354. Sin embargo, R estima, utilizando un proceso interno de 10 veces la

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

28

validacin cruzada que este rbol tendr en promedio un error relativo de 0.702410.11523. Utilizando la informacin provista por estas estimaciones de desempeo ms confiables, la cual evita el problema de sobreajuste, se puede observar que tericamente podra tener un mejor ajuste con el rbol nmero 8, el cual tiene un error relativo estimado menor (0.67733). Una regla de seleccin alternativa es escoger el mejor rbol de acuerdo a la regla 1-SE, la cual consiste en mirar el error estimado para la validacin cruzada (columna xerror) y su desviacin estndar (columna xstd).

La funcin rpartXse() automatiza este proceso y toma como argumento ese valor, por defecto es 1:

2.7. Evaluacin y seleccin de modelos. Existen varios criterios para la evaluacin y comparacin de modelos, siendo el ms popular el clculo del desempeo predictivo. Aun as, existen otros criterios tales como la interpretabilidad del modelo, o la eficiencia computacional, que puede ser importante para problemas grandes de minera de datos.

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

29

El desempeo predictivo de los modelos de regresin es obtenido comparando las predicciones de los modelos con los valores reales de las variables objetivo, y calcular alguna medida de error promedio de esta comparacin. Tal medida es el error medio absoluto (MAE, por sus siglas en ingls). Para los ejemplos que se han venido presentando se tendr esta medida para los dos modelos obtenidos (regresin lineal y rbol de regresin). El primer caso es obtener las predicciones del modelo para el conjunto de casos donde se quiere evaluar. Para obtener las predicciones de cualquier modelo en R, se utiliza la funcin predict(). La cual recibe un modelo y prueba un conjunto de datos arrojando las correspondientes predicciones del modelo:

Estas dos instrucciones poseen las predicciones de los modelos obtenidos en la seccin 2.6 para el tipo de alga a1. Note que se ha usado la instruccin clean.algae sobre el data frame del modelo lineal debido a los datos faltantes. Una vez que se tienen las predicciones de los modelos, se calcula su error absoluto medio como se muestra a continuacin:

Otra conocida medida para el error es el error cuadrtico medio (MSE, por sus siglas en ingls). Esta medida se obtiene de la siguiente manera:

La desventaja de este estadstico es que no est siendo medido en las mismas unidades que la variable objetivo, y as es menos interpretable desde la perspectiva del usuario. Aun si se utiliza el estadstico MAE, la pregunta es Cundo el valor obtenido es considerado como bueno o malo?

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

30

Una alternativa estadstica que provee una respuesta razonable es el error cuadrtico medio normalizado (NMSE, por sus siglas en ingls). Este estadstico calcula un radio entre el desempeo de los modelos y una lnea base predictora, usualmente tomada como el valor medio de la variable objetivo, el cdigo se muestra a continuacin:

La figura muestra un ejemplo de este tipo de anlisis para las predicciones de los dos modelos, y se produjo con el siguiente cdigo:

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

31

Observando la figura se puede apreciar que los modelos presentan un pobre desempeo en ambos casos. El escenario ideal, donde se hicieran correctamente las predicciones para todos los casos, se identificara por la ubicacin de todos los crculos sobre la lnea punteada, la cual se genera con el comando abline(0,1,lty=2). Dado que cada crculo en el grfico obtiene su coordenada de los valores predichos y verdaderos de la variable objetivo, si esos valores son iguales, los crculos deberan estar ubicados sobre la lnea. Como se puede observar, este no es el caso. Se puede verificar cual es el nmero de la muestra donde se realizo particularmente una mala prediccin, esto se efecta a travs de la funcin identify(), la cual se ha utilizado haciendo click interactivamente sobre los puntos del grfico, el cdigo se muestra a continuacin:

Mirando la figura anterior (parte izquierda) con las predicciones del modelo lineal, se puede apreciar que este modelo predice frecuencias negativas para las algas en algunos casos. En este dominio de la aplicacin, no tiene sentido decir que una ocurrencia de una alga en una muestra de agua sea negativa (como mnimo, puede ser cero). As, se puede tomar ventaja y utilizar el mnimo valor como una forma de mejorar el desempeo del modelo lineal, lo cual se efecta a travs del siguiente cdigo:

Se ha utilizado la funcin ifelse() para alcanzar este efecto. Esta funcin tiene tres argumentos. El primero es una condicin lgica, el segundo es el resultado de una llamada a la funcin cuando la condicin es verdadera, mientras que el tercer

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

32

argumento es el resultado cuando la condicin es falsa. Note como este pequeo detalle ha incrementado el desempeo del modelo. De acuerdo a medidas de desempeo calculadas previamente, se debera preferir el rbol de regresin para obtener las predicciones para las 140 muestras de prueba ya que se obtuvo un menor valor de NMSE. Sin embargo, se ha analizado la capacidad predictiva del modelo sobre los mismos datos de entrenamiento, y el factor clave es obtener una estimacin confiable del desempeo de un modelo sobre datos para los cuales no se conocen los verdaderos valores de la variable objetivo. La validacin cruzada k-fold est entre los mtodos frecuentemente utilizados para obtener estas estimaciones confiables para pequeos conjuntos de datos como en este caso de estudio. Este mtodo puede ser descrito brevemente como se describe a continuacin. Se obtienen k subconjuntos aleatorios y de igual tamao, de los datos de entrenamiento. Para cada uno de esos k subconjuntos, se construye un modelo utilizando los k-1 subconjuntos restantes y se vala este modelo para el subconjunto k. Se almacena el desempeo del modelo y se repite el proceso para los subconjuntos restantes. Al final, se tienen k medidas de desempeo, todas obtenidas probando un modelo sobre datos no utilizados para su construccin, y ese es el factor clave. La validacin cruzada k-fold estima el promedio de estas k medidas. Una escogencia comn es tomar k igual a 10. Algunas veces se repite el proceso varias veces para obtener estimaciones ms confiables.

En este ejemplo ilustrativo, se asume que se desea utilizar el NMSE como evaluacin mtrica del rbol de regresin y los modelos lineales. Habiendo definido las funciones que se encargaran del aprendizaje y fase de prueba de los modelos, se llevar a cabo la comparacin validacin cruzada como sigue:

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

33

La siguiente instruccin provee un resumen de los resultados de la comparacin:

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

34

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

35

Se puede llevar a cabo un experimento comparativo similar para todas predicciones de siete tareas que se enfrenta al mismo tiempo. El siguiente cdigo implementa esta idea:

La figura se obtiene con: > plot(res.all)

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

36

2.8. Predicciones para los siete tipos de algas. En esta seccin se mostrar como obtener las predicciones para los siete tipos de algas sobre las 140 muestras de prueba. La seccin 2.7 describi como proceder para escoger los mejores modelos para obtener esas predicciones. El procedimiento utilizado consisti en obtener estimadores insesgados del NMSE para un conjunto de modelos sobre las siete predicciones, por medio del proceso experimental de validacin cruzada. La meta principal en este problema de minera de datos es obtener las siete predicciones para cada una de las 140 muestras de prueba. Cada una de estas siete predicciones se obtendrn utilizando el modelo que el proceso de validacin cruzada ha indicado como el mejor para esta tarea. Ser cualquier modelo resultante del llamado a la funcin bestScores()en la seccin previa. Ser cualquiera de estos: cv.rf.v3, cv.rf.v2, cv.rf.v1, o cv.rpart.v3. Se comenzar obteniendo estos modelos utilizando todos los datos de entrenamiento que se puedan aplicar para el conjunto de prueba. Note que, por simplicidad, crecer el rbol de regresin utilizando clean.algae sobre el data frame que tenia los valores NA sustituidos por el proceso de imputacin de los k vecinos ms cercanos. Esto puede ser evitado para el rbol de regresin incorporando su propio mtodo para lidiar con valores desconocidos. Los bosques aleatorios, por el contrario, no incluye tal mtodo, y necesitan aprender utilizando el data frameclean.algae.

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

37

El siguiente cdigo obtiene todos los siete modelos:

El data frametest.algae, contiene las 140 muestras de prueba. Este conjunto de datos tambin incluye valores desconocidos, as, el primer paso ser rellenar estos valores faltantes utilizando la misma metodologa usada anteriormente. La primera tentacin para llevar a cabo esta tarea seria ejecutar la funcin knnImputation() para el data frametest.algae. Esto solucionara el problema de los datos faltantes pero ira ligeramente en contra de una de las reglas de oro de los modelos predictivos, la cual es, no usar ninguna informacin del conjunto de datos de prueba para obtener los modelos. En efecto, aplicando la funcin directamente sobre el conjunto de prueba, se podra utilizar los otros casos de prueba para encontrar los 10 vecinos ms cercanos que podran ser usados para llenar cada valor faltante. Aunque no se usar la informacin sobre las variables objetivo, la cual sera realmente incorrecta, se puede evitar este proceso utilizando los datos de entrenamiento para encontrar los vecinos. Esto seria ms correcto pero tambin ms realista en el sentido de que si se fueran a aplicar los modelos en problemas reales, se obtendran probablemente las muestras de agua secuencialmente, una a la vez. La funcin knnImputation()tiene un argumento extra que puede ser utilizado para las situaciones de llenar los valores faltantes en un conjunto de datos de prueba. Se puede utilizar la siguiente instruccin:

El argumento de distData nos lleva a suministrar un conjunto de datos extra donde los 10 vecinos ms cercanos son encontrados para cada caso con valores faltantes en el data frametest.algae. Note que se ha omitido las variables objetivo del conjunto de datos algae, como el conjunto de prueba no incluye informacin sobre estas variables.

Minera de Datos con R

Captulo 2: Prediccin de las floraciones de algas

38

Con el siguiente cdigo se obtendr la matriz con las predicciones para el conjunto de prueba entrero:

Con este simple cdigo se obtuvo una matriz (preds) con las 7 x 140 predicciones requeridas. En esta etapa se puede comparar estas predicciones con los valores reales, para obtener alguna realimentacin (feedback) sobre la calidad de nuestro enfoque para el problema de la prediccin. Los valores verdaderos del conjunto de datos de prueba estn contenidos en el data framealgae.sols. El siguiente cdigo calcula los valores de NMSE de los modelos:

Primero se obtienen las predicciones de la lnea base del modelo utilizado para calcular el NMSE, el cual, en este caso consiste en predecir el valor promedio de la variable objetivo. Despus se procede a calcular los valores de NMSE para los siete modelos/alga. La funcin scale() puede ser utilizada para normalizar el conjunto de datos. Este trabaja restando el segundo argumento del primero y despus divide el resultado entre el tercero, a menos que el argumento sea falso (FALSE), como es el caso anterior. En este ejemplo se est utilizando para restar un vector (el valor objetivo promedio de todas las siete algas) de cada lnea de una matriz. Los resultados obtenidos previamente con la estimacin de la validacin cruzada confirman la dificultad en obtener un buen resultado para el tipo de alga 7, mientras que para los otros problemas los resultados son ms competitivos, en particular para el tipo de alga 1. En resumen, con la seleccin del modelo apropiado, estamos capacitados para obtener valores interesantes para estos problemas de prediccin.

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

39

Minera de Datos con R Aprendiendo con Casos de Estudio Luis Torgo Captulo 3: Prediccin de Beneficios del Mercado Burstil
Resumen elaborado por: Yonel Pealoza M.

El objetivo principal de este captulo es introducir al lector a una aplicacin ms real de la minera de datos. En este sentido, se abordar el manejo de datos de series de tiempo, frente a un sistema muy dinmico con los posibles cambios de rgimen, y moviendo desdelas predicciones del modelo en acciones concretas en el dominio de aplicacin. Vamos a abordar la tarea de construir un sistema de comercio de acciones sobre la base de los modelos de prediccin obtenidos con cotizaciones de acciones diarias de los datos. Varios modelos sern juzgados con el objetivo de predecir los rendimientos futuros del ndice del mercado de S & P 500. Estas predicciones se utilizan junto con una estrategia de negociacin para llegar a una decisin con respecto a las rdenes de mercado para generar. En este captulo se trata de varios temas nuevos de minera de datos, entre los que son: (1) el uso de R analizar los datos almacenados en una base de datos (2) cmo manejar los problemas con la prediccin un tiempo de orden entre las observaciones de datos (tambin conocido como de series de tiempo), y (3) un ejemplo de las dificultades de la traduccin de las predicciones del modelo en las decisiones y acciones en aplicaciones del mundo real. 3.1 Descripcin del problema y Objetivos La bolsa de comercio es un dominio de aplicacin con un gran potencial para la minera de datos. En efecto, la existencia de una enorme cantidad de datos histricos sugiere que la minera de datos puede proporcionar una ventaja competitiva con respecto a la inspeccin de estos datos. Por otro lado, hay investigadores que pretenden que los mercados se adapten tan rpidamente en trminos de ajustes de precios que no hay espacio para obtener beneficios de

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

40

forma consistente. Esto es generalmente conocido como la hiptesis de mercados eficientes. El objetivo general del comercio de acciones es mantener una cartera de activos sobre la base de rdenes de compra y venta. El objetivo a largo plazo es lograr la mayor ganancia posible de estas acciones comerciales. En el contexto de este captulo vamos a limitar un poco ms de este panorama general. Es decir, slo el "comercio" un solo valor, en realidad un ndice de mercado. Teniendo en cuenta esta seguridad y un capital inicial, vamos a tratar de maximizar nuestros beneficios durante un perodo de prueba el futuro por medio de acciones comerciales (compra, venta, retencin). Nuestra estrategia comercial se utiliza como base para la toma de decisiones las indicaciones proporcionadas por el resultado de un proceso de minera de datos. Este proceso consistir en tratar de predecir la evolucin futura del ndice basado en un modelo de datos obtenidos con citas histricas. Por lo tanto nuestro modelo de prediccin se incorporar en un sistema de comercio que genera sus decisiones en base a las predicciones del modelo. Nuestros criterios de evaluacin global ser el rendimiento de este sistema comercial, es decir, la ganancia / prdida resultante de las acciones del sistema, as como algunas otras estadsticas que son de inters para los inversores. Esto significa que nuestros principales criterios de evaluacin sern los resultados operacionales de la aplicacin de los conocimientos descubiertos por nuestro proceso de minera de datos y no a la exactitud de prediccin de los modelos desarrollados durante este proceso. 3.2 Los Datos disponibles En nuestro caso de estudio nos concentraremos en el comercio de la S & P 500 del mercado. Datos diarios sobre la cita de esta seguridad estn disponibles gratuitamente en muchos lugares, por ejemplo, el Yahoo Finanzas site. Los datos que usaremos estn disponibles en el paquete de libros. Una vez ms vamos a explorar otros medios de obtener los datos como una forma de ilustrar algunas de las capacidades de R. Con el fin de obtener los datos a travs del paquete R, es suficiente para escribir: > library(DMwR) > data(GSPC) La accin diaria de datos incluye informacin sobre cotizaciones de las siguientes propiedades: Fecha de la sesin de bolsa de valores Precio de puertas abiertas en el comienzo de la sesin Precio ms alto durante la sesin

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

41

El precio ms bajo Precio de cierre de la sesin El volumen de transacciones Precio de cierre ajustado 3.2.1 Manejo de datos dependientes del tiempo en R Los datos disponibles para este estudio de caso dependen del tiempo. Esto significa que cada observacin de nuestra base de datos tiene una etiqueta de tiempo que se le atribuye. Este tipo de datos es frecuentemente conocido como datos de series temporales. La principal caracterstica distintiva de este tipo de datos es que el orden entre los asuntos de los casos, debido a sus etiquetas de tiempo conectado. En trminos generales, una serie de tiempo es un conjunto de observaciones ordenadas de una variable: y1 , y2 , . . . , yt1 , yt , yt+1 , . . . , yn Donde yt es el valor de la variable serie en el tiempo t. El objetivo principal del anlisis de series temporales es la obtencin de un modelo basado en el pasado observaciones de la variable, y1, y2,. . . , yt-1, yt, que nos permite realizar predicciones en relacin con futuras observaciones de la variable, yt +1,. . . , Yn. En el caso de nuestros datos, tenemos lo que se conoce generalmente como una serie de tiempo multivariado, porque evaluamos distintas variables en las etiquetas mismo tiempo, es decir, el Abierto, H IGH, bajo, pierden C, Volumen y ADJC lose. R tiene varios paquetes dedicados al anlisis de este tipo de datos, y en el efecto que tiene clases especiales de objetos que se utilizan para almacenar dependiente del tipo de datos. Adems, R tiene muchas funciones, atento a este tipo de objetos, como funciones especiales de ploteo, etc. Entre los paquetes de R ms flexible para el manejo de datos dependientes del tiempo son zoo (Zeileis y Grothendieck, 2005) y XTS (Ryan y Ulrich, 2010). Tanto el poder como una oferta similar, aunque XTS ofrece un conjunto de servicios adicionales (por ejemplo, en trminos de sub-ajuste con la norma ISO 8601 cadenas de tiempo) para manejar este tipo de datos. En trminos tcnicos, el XTS clase extiende el zoolgico de clase, lo que significa que cualquier objeto XTS es tambin un objeto de zoolgico, y por lo tanto se puede aplicar cualquier mtodo diseado para objetos zoolgico de objetos XTS. Vamos a basar nuestro anlisis en este captulo se centran principalmente en los objetos XTS. Empezamos con unos cuantos ejemplos ilustrativos de la creacin y utilizacin de este tipo de objeto. Tenga en cuenta que ambos zoolgico y XTS son paquetes adicionales (es decir, que no vienen con la instalacin base de R), y que es necesario descargar e instalar en R.

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

42

La funcin xts() recibe los datos de series de tiempo en el primer argumento. Esto puede ser un vector o una matriz, si tenemos una serie de tiempo multivariante. En este ltimo caso cada columna de la matriz se interpreta como una variable que se muestra en cada etiqueta de tiempo (es decir, cada fila). Las etiquetas de tiempo se proporcionan en el segundo argumento. Esto tiene que ser un conjunto de etiquetas de tiempo en cualquiera de las clases de tiempo existentes en R. Definicin de las tareas de prediccin. En general, nuestro objetivo es tener buenos pronsticos de los precios futuros del ndice S & P 500 para que las rdenes rentable puede ser colocado en el tiempo. Este objetivo general que nos permitir definir con facilidad lo que para predecir con nuestros modelos, se debe recurrir a la previsin de los valores futuros de la serie temporal de precios. Sin embargo, es fcil ver que incluso con esta simple tarea de inmediato frente a varias preguntas, a saber, (1) Cul de las cotizaciones diarias? o (2) para que en el futuro? Responder a estas preguntas no es fcil y por lo general depende de cmo las predicciones se utilizan para la generacin de rdenes de operaciones. 3.1 Definiendo las tareas de prediccin En general, nuestro objetivo es tener buenos pronsticos de los precios en el futuro de los indices S & P 500 para que las rdenes rentables puedan tomar lugar en el tiempo. Este objetivo general nos permitir definir con facilidad lo que predecir con nuestros modelos, debe recurrir a la previsin de los valores futuros de la serie temporal de precios. Sin embargo, es fcil ver que incluso con esta simple tarea de inmediato nos enfrentamos a varias preguntas, es decir, (1) Cul de las cotizaciones diarias? o (2) para que el tiempo en el futuro? Responder a estas preguntas no es fcil y por lo general depende de cmo las predicciones se utilizan para generar rdenes de negociacin.

3.3.1 Qu predecir? Las estrategias de negociacin que se describen en la Seccin 3.5 suponen que se obtiene una prediccin de la tendencia del mercado en los prximos das. Sobre la base de esta prediccin, vamos a hacer pedidos que ser rentable si la tendencia se confirma en el futuro. Vamos a suponer que si los precios varan ms de p%, consideramos que esto valga la pena en trminos de comercio (por ejemplo, que cubre los costos de transaccin). En este contexto, queremos que nuestros modelos de prediccin para pronosticar si este margen se puede alcanzar en los prximos k das. Se debe tener en cuenta que en estos das k en realidad podemos observar los precios por encima y por debajo de este porcentaje. Esto significa que la prediccin de una cotizacin especial para una fecha futura especfica t + k no

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

43

puede ser la mejor idea. En efecto, lo que queremos es tener una prediccin de la dinmica global de los precios en los k das, y esto no es capturado por un precio determinado en un momento determinado. Por ejemplo, el precio de cierre en el momento t + k puede representar una variacin mucho menor que p%, pero podra haber sido precedida por un perodo de precios que representan variaciones mucho mayores que p% dentro del perodp t, , t + k. Por lo tanto, lo que queremos en realidad es tener una buena prediccin de la tendencia general de los precios en los k das siguientes. Vamos a describir una variable, calculando con los datos de las cotizaciones, que puede ser visto como un indicador (un valor) de la tendencia en los k das siguientes. El valor de este indicador debe estar relacionado con la confianza que tenemos de que el p margen objetivo se podr alcanzar en el da k prximo. En esta etapa es importante tener en cuenta que cuando se menciona una variacin en p%, que significa por encima o por debajo del precio actual. La idea es que las variaciones positivas que nos llevan a comprar, mientras que las variaciones negativas disparar la venta de las acciones. El indicador que estamos proponiendo resume la tendencia, con un solo valor, positivo para las tendencias al alza, y negativos para las tendencias de reduccin de precios. Supongamos que el precio medio diario se determina por + + 3 Donde Ci, Hi y Li son el cierre, alta y baja para el da i, respectivamente. = Sea Vi el conjunto de las k variaciones porcentuales al cierre de hoy a los siguientes k das de acuerdo a los precios medios: + = =1

Nuestra variable de indicador es la suma total de las variaciones cuyo valor absoluto est por encima de nuestro objetivo p% marginal: = { : > % < %} La idea general de la variable T es seal de k-da perodos que tienen varios das con un promedio de precios diarios muy por encima de la variacin de destino. Altos valores positivos de la T significa que hay varios precios promedio diario que se p% ms alto que el cierre de hoy. Estas situaciones son buenos indicadores de las posibles oportunidades para emitir una orden de compra, como hemos buenas expectativas de que los precios subirn. Por otro lado, los valores muy negativos de la T sugerir acciones que vender, dado que los precios probablemente se

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

44

reducirn. Valores en torno a cero puede ser causada por perodos de "plano" o por los precios contradictorios variaciones positivas y negativas que se cancelan mutuamente. La siguiente funcin implementa este indicador: > T.ind <- function(quotes, tgt.margin = 0.025, n.days = 10) { + v <- apply(HLC(quotes), 1, mean) + r <- matrix(NA, ncol = n.days, nrow = NROW(quotes)) + for (x in 1:n.days) r[, x] <- Next(Delt(v, k = x), x) + x <- apply(r, 1, function(x) sum(x[x > tgt.margin | x < + -tgt.margin])) + if (is.xts(quotes)) + xts(x, time(quotes)) + else x +} La funcin comienza por la obtencin del precio medio. La funcinHLC () extrae los valores correspondientes al alta, baja, y cierre de un objeto entre comillas. Se obtiene la devolucin de los das prximos n das con respecto al precio de cierre actual. La funcin Next() permite cambiar los valores de una serie de tiempo (tanto delante o hacia atrs). La funcin Delt () puede ser utilizada para calcular los beneficios porcentuales o registro de una serie de los precios. Por ltimo, la funcin T.ind () resume la funcin de rentabilidad absoluta grande, es decir, vuelve sobre el margen de variacin de destino, que hemos establecido por defecto al 2,5%. Podemos tener una mejor idea del comportamiento de este indicador en la figura, que se produjo con el siguiente cdigo:
> candleChart(last(GSPC, "3 months"), theme = "white", TA = NULL) > avgPrice <- function(p) apply(HLC(p), 1, mean) > addAvgPrice <- newTA(FUN = avgPrice, col = 1, legend = "AvgPrice") > addT.ind <- newTA(FUN = T.ind, col = "red", legend = "tgtRet") > addAvgPrice(on = 1) > addT.ind()

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

45

Como se puede observar en la figura el indicador T alcanza valores ms altos cuando existe un periodo subsecuente de variaciones positivas. Obviamente, para obtener el valor del indicador para el tiempo i, se necesita los datos para los siguientes 10 das, no estamos diciendo que T anticipa estos movimientos. Esta no es la menta del indicador. La meta es resumir el comportamiento futuro observado de los precios en un valor simple y no predecir este comportamiento. La interpretacin para el tiempo t ser comprar si el valor de T es ms alto que un cierto umbral, y vender si dicho valor est por debajo de otro umbral. En otro caso, la seal ser no hacer nada (mantener). En resumen, se desea predecir la seal correcta para el tiempo t.

3.4. Modelos de prediccin. En esta seccin se explorarn algunos modelos que pueden ser utilizados para el manejo de la prediccin. Esta seleccin de modelos se realiz guiada principalmente por el hecho de que estas tcnicas son conocidas por su habilidad para el manejo de problemas de regresin no lineales.

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

46

3.4.2. Las herramientas de modelado. 3.4.2.1. Redes neuronales artificiales. Las redes neuronales son utilizadas frecuentemente en las predicciones financieras debido a su habilidad para tratar con problemas no lineales. El paquete nnet implementa la red neuronal en R. La red neuronal artificial est formada por un conjunto de unidades (neuronas) unidas unas u otras. Cada una de las conexiones de las neuronas tiene un peso asociado. Construir una red neuronal artificial consiste en establecer una arquitectura para la red y despus utilizar un algoritmo para encontrar los pesos de las conexiones entre las neuronas. La red organiza sus neuronas en capas. La primera capa contiene las entradas de la red. Las observaciones de entrenamiento son presentadas a la red a travs de estas entradas. La capa final contiene las predicciones de la red neuronal para cualquier caso que se presente a las neuronas de entrada. Entre la capa inicial y la final se encuentran las capas ocultas, usualmente se tienen ms de una. Los algoritmos de actualizacin de los pesos, como el mtodo de back-propagation, tratan de obtener los pesos de las conexiones que optimizan un cierto criterio de error, esto es, tratando de asegurar que las salidas de la red se comporte de acuerdo a los casos presentados al modelo. La red neuronal con una capa oculta puede obtenerse fcilmente en R utilizando la funcin del paquete nnet. La red obtenida por esta funcin puede ser utilizada para los problemas de clasificacin y de regresin, y es aplicable a los problemas de prediccin. Las redes neuronales son conocidas por ser sensibles a diferentes escalas de las variables utilizadas en un problema de prediccin. En este contexto, tiene sentido hacer la transformacin de los datos antes de introducirlos a la red, para evitar un eventual impacto negativo en el desempeo de la misma. En este caso, se normalizarn los datos con la finalidad de que todas las variables tengan media cero y desviacin estndar igual a uno. Esto se puede realizar fcilmente aplicando la siguiente transformacin a cada columna del conjunto de datos:

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

47

Donde estndar.

La funcin scale() puede ser utilizada para realizar la transformacin de los datos. A continuacin se mostrar una simple ilustracin de cmo obtener y usar este tipo de red neuronal artificial en R:

es el valor medio de la variable original X, y es la desviacin

Por defecto, la funcin nnet() asigna los pesos iniciales de los enlaces entre los nodos con valores aleatorios entre el intervalo [-0.5 , 0.5]. Esto significa que dos corridas sucesivas de la funcin con exactamente los mismo argumentos pueden arrojar diferentes soluciones. Para asegurar que se obtienen los mismo resultados que se presentan a continuacin, se aade la funcin set.seed() que inicializa el generador de nmeros aleatorios a algn numero de semilla. Esto asegura que se obtendr exactamente la misma red neuronal que se muestra aqu. En este ejemplo ilustrativo se han usado los primeros 1.000 casos para obtener la red, y para probar el modelo los siguientes 1.000 casos. Despus de normalizar los datos de entrenamiento, se llama a la funcin nnet() para obtener el modelo. Los primeros dos parmetros son los usuales para cualquier funcin de modelado en R: la forma funcional del modelo especificado por una frmula, y las muestras de entrenamiento para obtener el modelo. Tambin se han utilizado algunos de los parmetros de la funcin nnet(). El parmetro size permite especificar cuantos nodos tendr la capa oculta.

La funcin trading.signals() transforma las predicciones numricas en seales, dados los umbrales para comprar y vender, respectivamente. La funcin sigs.PR() obtiene una matriz con las puntuaciones de precisin (precisin) y capacidad para

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

48

recordar (recall) de los dos tipos de eventos, y en general. Las puntuaciones muestran que el desempeo de la red neuronal no es tan brillante. Bajas puntuaciones en la precisin significa que el modelo arroj seales incorrectas con bastante frecuencia. Si las seales son utilizadas para el comercio, esto puede llevar a seria prdidas de dinero.

3.4.2.2. Mquinas de soporte vectoriales. Las mquinas de soporte vectoriales (SVMs) son herramientas de modelado que al igual que lasredes neuronales pueden ser aplicadas para tareas de regresin y clasificacin. En R ha variasimplementaciones de dicha tcnica, entre las cuales se puede hacer referencia al paquetekernlabcon varias funcionalidades disponibles, tambin la funcin svm() del paquete e1071. La idea bsica detrs de los SVMs es la transformacin o mapeo de los datos originales en uno nuevo espacio multidimensional, donde es posible la aplicacin de modelos lineales para obtener un hiper plano de separacin, por ejemplo, la separacin de clases de un problema, es el caso de la clasificacin. El mapeo o transformacin de los datos originales en un nuevo espacio es llevado a cabo con la ayuda de las funciones denominadas Kernel. La separacin de los hiperplanos en la nueva representacin dual se realiza con frecuencia mediante la maximizacin de un margen de separacin entre los casos que pertenecen a clases diferentes ver la figura a continuacin. Este es un problema de optimizacin a menudo resuelto con mtodos de programacin cuadrtica.

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

49

3.5 Uso de las Predicciones En esta seccin se abordar la cuestin de cmo vamos a utilizar las predicciones de seales obtenidas con las tcnicas de modelado se ha descrito anteriormente. Dado un conjunto de seales de salida por algn modelo que hay muchas maneras que podemos utilizar para actuar en el mercado.

3.5.1 Cmo usar las predicciones? En nuestro caso de estudio vamos a suponer que va a considerar el comercio en los mercados futuros. Estos mercados se basan en contratos para comprar o vender una mercanca en una fecha determinada en el futuro en el precio determinado por el mercado en ese momento en el futuro. Esto significa que nuestro sistema de comercio ser capaz de abrir dos tipos de posiciones: a corto y largo plazo. Las posiciones largas se abren mediante la compra de una mercanca en el tiempo t y p el precio, y su venta en un momento posterior t + x. Si nuestros modelos ofrecen indicios de que los precios subirn en el futuro cercano, con los valores pronosticados de alta T o seales de compra, vamos a considerar la apertura de una posicin larga. Esta posicin slo se abrir si se encuentran fuera del mercado. Con este fin vamos a publicar una orden de compra que se llevar a cabo en un tiempo t y pr precio. Al igual que antes, inmediatamente se publicar dos nuevos pedidos. La primera ser una orden limitada de venta con un precio objetivo de la pr + p%, lo que slo ser ejecutada si el mercado alcanza un precio de + pr% o por encima de p. Esta orden lmite de venta tendr un plazo de 10 das, como antes. El segundo orden es una venta dejar de orden con el precio PR - l%, que a su vez limitar los eventuales prdidas de l%. Esta primera estrategia puede ser vista como conservador un poco, ya que slo tendr una sola posicin abierta en cualquier momento. Por otra parte, despus de 10 das de espera para el objetivo de beneficio, las posiciones se cierran inmediatamente. Tambin vamos a considerar un aspecto ms "arriesgada" estrategia de negociacin. Esta otra estrategia es similar a la anterior, con la excepcin de que siempre vamos a abrir nuevas posiciones si hay seales con dicha indicacin, y si tenemos suficiente dinero para eso. Por otra parte, vamos a esperar por siempre para las posiciones a llegar a un objetivo de beneficio o la prdida mxima permitida. Slo se consideran estas dos estrategias principales de comercio, con ligeras variaciones en los parmetros utilizados (por ejemplo, tiempo de mantenimiento, el margen de beneficio esperado, o la cantidad de dinero invertido en cada posicin). Como se ha mencionado, estas son simplemente elegidas con fines ilustrativos.

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

50

La funcin tradingEvaluation() se puede utilizar para obtener una serie de econmico indicadores del desempeo durante este perodo de la simulacin:

Tambin podemos obtener una representacin grfica de la actuacin del operador utilizando la funcin de trama () como sigue: > plot(t1, market, theme = "white", name = "SP500") El resultado puede verse en la siguiente figura:

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

51

3.6 Modelo de Evaluacin y Seleccin En esta seccin vamos a estudiar la forma de obtener estimaciones fiables de los criterios de evaluacin seleccionados. Estas estimaciones nos permiten comparar y seleccionar adecuadamente entre los diferentes sistemas alternativos de negociacin.

3.6.1 Estimaciones de Monte Carlo Problemas de series de tiempo como el que estamos abordando traer nuevos desafos en trminos de la obtencin de estimaciones fiables de las mtricas nuestra evaluacin. Esto es causado por el hecho de que todas las observaciones de datos tienen una etiqueta de tiempo adjunto que impone un orden entre ellos. Este orden se debe respetar con el riesgo de obtener estimaciones que no son fiables. En el captulo 2 se utiliz el mtodo de validacin cruzada para obtener estimaciones fiables de las estadsticas de evaluacin. Esta metodologa incluye un nuevo muestreo aleatorio paso que cambia el orden original de las observaciones. Esto significa que la validacin cruzada no se debe aplicar a los problemas de series de tiempo. La aplicacin de este mtodo podra significar para probar los modelos en las observaciones que son mayores que las utilizadas para su obtencin. Esto no es factible en la realidad, y por lo tanto los estimados obtenidos por este proceso son poco fiables y posiblemente optimista demasiado, ya que es ms fcil predecir el pasado dado el futuro que lo contrario. Nuestra base de datos incluye cerca de 30 aos de cotizaciones diarias. Vamos a evaluar todas las alternativas mediante la estimacin de su rendimiento en un equipo de prueba de 5 aos de cotizaciones, cuando se les da 10 aos de datos de entrenamiento. Esto asegura tren y tamaos de prueba que son suficientemente grandes, y, adems, que deja espacio para las repeticiones diferentes de este proceso de prueba como tenemos 30 aos de datos. En cuanto a la metodologa experimental, vamos a utilizar un Monte Carlo expeperimento de obtener estimaciones fiables de las mtricas nuestra evaluacin. Mtodos de Monte Carlo se basan en un muestreo aleatorio para obtener sus resultados. Vamos a utilizar este proceso de toma de muestras para elegir un conjunto de puntos R en nuestro perodo de 30 aos de cotizaciones. Para cada punto de tiempo r seleccionados al azar, vamos a utilizar la anterior 10 aos de cotizaciones para obtener los modelos y los siguientes 5 aos para ponerlos a prueba. Al final de estas iteraciones R tendremos estimaciones R para cada una de las mtricas nuestra evaluacin. Cada una de estas estimaciones se obtiene en una ventana seleccionada al azar de 15 aos de datos, los primeros 10 aos utilizados para la formacin y los aos restantes re-5 para la prueba. Esto asegura que nuestros experimentos siempre respetar el tiempo de ordenamiento de las series temporales de datos. Repitiendo el proceso R veces se asegurar suficiente variabilidad en el tren + condiciones de la prueba, lo que aumenta la fiabilidad de

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

52

nuestras estimaciones. Por otra parte, si se utiliza el mismo conjunto de puntos de I seleccionados al azar para evaluar distintas alternativas, podemos llevar a cabo comparaciones por pares para obtener los niveles estadsticos de confianza en las diferencias observadas de rendimiento medio. La figura que sigue a continuacin, resume el mtodo de Monte Carlo experimental. Observe que, como hemos de garantizar que por cada punto r azar hay 10 aos de datos antes y despus de 5 aos, esto elimina algunos de los datos de la seleccin al azar de los puntos R.

La funcin experimentalComparison (), que se utiliz en el Captulo 2 para llevar a cabo k veces validacin cruzada experimentos, tambin se puede utilizar para experimentos de Monte Carlo. En la siguiente seccin vamos a utilizar para obtener estimaciones confiables de los parmetros de evaluacin seleccionados para varios sistemas alternativos de negociacin. 3.6.3 Anlisis de los Resultados El cdigo proporcionado en la seccin anterior generales ve los datos con la objetos que contienen los resultados de todas las variantes que afectan a los sistemas de aprendizaje he hemos intentado. Estos datos se les denomina \ svmR.Rdata ", \ svmC.Rdata", \ earth.Rdata ", \ nnetR.Rdata", y \ nnetC.Rdata ". Cada uno de ellos contiene un objeto con el mismo nombre del fichero, excepto la extensin. Estos objetos son de clase compExp, y nuestro paquete contiene varios mtodos que pueden ser utilizados para explorar los resultados que se almacenan. Debido a que es probable que no se haya ejecutado los, puedes acceder a los ficheros en la pgina web del libro. Descarga a tu ordenador y luego usa los siguientes comandos para cargar los objetos en R: > load("svmR.Rdata") > load("svmC.Rdata") > load("earth.Rdata") > load("nnetR.Rdata") > load("nnetC.Rdata")

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

53

Es posible que tengamos una mejor idea de la distribucin de los puntajes en algunas de estas estadsticas en todas las 20 repeticiones por el trazado del objeto compExp:

El resultado de este cdigo se muestra en la figura a continuacin:

Las puntuaciones de los dos sistemas que utilizan esquemas de ventanas son muy similares, por lo que es difcil distinguir entre ellos. Por el contrario, los resultados de "single.nnetR.v12" son claramente distintos. Podemos observar que la rentabilidad media alta se consigue gracias a un rendimiento claramente anormales (alrededor de 2800%) en una de las iteraciones del experimento de Monte Carlo. El resto de las puntuaciones de este sistema parecen claramente inferiores a las puntuaciones de los otros dos. Slo por curiosidad, podemos comprobar la configuracin de este sistema de comercio en particular usando la funcin getVariant ():

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

54

En resumen, teniendo en cuenta estos resultados, si tuviramos que seleccionar cualquiera de las alternativas consideradas, es probable que salte la "single.nnetR.v12", dada su inestabilidad. Sin embargo, en la siguiente seccin vamos a aplicar nuestros tres mejores sistemas de comercio en los ltimos 9 aos de datos que se quedaron fuera de la evaluacin final de los mejores sistemas.

3.7 El sistema de comercio En esta seccin se presentan los resultados obtenidos por los "mejores" modelos en el perodo de evaluacin final, que se qued fuera de la comparacin de los modelos y las etapas de seleccin. Este periodo est formado por 9 aos de cotizaciones, y vamos a aplicar los cinco sistemas seleccionados para el comercio durante este perodo con nuestro simulador.

3.7.1 Evaluacin de los Datos de Prueba Final Para aplicar cualquiera de los sistemas seleccionados en el perodo de evaluacin, tenemos que en los ltimos 10 aos antes de este perodo de evaluacin. Los modelos se pueden obtener con estos 10 aos de datos y, a continuacin se le pedir para que su seal de prediccin ciones de los 9 aos del perodo de evaluacin. Estas predicciones en realidad puede implicar la obtencin de modelos ms en el caso de los sistemas que utilizan sistemas de ventanas. El siguiente cdigo obtiene las estadsticas de evaluacin de estos sistemas en el perodo de prueba de 9 aos. Ahora procedemos a un anlisis ms profundo del funcionamiento de este sistema de comercio de los mejores en todo el perodo de evaluacin. Para que esto sea posible, tenemos que obtener el registro de comercio del sistema durante este perodo. La funcin de crecimiento () no devuelve este objeto, por lo que tenemos que obtener por otros medios:

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

55

La figura a continuacin referida a parcelas el registro comercial del sistema, se obtuvo como sigue: > plot(trade.res, market, theme = "white", name = "SP500 - final test")

El anlisis de la figura revela que el sistema pas por un largo perodo de tiempo casi sin actividad comercial, es decir, desde mediados de 2003 hasta mediados de 2007. Esto es algo sorprendente, ya que fue un perodo de aumento significativo en el mercado. Esto de alguna manera muestra que el sistema no se est comportando tan bien como pudo, a pesar de los resultados globales observados. Tambin cabe destacar que el sis-tema sobrevivido muy bien en la tendencia

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

56

general a la baja en el perodo comprendido entre 2000 hasta 2003, y tambin durante la crisis financiera de 2007-2009.

El Paquete PerformanceAnalytics proporciona un conjunto enorme de herramientas para analizar el rendimiento de cualquier sistema de comercio. A continuacin presentamos un vistazo a algunas de estas herramientas para obtener una mejor visin del rendimiento de nuestro sistema de comercio. Las herramientas de este paquete de trabajo en las declaraciones de la estrategia en evaluacin. Los rendimientos de nuestra estrategia pueden obtenerse como sigue: > library(PerformanceAnalytics) > rets <- Return.calculate(trade.res@trading$Equity) La figura a continuacin muestra los beneficios acumulados de la estrategia a travs de todas las pruebas perodos. Para obtenerla, es suficiente para ejecutar el siguiente cdigo: > chart.CumReturns(rets, main = "Cumulative returns of the strategy", + ylab = "returns")

Durante la mayor parte del perodo, el sistema se encuentra en el lado positivo, habiendo alcanzado un mximo del 10% de rendimiento a mediados de 2008. Con frecuencia es til para obtener informacin sobre los rendimientos sobre una base anual o incluso mensual. El paquete PerformanceAnalytics proporciona

Minera de Datos con R

Captulo 3: Prediccin de Beneficios del Mercado Burstil

57

algunas herramientas para ayudar con este tipo de anlisis, a saber, el yearlyReturn function(): > yearlyReturn(trade.res@trading$Equity)
yearly.returns 2000-12-29 0.028890251 2001-12-31 -0.005992597 2002-12-31 0.001692791 2003-12-31 0.013515207 2004-12-31 0.002289826 2005-12-30 0.001798355 2006-12-29 0.000000000 2007-12-31 0.007843569 2008-12-31 0.005444369 2009-08-31 -0.014785914

La figura a continuacin presenta esta informacin de forma grfica y podemos observar que slo haba 2 aos con rentabilidades negativas.

> plot(100*yearlyReturn(trade.res@trading$Equity), + main='Yearly percentage returns of the trading system') > abline(h=0,lty=2)

Вам также может понравиться