domingo, 1 de noviembre de 2015

Red Neuronal con dataset iris

Script con red neuronal para predecir la variable Species del data set iris. Para detalles sobre redes neuronales, ver referencias.



Conceptualmente el modelo queda así:






domingo, 11 de octubre de 2015

Bagging en Paralelo con foreach+doParallel


Si se quiere entrenar un modelo usando la tecnica de bagging (ver concepto de bagging AQUI) y se tienen muchos datos, puede que el proceso demore mucho tiempo.

Una forma de reducir el tiempo es paralelizando los procesos, asignando a cada procesador una parte de los modelos a entrenar y luego unificar los resultados en un único modelo.

Conceptuelmente seria así:





domingo, 27 de septiembre de 2015

Graficos con qplot de ggplot2


Ejemplos de algunos graficos con funcion qplot del package ggplot2, usando data set mtcars y diamonds incluidos en el package:

martes, 8 de septiembre de 2015

Graficar Kmeans con clase conocida

Si se tienen datos con una clase definida, y se quiere saber qué tan bien pude segmentar el algoritmo Kmeans estas clases (para clases futuras), puede usarse PCA para graficar las observaciones.

En el siguiente gráfico se asigna un color diferente a cada cluster, y un símbolo diferente a cada clase conocida, para identificar donde se "equivocó" el cluster.


















NOTA:
Para otro ejemplo de graficar Kmeans ver publicacion AQUI.
Para concepto de Kmeans, ver publicacion AQUI

El script seria este:
modelo.km <- kmeans(iris[,-5],3)
acp       <- prcomp(iris[,-5])    
data.grf  <- data.frame( pca1  = acp$x[,1],
                         pca2  = acp$x[,2],
                         color = modelo.km$cluster)
plot(data.grf[,1:2],col=data.grf[,3], pch=as.integer(iris[,5]))




viernes, 31 de julio de 2015

Apuntes sobre R script

NOTA: Esta lista de script se actualiza constantemente


Guardar y leer archivos enformato de R (RDS)
saveRDS(datos_1, file = "C:/Carpeta/datos.rds")
datos    <-   readRDS("C:/Carpeta/datos.rds")


Identificar columnas con Valores Vacios en un DataFrame
VarSinDatos <- apply(Train,2,function(x)  min(nchar(x)))
VarSinDatos <- VarSinDatos[VarSinDatos==0]
print(VarSinDatos)


domingo, 19 de julio de 2015

Reglas de Asociacion

Si se quiere encontrar una asociación entre productos (o alguna otra cosa), puede usarse las Reglas de Asociación (también llamado Association Rule Learning), para identificar si la compra de unos productos está asociada con la compra de otros. A esto también le dicen Basket Analysis.

El resultado que se quiere seria este:







donde:
lhs: (left-hand-sides) es la parte izquierda de la regla, o antecedente (producto/s que "causa" la compra de otro producto)
rhs: ( right-hand-sides ) es la parte derecha de la regla, o resultado (producto comprado como "consecuencia" de otro producto)
Support:  es la frecuencia relativa de una regla sobre el total de transacciones
Confidence: mide qué tan confiable es la suposición hecha por la regla, es decir: que tantas veces sucede el rhs cuando se presenta el lhs, para cada regla.
Lift: mide si la regla se debió al azar. Calcula el ratio entre la confianza de la regla y el consecuente de la regla o rhs.

Notas:
Para métricas de mayor especificidad, ver Referencia No.3
El xls con los gráficos se puede descargar AQUI


El proceso conceptual en R sería así:

1. Transformación de datos













2. Generación de reglas y gráficos
















sábado, 11 de julio de 2015

Un ejemplo de PageRank

Si se tienen datos de interacciones de usuarios (o interacciones entre paginas, cuentas bancarias, redes sociales, etc.) puede calcularse la Importancia o relevancia de cada usuario usando el algoritmo PageRank.


Conceptualmente seria así:





















sábado, 4 de julio de 2015

Ensamble de RandomForest + SVM + C5

El siguiente script hace una combinación o ensamble de las predicciones de 3 algoritmos: randomForest, SVM, y C5.

NOTA: Los ensambles tienen mejor resultado cuando los modelos no están correlacionados entre sí, es decir que cada modelo explora diferentes hipótesis sobre los datos. Para conceptos sobre ensamble y bagging, ver nota publicada AQUI


Conceptualmente el ensamble seria así:
















El excel con imagen puede descargarse AQUI

martes, 30 de junio de 2015

Random Forest usando rpart


  • 1. Selección de variables al azar en cada arbol, considerando la raíz cuadrada del total de variables como el tamaño de variables a remuestrear en cada iteracion. (el método original remuestrea variables en cada nodo del arbol).
  • 2. Muestras con reemplazo en Iteraciones, y tamaño de muestra es igual al Train-Dataset
  • 3. Arboles sin podar, dejando crecer (en reglas) el algoritmo en cada iteracion.

















Y los arboles creados en cada iteración quedan así (solo para ilustrar la profundidad en reglas de cada árbol):