SlideShare una empresa de Scribd logo
1 de 12
Usuarios-R
Almería
@dgalmenzar@almeriarusers almeriarusers.wordpress.com
PRIMEROS PASOS CON R:
APRENDIENDO A DEPURAR DATOS
Usuarios-R
Almería
@dgalmenzar@almeriarusers almeriarusers.wordpress.com
PRESENTACIÓN
David Garcia Almenzar
 Licenciado en Matemáticas por la Universidad de Almería
 Máster en Estadística Aplicada com R Software por la Universidad Rey Juan Carlos de Madrid
 Data Scientist en el dpto. de Inteligencia de Negocio de Cajamar
 Miembro de Cajamar Data Lab
@dgalmenzar www.linkedin.com/in/david-garcia-almenzar-159499129
Usuarios-R
Almería
@dgalmenzar@almeriarusers almeriarusers.wordpress.com
INTRODUCCIÓN
Uno de los retos más importantes en el análisis de datos y sobre el que menos se suele hablar es la
preparación de los mismos, vamos a ver 4 procesos fundamentales:
 Tratamiento de valores perdidos o erróneos
 Definición de tipologías
 Tratamiento de outliers
 Reducción de la dimensionalidad
Para ello vamos a trabajar sobre la BD del reto de Predictive Modelling de la PythonHack 2016.
Hemos ralizado diversas modificaciones en las variables para incluir valores perdidos y erróneos.
bd <- read.table(“DIRECTORIO/Archivo.txt", header = TRUE, quote=""",sep = "|", dec=",")
Usuarios-R
Almería
@dgalmenzar@almeriarusers almeriarusers.wordpress.com
TRATAMIENTO DE VALORES PERDIDOS O ERRÓNEOS
Lo primero que debemos hacer una vez tenemos nuestra BD en R es visualizarla, para ello
disponemos de las funciones:
• head(): nos muestra las primeras filas de la BD
• str(): nos indica el tipo de variable y nos muestra los primeros valores de cada una
• Summary(): hace un breve resumen de la variable según su tipo y nos indica, si los hay, cuantos
valores perdidos localiza.
Para tratar los valores perdidos tenemos tres opciones:
• Eliminar el registro en el que se encuentra dicho valor: na.omit()
bd<-bd[!is.na(bd$TARGET),]
bd<-na.omit(bd)
• Recodificar el valor a otro que nos interese: is.na()
bd<-bd[is.na(bd)]<-0
• Estimar el valor a través del resto de variables, para ello podemos usar, por ejemplo el paquete
mice.
bd<-mice(bd, method="sample")
En nuestro ejemplo, dado que tenemos suficientes registros hemos optado por eliminarlos.
Usuarios-R
Almería
@dgalmenzar@almeriarusers almeriarusers.wordpress.com
TRATAMIENTO DE VALORES PERDIDOS O ERRÓNEOS
Para tratar los valores erróneos disponemos del paquete clickR que nos permite, con las funciones
fix, corregir fechas, números y factores.
Para corregir fechas
bd$DATE <- fix.dates(bd$DATE, cent = "19")
Para corregir niveles de un factor
bd$DEMO <- fix.levels(bd$DEMO, levels=c("BAJA", "MEDIA", "ALTA"), k=5, plot=TRUE)
y estas categorías pasan a NAs
ALTA BAJA MEDIA
Usuarios-R
Almería
@dgalmenzar@almeriarusers almeriarusers.wordpress.com
DEFINICION DE TIPOLOGÍAS
Variable Descripción Tipo
Id Identificador de cliente categórica (eliminar)
Socio_Demo_01-05 Variables sociodemográficas 01-02 cat 03-05 num
Imp_Cons_01-17 Importe de consumos habituales numérica
Imp_Sal_01-21 Importe de los saldos de los distintos productos numérica
Ind_prod_01-23 Tenencia de los distintos productos financieros categórica
Ind_Tend_01-09 Tendencia los principales productos financieros categórica
Num_Oper_01-23 Número de operaciones en los distintos productos numérica
Target Variable objetivo categórica
Una vez corregidos los valores pasamos a definir la tipología de las variables para poder trabajar
con ellas en los modelos. Para ello hacemos uso de las funcionalidades que nos da el paquete dplyr
para trabajar con BD, en nuestro caso las variables tienen la siguientes categorias:
Separamos las variables categóricas de las numéricas:
bd_factor <- select(bd, -starts_with("IMP"), -starts_with("NUM"), -SOCIO_DEMO_03, -SOCIO_DEMO_04, -SOCIO_DEMO_05)
bd_numeric <- select(bd,starts_with("IMP"), starts_with("NUM"), SOCIO_DEMO_03, SOCIO_DEMO_04, SOCIO_DEMO_05)
Asignamos la tipología a las variables
bd_factor<- data.frame(apply(bd_factor, 2, as.factor))
bd_numeric<- data.frame(apply(bd_numeric, 2, as.numeric))
Volvemos a unir la BD
bd <- bind_cols(bd_factor,bd_numeric)
Eliminamos las variables que no entran en el estudio
bd <- select(bd,-ID)
Usuarios-R
Almería
@dgalmenzar@almeriarusers almeriarusers.wordpress.com
TRATAMIENTO DE OUTLIERS
Los outliers son un problema que se da en las variables numéricas y que provocan en los modelos
errores de clasificación pudiendo provocar incluso que la creación del modelo aborte. Podemos
abordarlos de dos formas, eliminando el registro que contenga un outlier o recodificando el valor
de dicho registro a un máximo más acorde con los valores.
Realizamos gráfico de la variable a tratar
bd %>% filter(IMP_SAL_01 > 0) %>%
ggplot(aes(x = TARGET, y = IMP_SAL_01, fill= TARGET)) +
scale_x_discrete("Target") +
scale_y_continuous("Variable") +
geom_boxplot()
Detectamos los outliers
bd %>% filter(IMP_SAL_01 > 0) -> datosfilter
out <- which(bd$IMP_SAL_01 %in%
boxplot.stats(datosfilter$IMP_SAL_01)$out)
Vemos cuantos son
length(out)
Eliminamos los outliers
bd <- bd[-out,]
O recodificamos valores
bd$IMP_SAL_01[bd$IMP_SAL_01] <- 3000
Antes de limpiar outliers
Después de limpiar outliers
Usuarios-R
Almería
@dgalmenzar@almeriarusers almeriarusers.wordpress.com
TRATAMIENTO DE OUTLIERS
En las variables categóricas no tenemos outliers como tal pero si algo aproximado, las categorias
que no tengan una representación mínima pueden generar problemas en la modelización, por
tanto es aconsejable recodificarlas, o según el problema, eliminarlas.
Visualizamos las categorias
ggplot(bd, aes(x= IND_PROD_02, group = TARGET )) +
geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat = "count") +
geom_text(aes(label = scales::percent(..prop..), y = ..prop..), stat = "count", vjust = -.5) +
labs(y = "Percent", fill = "IND_PROD_01") +
facet_grid(~TARGET) +
scale_y_continuous(labels = scales::percent)
Recodificamos aquellas categorías que tienen poca
presencia uniendola a otra que tenga una distribución
similar para el 0 y el 1
bd$ IND_PROD_02[bd$ IND_PROD_02==‘2’] <- ‘0’
Usuarios-R
Almería
@dgalmenzar@almeriarusers almeriarusers.wordpress.com
REDUCCIÓN DE LA DIMENSIONALIDAD
Normalmente las BDs que trabajamos tienen un elevado número de variables que pueden aportar
o no información a nuestro modelo y que pueden estar o no relacionadas entre si. Con la
reducción de dimensiones lo que pretendemos es eliminar toda esta información redundante e
innecesaria que afecta tanto a los tiempos de ejecución como a la calidad del modelo.
ANALISIS DE CORRELACIONES
Este análisis se aplica únicamente a variables numéricas y con él detectamos que variables tienen
una alta correlacción,para ello usamos la función findCorrelation del paquete Caret. Una vez
detectadas, eliminamos las mismas.
Seleccionamos las variables y visualizamos el cuadro de
correlaciones
nums <- sapply(bd, is.numeric)
train.corr <- cor(bd[,nums])
corrplot(train.corr, tl.cex = 0.5)
Calculamos las correlaciones altas
indcorr <- findCorrelation(train.corr,cutoff = 0.70)
names(bd[,nums][indcorr])
Eliminamos las variables correlacionadas
eliminar<-names(bd[,nums][indcorr])
bd <- bd[ , !names(clientcs3) %in% eliminar]
Usuarios-R
Almería
@dgalmenzar@almeriarusers almeriarusers.wordpress.com
REDUCCIÓN DE LA DIMENSIONALIDAD
VARIABLES CON VARIANZA NULA
Este análisis nos permite detectar que variables tienen una varianza casi nula lo que implica que no
pueden aportar información a la clasificación (son muy semejantes a una constante), para ello
usamos la función nearZeroVar del paquete Caret.
Equiparamos los 0 a los 1
indY <- which("TARGET" == names(bd))
set.seed(1976)
bd_down <- downSample(x = bd[,-indY], y = bd$TARGET)
table(bd_down$Class)
prop.table(table(bd_down$Class))
Eliminamos variables con varianza nula
ind.zero.var = nearZeroVar(bd_down, freqCut = 99/1, uniqueCut = 10)
names(bd_down[,ind.zero.var])
bd_down <- bd_down[,-ind.zero.var]
Usuarios-R
Almería
@dgalmenzar@almeriarusers almeriarusers.wordpress.com
COMPARACIÓN Y RESULTADO
Al principio de nuestro ejemplo partíamos de una BD con 471.839 filas y 100 columnas y, tras
aplicar los procesos de depuración de los datos nos ha quedado una BD con 257.576 registros y 56
columnas. Estos son los resultados obtenidos tras al trabajo de limpieza realizado:
VARIABLES ELIMINADAS POR CORRELACION ALTA VARIABLES ELIMINADAS POR VARIANZA CASI NULA
NUM_OPER_21 IMP_SAL_21 IND_PROD_04 IMP_SAL_06 IMP_CONS_07 NUM_OPER_08
NUM_OPER_18 NUM_OPER_23 IND_PROD_06 IMP_SAL_07 IMP_CONS_09 NUM_OPER_09
IMP_SAL_09 IMP_SAL_19 IND_TEND_08 IMP_SAL_08 IMP_CONS_13 NUM_OPER_22
IMP_SAL_14 IMP_SAL_18 IND_PROD_08 IMP_SAL_11 IMP_CONS_14 NUM_OPER_24
NUM_OPER_02 IND_TEND_01 IMP_CONS_02 IMP_CONS_15
NUM_OPER_17 IMP_SAL_03 IMP_CONS_03 IMP_CONS_16
NUM_OPER_03 IMP_SAL_16 IMP_CONS_04 NUM_OPER_05
IMP_SAL_12 IMP_SAL_15 IMP_CONS_05 NUM_OPER_06
NUM_OPER_10 IMP_SAL_20 IMP_CONS_06 NUM_OPER_07
VARIABLES QUE ENTRARIAN EN EL MODELO
SOCIO_DEMO_01 IND_PROD_01 IND_PROD_02 IND_PROD_03 IND_TEND_09 IND_TEND_02 IND_PROD_05 IND_PROD_07
IND_PROD_11 IND_TEND_07 IND_TEND_04 IND_TEND_06 IND_TEND_03 IND_TEND_05 SOCIO_DEMO_02 IND_PROD_09
IND_PROD_19 IND_PROD_12 IND_PROD_13 IND_PROD_14 IND_PROD_15 IND_PROD_16 IND_PROD_17 IND_PROD_18
IMP_SAL_04 IND_PROD_20 IND_PROD_21 IND_PROD_22 IND_PROD_23 IMP_SAL_01 IMP_SAL_02 IMP_SAL_17
IMP_CONS_01 IMP_SAL_05 IMP_SAL_10 IMP_SAL_13 IMP_CONS_08 IMP_CONS_10 IMP_CONS_12 IMP_CONS_17
NUM_OPER_19 NUM_OPER_11 NUM_OPER_12 NUM_OPER_13 NUM_OPER_14 NUM_OPER_04 NUM_OPER_15 NUM_OPER_16
IND_PROD_10 NUM_OPER_20 SOCIO_DEMO_03 SOCIO_DEMO_04 SOCIO_DEMO_05 IND_PROD_10 TARGET
Usuarios-R
Almería
@dgalmenzar@almeriarusers almeriarusers.wordpress.com
APRENDIENDO A DEPURAR DATOS
MUCHAS GRACIAS
“El comercio no trata sobre mercancías, trata sobre información. Las mercancías se sientan en el
almacén hasta que la información las mueve.”
C. J. Cherryh, escritor.
“Ya no estamos en la era de la información. Estamos en la era de la gestión de la información.”
Chris Hardwick, actor.

Más contenido relacionado

La actualidad más candente

Prueba kolmogorov smimov
Prueba kolmogorov smimovPrueba kolmogorov smimov
Prueba kolmogorov smimovClaudia Salinas
 
Regression diagnostics
Regression diagnosticsRegression diagnostics
Regression diagnosticsdermengles
 
Analyzing the randomised control trial (rct)
Analyzing the randomised control trial (rct)Analyzing the randomised control trial (rct)
Analyzing the randomised control trial (rct)Vikash Keshri
 
A.6 confidence intervals
A.6  confidence intervalsA.6  confidence intervals
A.6 confidence intervalsUlster BOCES
 
Linear Regression Using SPSS
Linear Regression Using SPSSLinear Regression Using SPSS
Linear Regression Using SPSSDr Athar Khan
 

La actualidad más candente (7)

Prueba kolmogorov smimov
Prueba kolmogorov smimovPrueba kolmogorov smimov
Prueba kolmogorov smimov
 
Regression diagnostics
Regression diagnosticsRegression diagnostics
Regression diagnostics
 
Analyzing the randomised control trial (rct)
Analyzing the randomised control trial (rct)Analyzing the randomised control trial (rct)
Analyzing the randomised control trial (rct)
 
Linear regression analysis
Linear regression analysisLinear regression analysis
Linear regression analysis
 
A.6 confidence intervals
A.6  confidence intervalsA.6  confidence intervals
A.6 confidence intervals
 
Linear Regression Using SPSS
Linear Regression Using SPSSLinear Regression Using SPSS
Linear Regression Using SPSS
 
Unit 4
Unit 4Unit 4
Unit 4
 

Similar a Primeros pasos con R - Aprendiendo a depurar datos

Análisis de sensibilidad.
Análisis de sensibilidad.Análisis de sensibilidad.
Análisis de sensibilidad.Hebzi01
 
Solver, Jazmin, Freddy
Solver, Jazmin, FreddySolver, Jazmin, Freddy
Solver, Jazmin, FreddyFreddy Velez
 
Solver, jazmin, freddy
Solver, jazmin, freddySolver, jazmin, freddy
Solver, jazmin, freddyJazmin Cabezas
 
Tutorial MIneria de datos en sql server
Tutorial  MIneria de datos en sql serverTutorial  MIneria de datos en sql server
Tutorial MIneria de datos en sql serverRis Fernandez
 
Seis Sigma Aplicado al Proceso Financiero
Seis Sigma Aplicado al Proceso FinancieroSeis Sigma Aplicado al Proceso Financiero
Seis Sigma Aplicado al Proceso FinancieroJuan Carlos Fernandez
 
Tema 2: Programación de Metas y Optimización Multiobjetiva
Tema 2: Programación de Metas y Optimización MultiobjetivaTema 2: Programación de Metas y Optimización Multiobjetiva
Tema 2: Programación de Metas y Optimización MultiobjetivaSistemadeEstudiosMed
 
Fundamentos de Programacion
Fundamentos de ProgramacionFundamentos de Programacion
Fundamentos de Programacionneyvajms
 
Criterios múltiples para la toma de decisiones
Criterios múltiples para la toma de decisionesCriterios múltiples para la toma de decisiones
Criterios múltiples para la toma de decisionesPedroArmandoRamosCor
 
Uso De Métodos Estadísticos en Campañas de Adwords
Uso De Métodos Estadísticos en Campañas de AdwordsUso De Métodos Estadísticos en Campañas de Adwords
Uso De Métodos Estadísticos en Campañas de AdwordsJusto Ibarra
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacionpepe1234554321
 
Algoritmos y programas datos importantes
Algoritmos y programas datos importantesAlgoritmos y programas datos importantes
Algoritmos y programas datos importantesEsteban Bedoya
 
Capa negocio con clases en VB
Capa negocio con clases en VBCapa negocio con clases en VB
Capa negocio con clases en VBUNACAR
 
Actividad autoformación y evaluación no.2 tarea
Actividad autoformación y evaluación no.2 tareaActividad autoformación y evaluación no.2 tarea
Actividad autoformación y evaluación no.2 tareajenny21071
 
Algoritmos1
Algoritmos1Algoritmos1
Algoritmos1utc
 

Similar a Primeros pasos con R - Aprendiendo a depurar datos (20)

Análisis de sensibilidad.
Análisis de sensibilidad.Análisis de sensibilidad.
Análisis de sensibilidad.
 
Solver, Jazmin, Freddy
Solver, Jazmin, FreddySolver, Jazmin, Freddy
Solver, Jazmin, Freddy
 
Solver, jazmin, freddy
Solver, jazmin, freddySolver, jazmin, freddy
Solver, jazmin, freddy
 
Minería de datos
Minería de datosMinería de datos
Minería de datos
 
Tutorial MIneria de datos en sql server
Tutorial  MIneria de datos en sql serverTutorial  MIneria de datos en sql server
Tutorial MIneria de datos en sql server
 
Programacion_Lineal.pdf
Programacion_Lineal.pdfProgramacion_Lineal.pdf
Programacion_Lineal.pdf
 
Programacion lineal
Programacion linealProgramacion lineal
Programacion lineal
 
Seis Sigma Aplicado al Proceso Financiero
Seis Sigma Aplicado al Proceso FinancieroSeis Sigma Aplicado al Proceso Financiero
Seis Sigma Aplicado al Proceso Financiero
 
Tema 2: Programación de Metas y Optimización Multiobjetiva
Tema 2: Programación de Metas y Optimización MultiobjetivaTema 2: Programación de Metas y Optimización Multiobjetiva
Tema 2: Programación de Metas y Optimización Multiobjetiva
 
Fundamentos de Programacion
Fundamentos de ProgramacionFundamentos de Programacion
Fundamentos de Programacion
 
Análisis de regresión múltiple
Análisis de regresión múltipleAnálisis de regresión múltiple
Análisis de regresión múltiple
 
Seis sigma Black Belts ASQ
Seis sigma  Black Belts ASQSeis sigma  Black Belts ASQ
Seis sigma Black Belts ASQ
 
Criterios múltiples para la toma de decisiones
Criterios múltiples para la toma de decisionesCriterios múltiples para la toma de decisiones
Criterios múltiples para la toma de decisiones
 
Uso De Métodos Estadísticos en Campañas de Adwords
Uso De Métodos Estadísticos en Campañas de AdwordsUso De Métodos Estadísticos en Campañas de Adwords
Uso De Métodos Estadísticos en Campañas de Adwords
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
 
Io 2da programacion lineal
Io 2da programacion linealIo 2da programacion lineal
Io 2da programacion lineal
 
Algoritmos y programas datos importantes
Algoritmos y programas datos importantesAlgoritmos y programas datos importantes
Algoritmos y programas datos importantes
 
Capa negocio con clases en VB
Capa negocio con clases en VBCapa negocio con clases en VB
Capa negocio con clases en VB
 
Actividad autoformación y evaluación no.2 tarea
Actividad autoformación y evaluación no.2 tareaActividad autoformación y evaluación no.2 tarea
Actividad autoformación y evaluación no.2 tarea
 
Algoritmos1
Algoritmos1Algoritmos1
Algoritmos1
 

Último

Época colonial: vestimenta, costumbres y juegos de la época
Época colonial: vestimenta, costumbres y juegos de la épocaÉpoca colonial: vestimenta, costumbres y juegos de la época
Época colonial: vestimenta, costumbres y juegos de la épocacecifranco1981
 
REGLAMENTO FINAL DE EVALUACIÓN 2024 pdf.pdf
REGLAMENTO  FINAL DE EVALUACIÓN 2024 pdf.pdfREGLAMENTO  FINAL DE EVALUACIÓN 2024 pdf.pdf
REGLAMENTO FINAL DE EVALUACIÓN 2024 pdf.pdfInformacionesCMI
 
En un aposento alto himno _letra y acordes.pdf
En un aposento alto himno _letra y acordes.pdfEn un aposento alto himno _letra y acordes.pdf
En un aposento alto himno _letra y acordes.pdfAni Ann
 
Síndrome piramidal 2024 según alvarez, farrera y wuani
Síndrome piramidal 2024 según alvarez, farrera y wuaniSíndrome piramidal 2024 según alvarez, farrera y wuani
Síndrome piramidal 2024 según alvarez, farrera y wuanishflorezg
 
Estrategia Nacional de Refuerzo Escolar SJA Ccesa007.pdf
Estrategia Nacional de Refuerzo Escolar  SJA  Ccesa007.pdfEstrategia Nacional de Refuerzo Escolar  SJA  Ccesa007.pdf
Estrategia Nacional de Refuerzo Escolar SJA Ccesa007.pdfDemetrio Ccesa Rayme
 
3. ELEMENTOS QUE SE EMPLEAN EN LAS ESTRUCTURAS.pptx
3. ELEMENTOS QUE SE EMPLEAN EN LAS ESTRUCTURAS.pptx3. ELEMENTOS QUE SE EMPLEAN EN LAS ESTRUCTURAS.pptx
3. ELEMENTOS QUE SE EMPLEAN EN LAS ESTRUCTURAS.pptxnelsontobontrujillo
 
ciclos biogeoquimicas y flujo de materia ecosistemas
ciclos biogeoquimicas y flujo de materia ecosistemasciclos biogeoquimicas y flujo de materia ecosistemas
ciclos biogeoquimicas y flujo de materia ecosistemasFlor Idalia Espinoza Ortega
 
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdfANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdflvela1316
 
ACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLA
ACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLAACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLA
ACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Tema 9. Roma. 1º ESO 2014. Ciencias SOciales
Tema 9. Roma. 1º ESO 2014. Ciencias SOcialesTema 9. Roma. 1º ESO 2014. Ciencias SOciales
Tema 9. Roma. 1º ESO 2014. Ciencias SOcialesChema R.
 
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesis
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesisnovelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesis
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesisPsicClinGlendaBerrez
 
Comunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptxComunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptxJunkotantik
 
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLAACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Apunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdfApunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdfGonella
 
FICHA DE LA VIRGEN DE FÁTIMA.pdf educación religiosa primaria de menores
FICHA DE LA VIRGEN DE FÁTIMA.pdf educación religiosa primaria de menoresFICHA DE LA VIRGEN DE FÁTIMA.pdf educación religiosa primaria de menores
FICHA DE LA VIRGEN DE FÁTIMA.pdf educación religiosa primaria de menoresSantosprez2
 
Los caminos del saber matematicas 7°.pdf
Los caminos del saber matematicas 7°.pdfLos caminos del saber matematicas 7°.pdf
Los caminos del saber matematicas 7°.pdfandioclex
 
PLAN LECTOR QUINTO 2023 educación primaria de menores Quinto grado
PLAN LECTOR QUINTO 2023  educación primaria de menores Quinto gradoPLAN LECTOR QUINTO 2023  educación primaria de menores Quinto grado
PLAN LECTOR QUINTO 2023 educación primaria de menores Quinto gradoSantosprez2
 

Último (20)

Época colonial: vestimenta, costumbres y juegos de la época
Época colonial: vestimenta, costumbres y juegos de la épocaÉpoca colonial: vestimenta, costumbres y juegos de la época
Época colonial: vestimenta, costumbres y juegos de la época
 
REGLAMENTO FINAL DE EVALUACIÓN 2024 pdf.pdf
REGLAMENTO  FINAL DE EVALUACIÓN 2024 pdf.pdfREGLAMENTO  FINAL DE EVALUACIÓN 2024 pdf.pdf
REGLAMENTO FINAL DE EVALUACIÓN 2024 pdf.pdf
 
En un aposento alto himno _letra y acordes.pdf
En un aposento alto himno _letra y acordes.pdfEn un aposento alto himno _letra y acordes.pdf
En un aposento alto himno _letra y acordes.pdf
 
TÉCNICAS OBSERVACIONALES Y TEXTUALES.pdf
TÉCNICAS OBSERVACIONALES Y TEXTUALES.pdfTÉCNICAS OBSERVACIONALES Y TEXTUALES.pdf
TÉCNICAS OBSERVACIONALES Y TEXTUALES.pdf
 
Síndrome piramidal 2024 según alvarez, farrera y wuani
Síndrome piramidal 2024 según alvarez, farrera y wuaniSíndrome piramidal 2024 según alvarez, farrera y wuani
Síndrome piramidal 2024 según alvarez, farrera y wuani
 
Estrategia Nacional de Refuerzo Escolar SJA Ccesa007.pdf
Estrategia Nacional de Refuerzo Escolar  SJA  Ccesa007.pdfEstrategia Nacional de Refuerzo Escolar  SJA  Ccesa007.pdf
Estrategia Nacional de Refuerzo Escolar SJA Ccesa007.pdf
 
3. ELEMENTOS QUE SE EMPLEAN EN LAS ESTRUCTURAS.pptx
3. ELEMENTOS QUE SE EMPLEAN EN LAS ESTRUCTURAS.pptx3. ELEMENTOS QUE SE EMPLEAN EN LAS ESTRUCTURAS.pptx
3. ELEMENTOS QUE SE EMPLEAN EN LAS ESTRUCTURAS.pptx
 
ciclos biogeoquimicas y flujo de materia ecosistemas
ciclos biogeoquimicas y flujo de materia ecosistemasciclos biogeoquimicas y flujo de materia ecosistemas
ciclos biogeoquimicas y flujo de materia ecosistemas
 
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdfANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
 
ACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLA
ACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLAACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLA
ACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLA
 
Tema 9. Roma. 1º ESO 2014. Ciencias SOciales
Tema 9. Roma. 1º ESO 2014. Ciencias SOcialesTema 9. Roma. 1º ESO 2014. Ciencias SOciales
Tema 9. Roma. 1º ESO 2014. Ciencias SOciales
 
Power Point : Motivados por la esperanza
Power Point : Motivados por la esperanzaPower Point : Motivados por la esperanza
Power Point : Motivados por la esperanza
 
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesis
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesisnovelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesis
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesis
 
Comunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptxComunidades Virtuales de Aprendizaje Caracteristicas.pptx
Comunidades Virtuales de Aprendizaje Caracteristicas.pptx
 
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLAACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO SOPA DE LETRAS OLÍMPICA. Por JAVIER SOLIS NOYOLA
 
Apunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdfApunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdf
 
Revista Faro Normalista 6, 18 de mayo 2024
Revista Faro Normalista 6, 18 de mayo 2024Revista Faro Normalista 6, 18 de mayo 2024
Revista Faro Normalista 6, 18 de mayo 2024
 
FICHA DE LA VIRGEN DE FÁTIMA.pdf educación religiosa primaria de menores
FICHA DE LA VIRGEN DE FÁTIMA.pdf educación religiosa primaria de menoresFICHA DE LA VIRGEN DE FÁTIMA.pdf educación religiosa primaria de menores
FICHA DE LA VIRGEN DE FÁTIMA.pdf educación religiosa primaria de menores
 
Los caminos del saber matematicas 7°.pdf
Los caminos del saber matematicas 7°.pdfLos caminos del saber matematicas 7°.pdf
Los caminos del saber matematicas 7°.pdf
 
PLAN LECTOR QUINTO 2023 educación primaria de menores Quinto grado
PLAN LECTOR QUINTO 2023  educación primaria de menores Quinto gradoPLAN LECTOR QUINTO 2023  educación primaria de menores Quinto grado
PLAN LECTOR QUINTO 2023 educación primaria de menores Quinto grado
 

Primeros pasos con R - Aprendiendo a depurar datos

  • 2. Usuarios-R Almería @dgalmenzar@almeriarusers almeriarusers.wordpress.com PRESENTACIÓN David Garcia Almenzar  Licenciado en Matemáticas por la Universidad de Almería  Máster en Estadística Aplicada com R Software por la Universidad Rey Juan Carlos de Madrid  Data Scientist en el dpto. de Inteligencia de Negocio de Cajamar  Miembro de Cajamar Data Lab @dgalmenzar www.linkedin.com/in/david-garcia-almenzar-159499129
  • 3. Usuarios-R Almería @dgalmenzar@almeriarusers almeriarusers.wordpress.com INTRODUCCIÓN Uno de los retos más importantes en el análisis de datos y sobre el que menos se suele hablar es la preparación de los mismos, vamos a ver 4 procesos fundamentales:  Tratamiento de valores perdidos o erróneos  Definición de tipologías  Tratamiento de outliers  Reducción de la dimensionalidad Para ello vamos a trabajar sobre la BD del reto de Predictive Modelling de la PythonHack 2016. Hemos ralizado diversas modificaciones en las variables para incluir valores perdidos y erróneos. bd <- read.table(“DIRECTORIO/Archivo.txt", header = TRUE, quote=""",sep = "|", dec=",")
  • 4. Usuarios-R Almería @dgalmenzar@almeriarusers almeriarusers.wordpress.com TRATAMIENTO DE VALORES PERDIDOS O ERRÓNEOS Lo primero que debemos hacer una vez tenemos nuestra BD en R es visualizarla, para ello disponemos de las funciones: • head(): nos muestra las primeras filas de la BD • str(): nos indica el tipo de variable y nos muestra los primeros valores de cada una • Summary(): hace un breve resumen de la variable según su tipo y nos indica, si los hay, cuantos valores perdidos localiza. Para tratar los valores perdidos tenemos tres opciones: • Eliminar el registro en el que se encuentra dicho valor: na.omit() bd<-bd[!is.na(bd$TARGET),] bd<-na.omit(bd) • Recodificar el valor a otro que nos interese: is.na() bd<-bd[is.na(bd)]<-0 • Estimar el valor a través del resto de variables, para ello podemos usar, por ejemplo el paquete mice. bd<-mice(bd, method="sample") En nuestro ejemplo, dado que tenemos suficientes registros hemos optado por eliminarlos.
  • 5. Usuarios-R Almería @dgalmenzar@almeriarusers almeriarusers.wordpress.com TRATAMIENTO DE VALORES PERDIDOS O ERRÓNEOS Para tratar los valores erróneos disponemos del paquete clickR que nos permite, con las funciones fix, corregir fechas, números y factores. Para corregir fechas bd$DATE <- fix.dates(bd$DATE, cent = "19") Para corregir niveles de un factor bd$DEMO <- fix.levels(bd$DEMO, levels=c("BAJA", "MEDIA", "ALTA"), k=5, plot=TRUE) y estas categorías pasan a NAs ALTA BAJA MEDIA
  • 6. Usuarios-R Almería @dgalmenzar@almeriarusers almeriarusers.wordpress.com DEFINICION DE TIPOLOGÍAS Variable Descripción Tipo Id Identificador de cliente categórica (eliminar) Socio_Demo_01-05 Variables sociodemográficas 01-02 cat 03-05 num Imp_Cons_01-17 Importe de consumos habituales numérica Imp_Sal_01-21 Importe de los saldos de los distintos productos numérica Ind_prod_01-23 Tenencia de los distintos productos financieros categórica Ind_Tend_01-09 Tendencia los principales productos financieros categórica Num_Oper_01-23 Número de operaciones en los distintos productos numérica Target Variable objetivo categórica Una vez corregidos los valores pasamos a definir la tipología de las variables para poder trabajar con ellas en los modelos. Para ello hacemos uso de las funcionalidades que nos da el paquete dplyr para trabajar con BD, en nuestro caso las variables tienen la siguientes categorias: Separamos las variables categóricas de las numéricas: bd_factor <- select(bd, -starts_with("IMP"), -starts_with("NUM"), -SOCIO_DEMO_03, -SOCIO_DEMO_04, -SOCIO_DEMO_05) bd_numeric <- select(bd,starts_with("IMP"), starts_with("NUM"), SOCIO_DEMO_03, SOCIO_DEMO_04, SOCIO_DEMO_05) Asignamos la tipología a las variables bd_factor<- data.frame(apply(bd_factor, 2, as.factor)) bd_numeric<- data.frame(apply(bd_numeric, 2, as.numeric)) Volvemos a unir la BD bd <- bind_cols(bd_factor,bd_numeric) Eliminamos las variables que no entran en el estudio bd <- select(bd,-ID)
  • 7. Usuarios-R Almería @dgalmenzar@almeriarusers almeriarusers.wordpress.com TRATAMIENTO DE OUTLIERS Los outliers son un problema que se da en las variables numéricas y que provocan en los modelos errores de clasificación pudiendo provocar incluso que la creación del modelo aborte. Podemos abordarlos de dos formas, eliminando el registro que contenga un outlier o recodificando el valor de dicho registro a un máximo más acorde con los valores. Realizamos gráfico de la variable a tratar bd %>% filter(IMP_SAL_01 > 0) %>% ggplot(aes(x = TARGET, y = IMP_SAL_01, fill= TARGET)) + scale_x_discrete("Target") + scale_y_continuous("Variable") + geom_boxplot() Detectamos los outliers bd %>% filter(IMP_SAL_01 > 0) -> datosfilter out <- which(bd$IMP_SAL_01 %in% boxplot.stats(datosfilter$IMP_SAL_01)$out) Vemos cuantos son length(out) Eliminamos los outliers bd <- bd[-out,] O recodificamos valores bd$IMP_SAL_01[bd$IMP_SAL_01] <- 3000 Antes de limpiar outliers Después de limpiar outliers
  • 8. Usuarios-R Almería @dgalmenzar@almeriarusers almeriarusers.wordpress.com TRATAMIENTO DE OUTLIERS En las variables categóricas no tenemos outliers como tal pero si algo aproximado, las categorias que no tengan una representación mínima pueden generar problemas en la modelización, por tanto es aconsejable recodificarlas, o según el problema, eliminarlas. Visualizamos las categorias ggplot(bd, aes(x= IND_PROD_02, group = TARGET )) + geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat = "count") + geom_text(aes(label = scales::percent(..prop..), y = ..prop..), stat = "count", vjust = -.5) + labs(y = "Percent", fill = "IND_PROD_01") + facet_grid(~TARGET) + scale_y_continuous(labels = scales::percent) Recodificamos aquellas categorías que tienen poca presencia uniendola a otra que tenga una distribución similar para el 0 y el 1 bd$ IND_PROD_02[bd$ IND_PROD_02==‘2’] <- ‘0’
  • 9. Usuarios-R Almería @dgalmenzar@almeriarusers almeriarusers.wordpress.com REDUCCIÓN DE LA DIMENSIONALIDAD Normalmente las BDs que trabajamos tienen un elevado número de variables que pueden aportar o no información a nuestro modelo y que pueden estar o no relacionadas entre si. Con la reducción de dimensiones lo que pretendemos es eliminar toda esta información redundante e innecesaria que afecta tanto a los tiempos de ejecución como a la calidad del modelo. ANALISIS DE CORRELACIONES Este análisis se aplica únicamente a variables numéricas y con él detectamos que variables tienen una alta correlacción,para ello usamos la función findCorrelation del paquete Caret. Una vez detectadas, eliminamos las mismas. Seleccionamos las variables y visualizamos el cuadro de correlaciones nums <- sapply(bd, is.numeric) train.corr <- cor(bd[,nums]) corrplot(train.corr, tl.cex = 0.5) Calculamos las correlaciones altas indcorr <- findCorrelation(train.corr,cutoff = 0.70) names(bd[,nums][indcorr]) Eliminamos las variables correlacionadas eliminar<-names(bd[,nums][indcorr]) bd <- bd[ , !names(clientcs3) %in% eliminar]
  • 10. Usuarios-R Almería @dgalmenzar@almeriarusers almeriarusers.wordpress.com REDUCCIÓN DE LA DIMENSIONALIDAD VARIABLES CON VARIANZA NULA Este análisis nos permite detectar que variables tienen una varianza casi nula lo que implica que no pueden aportar información a la clasificación (son muy semejantes a una constante), para ello usamos la función nearZeroVar del paquete Caret. Equiparamos los 0 a los 1 indY <- which("TARGET" == names(bd)) set.seed(1976) bd_down <- downSample(x = bd[,-indY], y = bd$TARGET) table(bd_down$Class) prop.table(table(bd_down$Class)) Eliminamos variables con varianza nula ind.zero.var = nearZeroVar(bd_down, freqCut = 99/1, uniqueCut = 10) names(bd_down[,ind.zero.var]) bd_down <- bd_down[,-ind.zero.var]
  • 11. Usuarios-R Almería @dgalmenzar@almeriarusers almeriarusers.wordpress.com COMPARACIÓN Y RESULTADO Al principio de nuestro ejemplo partíamos de una BD con 471.839 filas y 100 columnas y, tras aplicar los procesos de depuración de los datos nos ha quedado una BD con 257.576 registros y 56 columnas. Estos son los resultados obtenidos tras al trabajo de limpieza realizado: VARIABLES ELIMINADAS POR CORRELACION ALTA VARIABLES ELIMINADAS POR VARIANZA CASI NULA NUM_OPER_21 IMP_SAL_21 IND_PROD_04 IMP_SAL_06 IMP_CONS_07 NUM_OPER_08 NUM_OPER_18 NUM_OPER_23 IND_PROD_06 IMP_SAL_07 IMP_CONS_09 NUM_OPER_09 IMP_SAL_09 IMP_SAL_19 IND_TEND_08 IMP_SAL_08 IMP_CONS_13 NUM_OPER_22 IMP_SAL_14 IMP_SAL_18 IND_PROD_08 IMP_SAL_11 IMP_CONS_14 NUM_OPER_24 NUM_OPER_02 IND_TEND_01 IMP_CONS_02 IMP_CONS_15 NUM_OPER_17 IMP_SAL_03 IMP_CONS_03 IMP_CONS_16 NUM_OPER_03 IMP_SAL_16 IMP_CONS_04 NUM_OPER_05 IMP_SAL_12 IMP_SAL_15 IMP_CONS_05 NUM_OPER_06 NUM_OPER_10 IMP_SAL_20 IMP_CONS_06 NUM_OPER_07 VARIABLES QUE ENTRARIAN EN EL MODELO SOCIO_DEMO_01 IND_PROD_01 IND_PROD_02 IND_PROD_03 IND_TEND_09 IND_TEND_02 IND_PROD_05 IND_PROD_07 IND_PROD_11 IND_TEND_07 IND_TEND_04 IND_TEND_06 IND_TEND_03 IND_TEND_05 SOCIO_DEMO_02 IND_PROD_09 IND_PROD_19 IND_PROD_12 IND_PROD_13 IND_PROD_14 IND_PROD_15 IND_PROD_16 IND_PROD_17 IND_PROD_18 IMP_SAL_04 IND_PROD_20 IND_PROD_21 IND_PROD_22 IND_PROD_23 IMP_SAL_01 IMP_SAL_02 IMP_SAL_17 IMP_CONS_01 IMP_SAL_05 IMP_SAL_10 IMP_SAL_13 IMP_CONS_08 IMP_CONS_10 IMP_CONS_12 IMP_CONS_17 NUM_OPER_19 NUM_OPER_11 NUM_OPER_12 NUM_OPER_13 NUM_OPER_14 NUM_OPER_04 NUM_OPER_15 NUM_OPER_16 IND_PROD_10 NUM_OPER_20 SOCIO_DEMO_03 SOCIO_DEMO_04 SOCIO_DEMO_05 IND_PROD_10 TARGET
  • 12. Usuarios-R Almería @dgalmenzar@almeriarusers almeriarusers.wordpress.com APRENDIENDO A DEPURAR DATOS MUCHAS GRACIAS “El comercio no trata sobre mercancías, trata sobre información. Las mercancías se sientan en el almacén hasta que la información las mueve.” C. J. Cherryh, escritor. “Ya no estamos en la era de la información. Estamos en la era de la gestión de la información.” Chris Hardwick, actor.