miércoles, 23 de abril de 2014

Laboratorio: Sistema de Recomendación con Mahout

Tutorial de creación de sistema de Recomendación

   En la pagina web de Apache Mahout se proporciona un pequeño tutorial de cómo crear un sistema de recomendación (filtrado colaborativo entre usuarios):

https://mahout.apache.org/users/recommender/userbased-5-minutes.html

Pasos seguidos: 
  1. Integración de Eclipse con Maven.
  2. Creación de un Proyecto Maven.
  3. Añadir dependencias en "pom.xml". En mi caso tengo instalado la versión de mahout de la distribución CDH5 de cloudera.
        <dependency>                                                  
            <groupId>org.apache.mahout</groupId> 
            <artifactId>mahout-core</artifactId>          
            <version>0.8-cdh5.0.0</version>              
        </dependency>                                                 
     
     
Recomendación de 3 items al usuario 2
Evaluación del sistema de recomendación











Aplicación del sistema de recomendación en un dataset real

   El grupo de investigación GroupLense proporciona a través de su pagina web diversos datasets de puntuaciones de películas proporcionadas por diferentes usuarios extraídos de la página MovieLens. He utilizado el dataset MovieLens 1M, que proporciona 1 millón de puntuaciones proporcionadas por 6000 usuarios sobre 4000 películas.

Ejemplo de recomendación de películas.


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. 

Laboratorio: Análisis de redes sociales (Social Network Analysis) en R

   He utilizado la API de twitter en R (paquete twitteR) para realizar un estudio de mi red social en Twitter y poder ampliar mi lista de personas y entidades relacionadas con las nuevas tecnologías, data science y big data a las que sigo.

   Para ello he creado un script que obtiene la lista de cuentas de twitter a las que sigo (las denominaré amigos de primer nivel), las filtra permitiéndome elegir aquellas relacionadas con temas de tecnología, data science y big data, y obtiene la lista de cuentas seguidas por cada una de ellas (amigos de segundo nivel). Para discriminar entre la gran cantidad de cuentas de segundo nivel aquellas que puedan ser más interesantes he utilizado como criterio de corte sólo elegir aquellas que sean seguidas por más de tres de mis 'amigos' (si existen diferentes cuentas de primer nivel relacionadas con los temas que me interesan que siguen a una misma cuenta, es lógico pensar que esa nueva cuenta de segundo nivel también estará relacionada).

 En las siguientes imágenes se muestras el grafo inicial de cuentas de primer nivel que he escogido y el grafo de la red social de cuentas de segundo nivel generado a partir de las cuentas que sigo yo (en rojo mi cuenta, en verde las cuentas que yo sigo y en azul las cuentas de segundo nivel que pueden resultar interesantes):














   A continuación incluyo el código del script R que he creado:

Laboratorio: Data mining en Twitter utilizando R

   Twitter es una gran fuente de datos para la minería de datos. Técnicas basadas en la minería de texto (Text Mining), el análisis social, de sentimientos (Sentiment Analysis) y de opiniones (Opinion Mining) se han vuelto muy populares para extraer conocimiento de los tweets que publican los usuarios.
 
   He seguido las siguientes referencias para aprender a autentificarte en Twitter con R, poder descargar información y tweets, y realizar diferentes análisis:
 

 Autenticación en Twitter


1. - Registrar cuenta como desarrollador en Twitter https://dev.twitter.com/.
2. - Crear nueva aplicación desde el perfil de la cuenta de desarrollador (My applications -> create new app).
3. - Activarla en el apartado de Aplicaciones de tu cuenta de Twitter personal.
4. - Desde la cuenta de desarrollador, metiendonos en la configuración de la aplicacion creada se pueden obtener 3 webs (Request token URL, Authorize URL, Access token URL) y las claves publica y privada (API key y API secret).

Con el siguiente código podemos guardarnos las credenciales de acceso a Twitter (R nos pedirá que  accedamos a una pagina web donde se muestra un código numérico que debemos introducir) .
 # Lograr autentificación con Twitter usando R
# ----------------------------------------------------------------------------------------------
  library("ROAuth") 
  # Necesitamos descargar el archivo para la certificacion digital
    download.file(url="http://curl.haxx.se/ca/cacert.pem", destfile="cacert.pem") 
  # Credenciales de acceso
    cred <- OAuthFactory$new(consumerKey='--------------',
                             consumerSecret='-----------------',
                             requestURL='https://api.twitter.com/oauth/request_token',
                             accessURL='https://api.twitter.com/oauth/access_token',
                             authURL='https://api.twitter.com/oauth/authorize')
    cred$handshake(cainfo="cacert.pem")
  # Guardamos las credenciales para su posterior uso
    save(cred, file="autentificacion_twitter.Rdata")
Podemos cargar y autentificarnos cuando deseemos utilizando:
## Credenciales de identificación con twitter
require(twitteR)
  load("twitter authentication.Rdata")
  registerTwitterOAuth(cred)
 

Realizando diferentes pruebas y análisis

 
Utilizando las diferentes referencias que he comentado anteriormente, he creado un script para analizar información extraída de un hashtag. Lo he probado con el primer hashtag en la lista de tendencias en este momento: #IABEstudioRRSS.
 

Paquetes de R: twitteR (acceso a twitter desde R),  stringr, tm (manejo de strings y funciones de minería de texto) y wordcloud (nos permite dibujar gráfico de nube de palabras). Se han leido 1200 tweets del hastag #IABEstudioRRSS (la API de tweeter no permite la lectura de más), analizando cuantas personas intervienen, quién son los usuarios más activos, los más retwitteados y los más citados. Se visualizan los términos más frecuentes en un gráfico de barras y también se representa la nube de palabras. Se realiza un clústering jerárquico de palabras, así como un clústering de los Tweets (utilizando tanto K-means como K-medoids).

Rapidamente podemos deducir mediante este pequeño análisis del hashtag que se habla de un estudio de los usuarios de las redes sociales (facebook, twitter, youtube, spotify, whatsapp). Podemos deducir que twenty es una red social cada vez más en el olvido. Parece ser que han colgado en slideshare una presentación con los resultados del estudio. Que en la fábrica de tapices se celebrará algun tipo de acto relacionado. Los internautas acceden a diario a través del movil. Las marcas parece ser que incluyen publicidad en las redes sociales en base al perfil de las personas. También parece ser que la red social más valorada por los usuarios es spotify.


jueves, 10 de abril de 2014

Estudio: R y la minería de datos


Sitio web: http://www.rdatamining.com/ Contiene mucha información sobre utilización de tecnicas de mineria de datos en R.

   En esta web podemos encontrar un libro muy interesane sobre el uso de R en tareas de minería de datos:
Yanchang Zhao. R and Data Mining: Examples and Case Studies. ISBN 978-0-12-396963-7, December 2012. Academic Press, Elsevier. 256 pages. URL: http://www.rdatamining.com/docs/RDataMining.pdf.
   He seguido los ejemplos incluidos el el libro para seguir con mi aprendizaje de R y la mineria de datos. A continuación incluyo un pequeño resumen del libro y las pruebas que he realizado:
 

1 Introduction 

   La minería de datos es el proceso de transformar una cantidad de datos en información, reportándonos interesantes conocimientos a través de su análisis. Se define como un área de conocimiento interdisciplinaria, aunando otras áreas como son la estadística, machine learning, reconocimiento de patrones, bioinformática, recuperación de información y visualización.
   La minería de datos puede ser a su vez englobada en el área de la ciencia de los datos (data science) donde, además de las técnicas de extracción de información, se incluye elementos de la ciencia de la computación (datawarehosing, computación de altas prestaciones, computación paralela, computación distribuida...), con objeto a crear productos o aplicaciones que almacenen, procesen y extraigan información de estos datos.
1.1 Data Mining
1.2 R
1.3 Datasets
1.3.1 The Iris Dataset: propicio para testear algoritmos de clasificación.
1.3.2 The Bodyfat Dataset: propicio para regresión, la variable DEXfat (indice de grasa corporal) se debe predecir en base a otras 9 variables con información de una persona (edad, medida de la cintura, ancho entre hombros...).

2 Data Import and Export 

Se muestra como importar datos al entorno R y exportar los objetos R a otros formatos.  Paquete foreign {read.ssd()} se utiliza para importar datos de SAS. El paquete RODBC {odbcConnect(), sqlQuery(), sqlSave(), sqlUpdate(), odbcClose()} se utiliza para importar datos de base datos SQL.
2.1 Save and Load R Data
2.2 Import from and Export to .CSV Files
2.3 Import Data from SAS
2.4 Import/Export via ODBC
2.4.1 Read from Databases
2.4.2 Output to and Input from EXCEL Files

3 Data Exploration

En este capítulo se muestra cómo realizar una primera exploración de los datos tanto de forma individual como en conjunto (observar tipos de datos, dimensionalidad, estructura, extraer estadísticos básicos, mostrar algunos gráficos, estadísticos multivariantes..). Se utiliza el dataset Iris para comprobar el uso de las funciones. 
Descargar archivo R

3.1 Have a Look at Data
dim(), names(), str(), attributes(), head(), tail()
3.2 Explore Individual Variables
summary(), mean(), median(), range(), ecdf(), quantile(), var(), hist(), density(), table(), pie(), barplot()
Utilizando density he programado una función que muestra las PDF de una variable condicionadas a cada clase, y la PDF de la variable (escalada). 
 3.3 Explore Multiple Variables
cov(), cor(), aggregate(), boxplot(), mostrar scatterplot con plot(), jitter(), scales pairs() 
3.4 More Explorations
scatterplot3d scatterplot3d(), rgl plot3d(), heatmap(), lattice levelplot(), lattice contour(), lattice persp(), lattice parallelplot(), MASS parcoord(), ggplot2 qplot()
3.5 Save Charts into Files

4 Decision Trees and Random Forest

   En este capítulo se muestra como construir modelos predictivos basados en arboles de decisión (Decisión Trees) y combinaciones de ellos (Random Forest) usando los paquetes party, rpart y randomForest. Se implementa un clasificador basado en árboles de decision utilizando el dataset Iris y una regresión basada en el modelo predictivo de Random Forest utilizando el dataset BodyFat.
Descargar archivo R.
4.1 Decision Trees with Package party
4.2 Decision Trees with Package rpart
4.3 Random Forest

5 Regression 

   Una regresión se basa en construir una función que actua sobre una serie de variables llamadas predictores para predecir el valor que tomará otra variable llamada respuesta.  En este capítulo se presentan ejemplo de varias técnicas de regresión.
Descargar archivo R

5.1 Linear Regression
5.2 Logistic Regression
5.3 Generalized Linear Regression
5.4 Non-linear Regression

6 Clustering 

En este capítulo se presentan varias técnicas de clustering (agrupamiento de datos). 
 Descargar archivo R
6.1 The k-Means Clustering
6.2 The k-Medoids Clustering
6.3 Hierarchical Clustering
6.4 Density-based Clustering
7 Outlier Detection
7.1 Univariate Outlier Detection
7.2 Outlier Detection with LOF
7.3 Outlier Detection by Clustering
7.4 Outlier Detection from Time Series
7.5 Discussions

8 Time Series Analysis and Mining

8.1 Time Series Data in R
8.2 Time Series Decomposition
8.3 Time Series Forecasting
8.4 Time Series Clustering
8.4.1 Dynamic Time Warping
8.4.2 Synthetic Control Chart Time Series Data
8.4.3 Hierarchical Clustering with Euclidean Distance
8.4.4 Hierarchical Clustering with DTW Distance
8.5 Time Series Classification
8.5.1 Classification with Original Data
8.5.2 Classi_cation with Extracted Features
8.5.3 k-NN Classi_cation
8.6 Discussions
8.7 Further Readings

9 Association Rules 

   En minería de datos y aprendizaje automático, las reglas de asociación se utilizan para descubrir hechos que ocurren en común dentro de un determinado conjunto de datos. Se han investigado ampliamente diversos métodos para aprendizaje de reglas de asociación que han resultado ser muy interesantes para descubrir relaciones entre variables en grandes conjuntos de datos.
   A -> B donde A y B son conjuntos de datos disjuntos. Tres medidas muy usadas para selecciones reglas interesantes son el soporte, la confianza y el lift (mejora de la confianza). Existen otras mediciones como son: chi-cuadrado, conviccion, gini, leverage..
   Se utiliza un dataset con una tabla con 4 dimensiones, con información de las personas que iban abordo del titanic de acuerdo a su clase social, sexo, edad y si sobrevivieron o no.
Descargar archivo R
9.1 Basics of Association Rules
9.2 The Titanic Dataset
9.3 Association Rule Mining
9.4 Removing Redundancy
9.5 Interpreting Rules
9.6 Visualizing Association Rules
9.7 Discussions and Further Readings

10 Text Mining

10.1 Retrieving Text from Twitter
10.2 Transforming Text
10.3 Stemming Words
10.4 Building a Term-Document Matrix
10.5 Frequent Terms and Associations
10.6 Word Cloud
10.7 Clustering Words
10.8 Clustering Tweets

10.8.1 Clustering Tweets with the k-means Algorithm
10.8.2 Clustering Tweets with the k-medoids Algorithm
10.9 Packages, Further Readings and Discussions

11 Social Network Analysis

11.1 Network of Terms
11.2 Network of Tweets
11.3 Two-Mode Network
11.4 Discussions and Further Readings