1. CRISP (Cross-Industry Standard Process)

1.1 Teoría

CRISP es un marco general para proyectos de análisis/minería de datos. Define etapas lógicas y agnósticas de herramienta:

  1. Entender el problema (objetivo y criterio de éxito del negocio).
  2. Entender los datos (estructura, calidad, disponibilidad, sesgos).
  3. Preparar los datos (limpieza, transformación, integración, data lineage básico).
  4. Modelar (métodos estadísticos/ML adecuados al problema).
  5. Evaluar (validación técnica y de negocio; ¿responde a la pregunta?).
  6. Usar/Desplegar (entrega, automatización, documentación, monitoreo).

CRISP ayuda a no “perderse en el código” y a mantener el norte del negocio.

1.2 Ejemplo CRISP con starwars (paso a paso)

Objetivo juguete: estimar mass a partir de height.

# 1) Entender el problema (negocio)
#    - Pregunta: ¿podemos aproximar mass usando height?
#    - Resultado esperado: relación positiva razonable.

# 2) Entender los datos
sw <- dplyr::starwars %>%
  janitor::clean_names() %>%              # nombres limpios
  select(name, species, height, mass)     # columnas relevantes
summary(sw)                               # primer vistazo (NA, rangos)
##      name             species              height           mass        
##  Length:87          Length:87          Min.   : 66.0   Min.   :  15.00  
##  Class :character   Class :character   1st Qu.:167.0   1st Qu.:  55.60  
##  Mode  :character   Mode  :character   Median :180.0   Median :  79.00  
##                                        Mean   :174.6   Mean   :  97.31  
##                                        3rd Qu.:191.0   3rd Qu.:  84.50  
##                                        Max.   :264.0   Max.   :1358.00  
##                                        NA's   :6       NA's   :28
# 3) Preparar los datos
sw_prep <- sw %>%
  mutate(
    height = as.numeric(height),
    mass   = as.numeric(mass)
  ) %>%
  filter(!is.na(height), !is.na(mass)) %>%    # remover NA para demo
  filter(height > 50, height < 300,           # reglas de rango simples
         mass > 10,   mass   < 5000)

# 4) Modelar (sencillo)
mod_crisp <- lm(mass ~ height, data = sw_prep)

# 5) Evaluar (rápido)
summary(mod_crisp)                          # coeficientes y R^2
## 
## Call:
## lm(formula = mass ~ height, data = sw_prep)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
##  -60.95  -29.51  -20.83  -17.65 1260.29 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept) -11.4868   111.3842  -0.103    0.918
## height        0.6240     0.6262   0.997    0.323
## 
## Residual standard error: 169.5 on 57 degrees of freedom
## Multiple R-squared:  0.01712,    Adjusted R-squared:  -0.0001194 
## F-statistic: 0.9931 on 1 and 57 DF,  p-value: 0.3232
# 6) Usar (mini demostración)
predict(mod_crisp, data.frame(height = c(160, 180, 200)))
##         1         2         3 
##  88.35372 100.83378 113.31385

1.3 CRISP en Actuaría: ventajas y desventajas

Ventajas: visión macro alineada a objetivos actuariales (tarifación, reservas, solvencia), favorece trazabilidad y comunicación con áreas de riesgo/negocio.
Desventajas: al ser general, requiere bajar a artefactos concretos (plan, KPIs, criterios de validación) para evitar quedarse en lo conceptual.


2. CRISP-DM (estándar operativo por fases)

2.1 Teoría

CRISP-DM define 6 fases con entregables claros:

  1. Business Understanding: objetivo, criterios de éxito, restricciones.
  2. Data Understanding: exploración, calidad, supuestos.
  3. Data Preparation: dataset final (features, limpieza, joins, data lineage).
  4. Modeling: técnicas y ajuste de hiperparámetros.
  5. Evaluation: validación técnica y de negocio.
  6. Deployment: reporte, servicio, o proceso repetible.

Es el estándar de facto en la industria por su equilibrio entre método y practicidad.

2.2 Ejemplo CRISP-DM con starwars (fase a fase)

# Fase 1: Business Understanding
# - Objetivo: estimar mass con height.
# - Criterio: signo esperado del coeficiente y ajuste razonable (demo).

# Fase 2: Data Understanding
sw <- dplyr::starwars %>%
  janitor::clean_names() %>%
  select(name, species, height, mass)
summary(sw)                    # NA, rangos, consistencia
##      name             species              height           mass        
##  Length:87          Length:87          Min.   : 66.0   Min.   :  15.00  
##  Class :character   Class :character   1st Qu.:167.0   1st Qu.:  55.60  
##  Mode  :character   Mode  :character   Median :180.0   Median :  79.00  
##                                        Mean   :174.6   Mean   :  97.31  
##                                        3rd Qu.:191.0   3rd Qu.:  84.50  
##                                        Max.   :264.0   Max.   :1358.00  
##                                        NA's   :6       NA's   :28
# Fase 3: Data Preparation
sw_final <- sw %>%
  mutate(height = as.numeric(height), mass = as.numeric(mass)) %>%
  filter(!is.na(height), !is.na(mass)) %>%
  filter(height > 50, height < 300, mass > 10, mass < 5000) %>%
  distinct(name, .keep_all = TRUE)

# Fase 4: Modeling
mod_cd <- lm(mass ~ height, data = sw_final)

# Fase 5: Evaluation
summary(mod_cd)
## 
## Call:
## lm(formula = mass ~ height, data = sw_final)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
##  -60.95  -29.51  -20.83  -17.65 1260.29 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept) -11.4868   111.3842  -0.103    0.918
## height        0.6240     0.6262   0.997    0.323
## 
## Residual standard error: 169.5 on 57 degrees of freedom
## Multiple R-squared:  0.01712,    Adjusted R-squared:  -0.0001194 
## F-statistic: 0.9931 on 1 and 57 DF,  p-value: 0.3232
# Fase 6: Deployment (mini): una función de predicción
predecir_mass <- function(h) predict(mod_cd, data.frame(height = h))
predecir_mass(c(160, 170, 200))
##         1         2         3 
##  88.35372  94.59375 113.31385

2.3 CRISP-DM en Actuaría: ventajas y desventajas

Ventajas: define artefactos y evidencia por fase (útil para auditoría, regulador, comités de riesgo), fortalece gobernanza de modelos.
Desventajas: puede vivirse como carga documental si no se ajusta con criterio; requiere disciplina para mantener checklist, diccionarios y bitácoras.


3. KDD (Knowledge Discovery in Databases)

3.1 Teoría

KDD se enfoca en descubrir conocimiento útil a partir de datos:

  1. Selección (de qué fuente y qué variables).
  2. Preprocesamiento (limpieza, tratamiento de NA, integración).
  3. Transformación (nuevas variables, normalizaciones, reducciones).
  4. Minería de datos (modelos/patrones: clustering, reglas, regresión, etc.).
  5. Interpretación/Evaluación (validar, explicar y decidir si sirve).

Es un proceso más académico/exploratorio, raíz de prácticas modernas.

3.2 Ejemplo KDD con starwars

# 1) Selección
kdd_sel <- dplyr::starwars %>%
  janitor::clean_names() %>%
  select(name, species, height, mass)

# 2) Preprocesamiento
kdd_pre <- kdd_sel %>%
  mutate(height = as.numeric(height), mass = as.numeric(mass)) %>%
  filter(!is.na(height), !is.na(mass))

# 3) Transformación (feature simple)
kdd_tra <- kdd_pre %>%
  mutate(bmi_aprox = mass / ((height/100)^2))

# 4) Minería de datos (modelo básico)
mod_kdd <- lm(mass ~ height, data = kdd_tra)

# 5) Interpretación/Evaluación
summary(mod_kdd)
## 
## Call:
## lm(formula = mass ~ height, data = kdd_tra)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
##  -60.95  -29.51  -20.83  -17.65 1260.29 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept) -11.4868   111.3842  -0.103    0.918
## height        0.6240     0.6262   0.997    0.323
## 
## Residual standard error: 169.5 on 57 degrees of freedom
## Multiple R-squared:  0.01712,    Adjusted R-squared:  -0.0001194 
## F-statistic: 0.9931 on 1 and 57 DF,  p-value: 0.3232
coef(mod_kdd)
## (Intercept)      height 
## -11.4868157   0.6240033
predict(mod_kdd, data.frame(height = c(160, 180, 200)))
##         1         2         3 
##  88.35372 100.83378 113.31385

3.3 KDD en Actuaría: ventajas y desventajas

Ventajas: promueve exploración y hallazgo de patrones (tarifación, detección de fraude, segmentación), útil para crear features.
Desventajas: si se usa solo, puede faltar gobernanza y alineación a objetivos; combínalo con CRISP-DM para trazabilidad.


4. Ejercicio integrador (para resolver)

Tu misión: aplicar CRISP, CRISP-DM y KDD a una base actuarial simulada. No hay gráficos (los veremos en otra sesión). Debes explicar en texto tus decisiones y dejar bitácora (data lineage básico) de cada fase.

4.1 Generación de la base simulada (proporcionada)

set.seed(101)

n <- 1000
polizas <- tibble::tibble(
  id         = 1:n,
  edad       = sample(18:85, n, replace = TRUE),
  genero     = sample(c("M","F"), n, replace = TRUE),
  siniestros = rpois(n, lambda = 0.25),
  valor_aseg = round(rnorm(n, mean = 120000, sd = 25000), 0),
  prima      = 600 + 15*edad + 250*siniestros + rnorm(n, 0, 400)
)

# Introducimos "ruido" realista
polizas$edad[sample(1:n, 8)]          <- c(-3, 0, 130, 200, 500, 5, 150, -10)  # rangos imposibles
polizas$valor_aseg[sample(1:n, 10)]   <- NA                                       # faltantes
polizas <- polizas %>% janitor::clean_names()

# Vista rápida
head(polizas)
summary(polizas)
##        id              edad           genero            siniestros   
##  Min.   :   1.0   Min.   :-10.00   Length:1000        Min.   :0.000  
##  1st Qu.: 250.8   1st Qu.: 33.00   Class :character   1st Qu.:0.000  
##  Median : 500.5   Median : 51.00   Mode  :character   Median :0.000  
##  Mean   : 500.5   Mean   : 52.51                      Mean   :0.258  
##  3rd Qu.: 750.2   3rd Qu.: 70.00                      3rd Qu.:0.000  
##  Max.   :1000.0   Max.   :500.00                      Max.   :3.000  
##                                                                      
##    valor_aseg         prima       
##  Min.   : 37762   Min.   :-121.4  
##  1st Qu.:105932   1st Qu.:1098.4  
##  Median :120944   Median :1434.3  
##  Mean   :122056   Mean   :1445.2  
##  3rd Qu.:137780   3rd Qu.:1793.8  
##  Max.   :207871   Max.   :3039.5  
##  NA's   :10

4.2 Ruta A — CRISP (guía para que tú la resuelvas)

Objetivo sugerido: explicar prima con edad y siniestros (y opcionalmente valor_aseg).

Tu trabajo: completa los pasos. Deja comentarios de por qué haces cada decisión.

# 1) Entender el problema (negocio)
# TODO: escribe el objetivo y criterio de éxito.

# 2) Entender los datos
# TODO: explora NA, rangos y posibles sesgos.

# 3) Preparar los datos
# TODO: define reglas de rango para edad; decide tratamiento de NA en valor_aseg.

# 4) Modelar
# TODO: ajusta un modelo (p. ej., lm(prima ~ edad + siniestros [+ valor_aseg])).

# 5) Evaluar
# TODO: interpreta signos, magnitudes, R^2 y sentido actuarial.

# 6) Usar
# TODO: crea una mini función o tabla de predicción para 2–3 perfiles.

Preguntas guía (responde en texto): 1. ¿Cuál es el criterio de éxito actuarial de tu modelo?
2. ¿Qué supuestos hiciste sobre los datos (rangos, NA)?
3. ¿Qué harías distinto si el uso fuera tarifación real y no una demo?


4.3 Ruta B — CRISP-DM (para resolver, fase a fase)

Sigue la plantilla y deja evidencia (texto + código) de cada fase.

# Fase 1: Business Understanding
# TODO: define objetivo, restricciones y criterio de éxito.

# Fase 2: Data Understanding
# TODO: resumen de calidad (NA, duplicados, rangos) y riesgos de sesgo.

# Fase 3: Data Preparation
# TODO: decisiones de limpieza, imputación, features y *data lineage*.

# Fase 4: Modeling
# TODO: ajusta y documenta tu(s) modelo(s).

# Fase 5: Evaluation
# TODO: valida técnica y negocio; ¿sirve para la decisión?

# Fase 6: Deployment
# TODO: propone cómo se usaría (reporte, script, API, dashboard) y qué monitorear.

Preguntas guía: 1. ¿Qué artefactos dejarías para auditoría (checklist, diccionario, bitácora)?
2. ¿Qué riesgos operativos o de modelo anticipas y cómo los mitigarías?


4.4 Ruta C — KDD (para resolver)

Apunta a descubrir conocimiento que complemente lo predictivo: crea features y busca patrones.

# 1) Selección
# TODO: elige variables y justifica por qué.

# 2) Preprocesamiento
# TODO: trata NA y rangos; deja nota de decisiones.

# 3) Transformación
# TODO: crea al menos 2 features (ej.: prima_por_mil, siniestros_bin, edad_grupo).

# 4) Minería de datos
# TODO: ajusta 1–2 modelos/patrones (p. ej., lm, reglas simples, segmentación básica).

# 5) Interpretación/Evaluación
# TODO: interpreta hallazgos: ¿qué variables explican mejor y por qué?

Preguntas guía: 1. ¿Qué nuevas variables resultaron más informativas y cómo lo comprobaste?
2. ¿Qué patrones descubriste que no eran evidentes en la descriptiva?


4.5 Entregables sugeridos

  • Un informe breve (2–3 páginas) con: objetivo, data lineage, decisiones, resultados y recomendaciones.
  • Un script R limpio con secciones por metodología.