---
title: "Tarea 3 - Inteligencia de Negocios y Mineria de Datos"
author: "Rolando Esquivel, Alejandro Masis y Jorge Rodriguez"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
# carga de paquetes necesarios
library(plyr)
library(arules)
library(arulesViz)
library(tidyverse)
library(ggplot2)
library(knitr)
library(lubridate)
```
# Entendimiento del negocio
## Objetivos de la minería de datos
* Test 1
## Criterio de éxito
# Entendimiento de los datos
## Exploración de los datos
## Verificación de la calidad de datos
Test 2
### Lectura de datos
```{r}
# lectura de los datos
datos<- read.csv('Encuesta.csv',sep=',',dec='.',stringsAsFactors = FALSE)
```
# Preparación de los datos
## Selección de los datos
## Limpieza de los datos
## Construcción de nuevos datos (atributos)
## Transformaciones aplicadas a los datos
### Transformación inicial de los datos
```{r}
# se convierten a factor las variables no numéricas
datosCompletos<- datos %>% mutate(Tiempo_comunidad=as.factor(Tiempo_comunidad))
datosCompletos<- datosCompletos %>% mutate(Sexo=as.factor(Sexo))
datosCompletos<- datosCompletos %>% mutate(Trabaja=as.factor(Trabaja))
datosCompletos<- datosCompletos %>% mutate(Familia=as.factor(Familia))
datosCompletos<- datosCompletos %>% mutate(Hobbies=as.factor(Hobbies))
datosCompletos<- datosCompletos %>% mutate(Club_Social=as.factor(Club_Social))
datosCompletos<- datosCompletos %>% mutate(Politica=as.factor(Politica))
datosCompletos<- datosCompletos %>% mutate(Profesional=as.factor(Profesional))
datosCompletos<- datosCompletos %>% mutate(Medioambiente=as.factor(Medioambiente))
datosCompletos<- datosCompletos %>% mutate(Grupo_Apoyo=as.factor(Grupo_Apoyo))
```
### Transformar a formato transacción
```{r echo=FALSE}
# luego se concatena con una coma
transacciones <- as(datosCompletos,"transactions")
```
# Fase de modelado
## Selección de técnicas
## Construcción del modelo
* Selección de los parámetros
* Ejecución (generación de reglas, eliminación de subconjuntos,etc)
* Descripción general de las reglas obtenidas (incluya al menos un gráfico)
### Generación de las reglas usando A priori con Confianza como Criterio de filtrado
```{r}
# se generan las reglas usando el algoritmo a priori, con un soporte del 1% y una confianza de 0.8
reglas_alta_conf<- apriori(transacciones,parameter = list(supp=0.1,conf=0.9,maxlen=4,minlen=2))
# se ordena por confianza y se observan las primeras 10 reglas
inspect(sort(reglas_alta_conf,by='confidence',decreasing = TRUE)[1:10])
# eliminar reglas que son subconjuntos de otras
subconjuntos_ac<- which(colSums(is.subset(reglas_alta_conf,reglas_alta_conf))>1)
reglasFinal_ac<- reglas_alta_conf[-subconjuntos_ac]
# se ordena por soporte y se observan las primeras 10 reglas
inspect(sort(reglasFinal_ac,by='confidence',decreasing = TRUE)[1:5])
# se filtran las reglas con confianza superior a 0.25
mejoresReglas_ac<- reglasFinal_ac[quality(reglasFinal_ac)$confidence>0.9]
```
### Generación de las reglas usando A priori con Soporte como Criterio de filtrado
```{r}
# se generarn las reglas usando el algoritmo a priori, con un soporte del 1% y una confianza de 0.8
reglas_alto_supp<- apriori(transacciones,parameter = list(supp=0.4,conf=0.8,maxlen=4,minlen=2))
# se ordena por soporte y se observan las primeras 10 reglas
inspect(sort(reglas_alto_supp,by='support',decreasing = TRUE)[1:10])
# eliminar reglas que son subconjuntos de otras
subconjuntos_as<- which(colSums(is.subset(reglas_alto_supp,reglas_alto_supp))>1)
reglasFinal_as<- reglas_alto_supp[-subconjuntos_as]
# se ordena por soporte y se observan las primeras 10 reglas
inspect(sort(reglasFinal_as,by='support',decreasing = TRUE)[1:5])
# se filtran las reglas con confianza superior a 0.25
mejoresReglas_as<- reglasFinal_as[quality(reglasFinal_as)$support>0.5]
```
## Descripción de las reglas obtenidas
### Visualización de las 5 mejores reglas (según confianza) - grafo
```{r fig.align='center'}
cincoMejoresReglas_ac<- head(mejoresReglas_ac,n=5,by='confidence')
plot(cincoMejoresReglas_ac,method = 'graph',engine = 'htmlwidget')
```
### Visualización de las 5 mejores reglas (según soporte) - grafo
```{r fig.align='center'}
cincoMejoresReglas_as<- head(mejoresReglas_as,n=5,by='support')
plot(cincoMejoresReglas_as,method = 'graph',engine = 'htmlwidget')
```
# Evaluación de los modelos
Muestre e interprete las mejores 3 reglas de cada conjunto generado
### Exportar las reglas
```{r}
write(mejoresReglas_ac,file='mejoresReglasPorConfianza.csv',sep=',',quote=F,row.names=F)
write(mejoresReglas_as,file='mejoresReglasPorSoporte.csv',sep=',',quote=F,row.names=F)
```