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

Similar a Primeros pasos con R - Aprendiendo a depurar datos

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
 
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
 
Presentacion unidad 2
Presentacion unidad 2Presentacion unidad 2
Presentacion unidad 2google
 

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

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
 
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
 
Presentacion unidad 2
Presentacion unidad 2Presentacion unidad 2
Presentacion unidad 2
 
Informe Pasantías 2
Informe Pasantías 2Informe Pasantías 2
Informe Pasantías 2
 
Caso Practico.pdf
Caso Practico.pdfCaso Practico.pdf
Caso Practico.pdf
 

Último

CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxCeciliaGuerreroGonza1
 

Último (20)

CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
Unidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDIUnidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDI
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 

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.