lunes, 14 de abril de 2014

Estudio: Aplicaciones de la minería de datos con R


   He leído el libro "Data Mining Applications with R", Editors: Yanchang Zhao, Yonghua Cen, Elsevier, December 2013, ISBN: 978-0-12-411511-8, 514 pages.
 
   En él se presentan 15 proyectos reales donde se han utilizado técnicas de minería de datos utilizando la herramienta R. Me ha parecido muy interesante, siendo de gran ayuda para descubrir nuevas técnicas y paquetes R relacionados con la minería de datos, siendo utilizadas en la resolución de problemas de análisis reales.
 

1 - Power Grid Data Analysis with R and Hadoop.

   Análisis de series temporales de datos (big data) proporcionados por sensores (PMU) en la red eléctrica (aprox. 2TB, 53 millones registros generados por una red de sensores distribuidos).
  Se utilizan técnicas de análisis exploratorio (proceso interactivo e iterativo, involucrando limpieza de datos, y diferentes análisis estadísticos y visualizaciones de datos) en grandes cantidades de datos mediante la integración de R con Hadoop, para identificar diferentes patrones de pérdida de la sincronización en frecuencia (en la red eléctrica, la frecuencia de la señal debe ser la misma, independientemente del lugar donde se mida).
  Se realiza una interesante introducción a diferentes paquetes relacionados con la computación de altas prestaciones (High-Performance Computing, HPC), y se centra en el uso del paquete RHIPE para integrar R y Hadoop:
- Computación paralela multicore: parallel (integra snow y multicore). Aplicaciones que requieren gran capacidad de procesado, pero no recomendables para grandes cantidades de datos. 
- Trabajar con grandes datos fuera de la memoria de R: paquetes ff, bigmemory y RevoScaleR, especializados en trabajar con matrices o data frames con grandes cantidades de filas. 
- Procesado distribuido integrando R con Hadoop: paquetes rmr (utiliza el esquema de streaming de Hadoop) y RHIPE (integrado con la API de Java de Hadoop).

2 - Picturing Bayesian Classifiers: A Visual Data Mining Approach to Parameters Optimization.

   Es razonable pensar que existe un proceso oculto que modela y explica los datos que obtenemos en un problema. Generalmente no conocemos este proceso, pero sabemos que no es completamente aleatorio, lo que nos permite encontrar una buena y útil aproximación mediante algún modelo matemático conocido, el cuál se puede adaptar a diferentes comportamiento de los datos dependiendo del valor de varios parámetros:
- En el área de machine learning, se utilizan computadores programados para obtener el valor de estos parámetros, de forma que se optimice algún determinado criterio de rendimiento. 
- En la minería de datos visual se intenta involucrar al ser humano para explotar sus habilidades perceptivas en el proceso de exploración y selección de parámetros. 
   En este trabajo se implementa un GUI para que un usuario pueda visualizar el proceso de entrenamiento de un clasificador basado en Naive Bayes (clasificador probabilístico empleando el criterio bayesiano, en donde se asume independencia entre las variables para simplificar el modelo) y poder interactuar con él para mejorar las prestaciónes de clasificación. Se realiza una introducción teórica al clasificador y se introducen las distribuciones multivariantes de Bernuilli, multinomial y de Poisson como posibilidades para construir el modelo. Posteriormente se describe un modo gráfico para visualizar el proceso y resultados de la clasificación, que permite implementar una GUI donde el usuario puede utilizar para el diseño y verificación del clasificador.
   Se introducen diferentes paquetes para poder construir GUIs o plots interactivos como son RGGobi  o RStudio (fuerza a utilizar el IDE Rstudio). Se utilizan finalmente los paquetes gWidgets (API para crear GUIs interactivas), gWidgetsRGtl2 (usar las librerias de GIMP Toolkit con gWidgets), cairoDevice (insertar plot de R en una GUI GIMP) y ggplot2.

3 - Discovery of emergent issues and controversies in Anthropology using text mining, topic modeling and social network analysis of microblog content.

   En esta aplicación se propone el uso de R para realizar labores de minería de texto,  análisis de contenidos y análisis de redes sociales en Twitter. Se estudia un hastag asociado con una reunión de la Asociación Americana de Antropología (AAA). Estudio de cuantos usuarios intervienen, estadísticas de tweets (tweets, retweets, menciones, otros hastags asociados), usuarios más influyentes (más retwitteados, más mencionado), la estructura de la comunidad que interviene (cómo están conectados los usuarios que intervienen en el hastag entre sí), análisis de contenido (analisis de asociación de términos, análisis de sentimientos, modelado de temas).

4 - Text Mining and Network Analysis of Digital Libraries in R.

   Otra aplicación de minería de texto, en este caso orientada hacia el estudio de una librería digital. Cinco pasos en el análisis:
- Preparación del conjunto de datos: uso de paqute tm para el procesado orientado al texto incluido en los diferentes documentos: quitar carácteres indeseados, puntuación, palabras sin valor...
- Exploración de matriz de términos en los documentos: relación entre documentos y términos.
- Análisis de temas y clustering de contenidos usando Latent Dirichlet Allocation, LDA: paquete lda, modelo que considera que cada documento se basa en una mezcla de tópicos o temas.
- Cohesión o clústering de documentos.
- Análisis de la red social entre los autores: paquetes igraph para construcción de grafos y sna para realización de mediciones en la red.

5 - Recommendation systems in R.

   En un sistema de recomendación se asocia determinados tipos de productos, items o servicios con determinado tipos de usuarios. Se busca ofrecer al usuario nuevos productos, items o servicios más acordes a sus preferencias o comportamientos.
  Se utiliza el paquete recommenderlab para la construcción de sistemas de recomendación (en este caso de películas, basado en la puntuación de los usuarios en MovieLense). Inicialmente se introducen diferentes medidas utilizadas en la evaluación de estos sistemas (error cuadrático medio, precision/recall/f-value/AUC, hit rate, serendipity...). Posteriormente se centra en los diferentes modelos que se pueden construir con el paquete anteriormente mencionado: selección aleatoria, items más populares y modelos basados en el filtrado colaborativo:
- Atendiendo al tipo de usuarios UBCF o atendiendo al tipo de item IBCF.
- Atendiendo a factores latentes (donde se utilizan técnicas SVD o PCA para simplificar el problema).
- Filtrado basado en contenido.
- Binarización de datos + reglas de asociación.

6 - Response Modeling in Direct Marketing: A Data Mining Based Approach for Target Selection.

   Las empresas tradicionalmente han utilizado promociones de sus productos a gran escala (marketing masivo), proporcionando a todos los clientes las mismas ofertas y productos. En este tipo de estrategia no se tiene en cuenta las diferencias entre clientes. Otro tipo de estrategia es la llevada a cado en el marketing directo, donde se pretende establecer una relación directa con los clientes y proporcionarles ofertas de productos o servicios específicos acordes con lo que se estima que puede resultarles más interesantes. Utilizando datos históricos de compras y datos demográficos entre otros, se utilizan técnicas de data mining y modelado predictivo para generar modelos de clientes a los que les puede interesar un cierto producto o servicio.
   Esta aplicación se basa en la creación de un modelo de respuesta para predecir la probabilidad de que un determinado cliente pueda verse atraido por una nueva promoción u oferta. El modelo de respuesta se formula como un problema de clasificación binaria (un detector), dividiendo los clientes en dos clases, clientes interesados y no interesados. El modelo de respuesta propuesto consite en diferentes pasos: recolección de datos, preprocesado, extracción de características,  selección de características, balanceado entre clases, clasificación y evalucación. Se aplica utilizando datos de un banco privado Iraní: utilizando diferentes variables RFM (recency, frequency, monetary) que indican el comportamiento en las compras de los clientes, y diferente información demográfica. Se utilizan 85 variables primarias.
   Se construyen variables secundarias mediante la multiplicación de todas las posibles parejas. Utilizando la medida F-score (sencilla medida para medir la discriminación entre dos set de numeros reales) se escogen las 20 medidas secundarias que presentan mayor discriminación. De las 105 variables (85 directas+20 secundarias) se escogen solamente 50 utilizando la misma medida de F-score. Utilizando una técnica de selección de características basada en Random Forest (paquetes randomForest y varSelRF) se seleccionan las 26 mejores variables y se realiza un balanceado entre clases (basado en un submuestreo de la clase de clientes no interesados).  Se entrena un clasificador SVM (paquete e1071) con kernell RBF y una técnica de "grid-search" con validación cruzada (5 validaciones) para escoger el valor de los parámetros C y gamma del clasificador.

7 - Caravan Insurance Policy Customer Profile Modeling with R Mining.

   Se presenta otra aplicación de modelado de la respuesta de los clientes, en este caso en una empresa de seguros de caravanas. En este caso se utilizan cuatro técnicas diferentes en la implementanción del clasificador binario: recursive Partitioning (paquetes rpart y caret), Bagging Ensemble (libreria ipred), SVM y clasificador basado en regresión lineal.

8 - Selecting Best Features for Predicting Bank Loan Default.

   Una aplicación donde se habla de técnicas de selección de características en la predicción de inclumplimiento de préstamos bancarios. En esta aplicación se implementa otro sistema de detección (clasificación binaria). Se comentan los pasos de extracción de datos, exploración y limpieza, detección de elementos nulos: paquete VIM, detección de outliers: técnica boxplot y clustering paquete cluster, normalización, balanceado de datos: método SMOTE paquete DMwR, selección de características usando Random Forest  y clasificación mediante árbol de decisión.

9 - A Choquet Integral Toolbox and its Application in Customer's Preference Analysis.

   Actualmente, la identificación de las preferencias de los clientes es esencial para tareas de producción y marketing en la administración de empresas. La toma de decisiones basada en datos de clientes involucra la comparación de diversas alternativas, las cuales son evaluadas siguiendo varios factores relativos a las prioridades de los clientes (multicriteria decision making, MCDM). En este caso se utiliza el método Choquet Integral para la agregación de fuzzy meassures para asignar importancia a todos los posibles grupos de criterios para modelar un proceso MCDM.
   Inicialmente se presenta la teoría y  se introduce un sencillo ejemplo  para ilustrar la utilización del paquete Rfmtool. Posteriormente se demuestra el uso del método basado en Choquet integral de agregación de fuzzy meassures para descubrir las preferencias de los viejeros en la selección de los hoteles utilizando datos extraidos de tripadvisor.com.

10 - A Real-Time Property Value Index based on Web Data.

   Se presenta una metodología para obtener estimadores fiables del nivel del precio de la vivienda en una determinada área.  Se obtienene los datos del precio de la vivienda en Bilbao utilizando los anunciós publicados por particulares en el portal www.idealista.com. No se especifica el proceso completo de captura de datos, pero se nos proporciona detalles de como se ha realizado: cada oferta subida por un usuario se encuentra en una URL, la cual es descargada a un archivo FILE y después se analiza su código HTML utilizando el paquete XML:
 download.file(URL,File,quiet=0, method="get")  ...
 doc <- htmlTreeParse(file=FILE)$children$html[["body"]]   ...
   Se realiza geocoding, obteniendo datos de las coordenadas geográficas a partir de las direcciones de las viviendas. Se introduce la API de Google maps en paquete ggmap para la realización de geocoding, y los paquetes maptools, rgdal, RgoogleMaps y sp para acceder a la cartografía, dibujar mapas y superponer polígonos o puntos en un mapa para descubrir patrones.
   Se entrenan modelos de regresión hedónica para medir el efecto del tiempo en el precio de venta de las viviendas. Paquetes gam, mgcv

11 - Predicting Seabed Hardness Using Random Forest in R.

   Se implementa un sistema de predicción de la dureza del suelo marino utilizando 15 variables relacionadas con la barimetría y backscatter. Se implementa un sistema de detección o clasificación binaria, categorizando el sustrato en hard o soft. Se utiliza un modelo basado en Random Forest.

12 - Supervised classification of images, applied to plankton samples using R and zooimage.

   En este caso se implementa un sistema de clasificación basado en imágenes. Se entrena un sistema de clasificación de muestras de plancton. Se utilizan los paquetes zooimage y mlearning, los cuales proporcionan diferentes funciones que ayudan en el trabajo de la adquisición y análisis de las imágenes, el procesado de metadatos, la elaboración de datasets para training/test y el procesado final de los datos. En el estudio se testean dos clasificadores binarios: Random Forest y SVM usando un kernell lineal. 

13 - Crime analyses using R.

   Se construye un modelo de regresión multivariante para predecir el número de crímenes usando datos históricos del crimen en la ciudad de Chicago. Se utiliza maptools para poder realizar geocode y representación de datos sobre un mapa. El modelo de regresión utilizado es el basado una distribución binomial negativa, utilizando para su entrenamiento el paquete MASS (funcion glm.nb() ).

14 - Football Mining with R.

   Se realiza un modelo de clasificación utilizando un dataset con diferentes datos estadísticos sobre los partidos de futbol que tuvieron lugar en la temporada 2010-2011 de la Serie A italiana. Con datos como el número de tiros a puerta, faltas, balones recuperados, asistencias de gol, porcentaje de posesión... se pretende crear un sistema predictivo para predecir si el partido acabará en victoria, empate o derrota del equipo local.
   Se utiliza Random Forest para extraer las 13 mejores variables explicatorias del conjunto de 481 características inicial (variable selection). Posteriormente se utiliza PCA para la reducción de dimensionalidad; se realiza PCA de forma separada para las variables relacionadas con el equipo local y con el visitante (6 y 7 variables de las 13 respectivamente), para obtener finalmente 6 variables con las que implementar el clasificador. Se implementan diferentes clasificadores: Random Forest, red neuronal (perceptrón multicapa), k vecinos próximos, clasificador Naive Bayes y un modelo de regresión logística multinomial. Se incluye una tabla donde se comenta el proceso seguido y los paquetes utilizados en cada paso:
 Aparte de los modelos de clasificación utilizados, se habla sobre otras posibilidades:
  • Basados en árboles: gradient boosting machine (paquete gbm), árboles condicionales (paquete party) y logic forest (paquete LogicForest).
  • Basados en redes Bayesianas: Bayesian belief network (paquete bnlearn).
  • SVM (paquetes e1071, kernlab, klar, svmpath).
   También se habla de mejoras utilizando técnicas de balanceado entre clases: sobremuestreo, submuestreo, boosting, bagging y submuestreo aleatorio repetido. Se habla de los paquetes caret para realizar submuestreo/sobremuestreo y del paquete DMwR y la función SMOTE para generar muestras artificiales de la clase minoritaria, submuestreando simultaneamente el resto de clases.   

15 - Analyzing Internet DNS (SEC) Traffic with R for Resolving Platform Optimization.

   Se utiliza R para estudiar el tráfico DNS y mejorar la carga de un servidor reduciendo el número de resoluciones. Se implementa un sistema de balanceado de carga basado en la partición del tráfico DNS entre varios servidores con respecto al FQDN solicitado.
   Se analiza el trafico DNS para extraer ciertas variables que caractericen las FQDN y permitan definir una tabla de enrutado, procesando las peticiones con un servidor diferente dependiendo de estas características. Existen 27 características relacionadas con las FQDN en una petición DNS. Se utiliza PCA ( función prcomp() paquete stats ) para reducir dimensionalidad, obteniendose 10 variables compuestas. Del estudio del proceso PCA se deriva un método de selección de variables, escogiendo 7 variables. Utilizando estas variables se realiza un clustering, con el objetivo de separar las FQDN en diferentes grupos dependiendo de sus costes. 

No hay comentarios:

Publicar un comentario