La metodología CRISP-DM (Cross Industry Standard Process for Data Mining) es un enfoque estándar para proyectos de minería de datos y ciencia de datos. Consta de seis fases principales que guían el proceso de principio a fin.
A continuación se explican las fases y se muestra un ejemplo práctico usando R.
En esta fase se busca entender los objetivos y requerimientos del negocio. Es clave traducir el problema empresarial en un problema de análisis de datos.
Ejemplo:
Supongamos que una tienda desea predecir si un cliente realizará una
compra, basándose en su historial de navegación en el sitio web.
# No se requiere código en esta fase
cat("Objetivo: predecir la probabilidad de compra según historial de navegación.")
## Objetivo: predecir la probabilidad de compra según historial de navegación.
Aquí se recolectan los datos iniciales, se exploran y se evalúa su calidad.
# Cargamos un conjunto de datos de ejemplo
data("iris")
head(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
# Resumen estadístico
summary(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
En este ejemplo usamos el dataset iris
como muestra, que
incluye medidas de flores.
Incluye selección, limpieza, construcción de variables y formateo.
# Seleccionamos solo dos especies para un problema binario
iris_bin <- subset(iris, Species != "setosa")
iris_bin$Species <- droplevels(iris_bin$Species)
# Visualizamos la estructura
str(iris_bin)
## 'data.frame': 100 obs. of 5 variables:
## $ Sepal.Length: num 7 6.4 6.9 5.5 6.5 5.7 6.3 4.9 6.6 5.2 ...
## $ Sepal.Width : num 3.2 3.2 3.1 2.3 2.8 2.8 3.3 2.4 2.9 2.7 ...
## $ Petal.Length: num 4.7 4.5 4.9 4 4.6 4.5 4.7 3.3 4.6 3.9 ...
## $ Petal.Width : num 1.4 1.5 1.5 1.3 1.5 1.3 1.6 1 1.3 1.4 ...
## $ Species : Factor w/ 2 levels "versicolor","virginica": 1 1 1 1 1 1 1 1 1 1 ...
En esta fase se seleccionan y aplican técnicas de modelado.
# Ajustamos un modelo de regresión logística
modelo <- glm(Species ~ Sepal.Length + Sepal.Width, data=iris_bin, family="binomial")
summary(modelo)
##
## Call:
## glm(formula = Species ~ Sepal.Length + Sepal.Width, family = "binomial",
## data = iris_bin)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -13.0460 3.0974 -4.212 2.53e-05 ***
## Sepal.Length 1.9024 0.5169 3.680 0.000233 ***
## Sepal.Width 0.4047 0.8628 0.469 0.639077
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 138.63 on 99 degrees of freedom
## Residual deviance: 110.33 on 97 degrees of freedom
## AIC: 116.33
##
## Number of Fisher Scoring iterations: 4
Se evalúa el modelo para verificar si cumple los objetivos del negocio.
# Predicciones
predicciones <- predict(modelo, type = "response")
# Convertimos a clase
clase_pred <- ifelse(predicciones > 0.5, "virginica", "versicolor")
# Matriz de confusión
table(Predicho=clase_pred, Real=iris_bin$Species)
## Real
## Predicho versicolor virginica
## versicolor 38 13
## virginica 12 37
Se implementa el modelo en producción o se entregan los resultados.
cat("El modelo está listo para integrarse en una aplicación web o sistema de recomendación.")
## El modelo está listo para integrarse en una aplicación web o sistema de recomendación.
Este ejemplo muestra cómo se aplica la metodología CRISP-DM en un proyecto de ciencia de datos, con un flujo estructurado y adaptable a diferentes industrias y problemas.