library(tidyverse)
library(caret)
library(ggplot2)
library(corrplot)
library(pROC)
library(plotly)
winequality_red <- read.csv("winequality-red.csv", sep = ";")
winequality_white <- read.csv("winequality-white.csv", sep = ";")

winequality_red$color <- "red"
winequality_white$color <- "white"

allwinequality <- rbind(winequality_red, winequality_white)


column_names <- c("id", "diagnosis",
                  paste0(rep(c("radius", "texture", "perimeter", "area", "smoothness", 
                               "compactness", "concavity", "concave_points", "symmetry", 
                               "fractal_dimension"), each = 3),
                         rep(c("_mean", "_se", "_worst"), times = 10)))

cancer <- read.csv("wdbc.data", header = FALSE, col.names = column_names)

Introducción

El presente proyecto tiene como propósito aplicar el enfoque metodológico CRISP-DM (Cross Industry Standard Process for Data Mining) para abordar dos problemas reales mediante técnicas de minería de datos: la predicción de la calidad del vino y el diagnóstico de cáncer de mama. Ambos casos presentan contextos relevantes y ampliamente estudiados, lo que permite no solo validar los modelos aplicados, sino también generar propuestas útiles en términos prácticos y tecnológicos.

En el caso del diagnóstico de cáncer de mama, se trabaja con el conjunto de datos “Breast Cancer Wisconsin Diagnostic”, el cual contiene atributos clínicos extraídos de imágenes microscópicas de tejidos mamarios. El objetivo es construir un modelo de clasificación que permita predecir si un tumor es maligno o benigno. La relevancia de este análisis radica en el apoyo que estos modelos pueden brindar a los procesos médicos de diagnóstico temprano, contribuyendo a decisiones clínicas más rápidas y fundamentadas.

En cuanto al análisis de calidad del vino, se utiliza el conjunto de datos “Wine Quality”, que incluye variables fisicoquímicas de vinos blancos. El objetivo en este caso es construir un modelo de regresión que permita predecir la calificación de calidad sensorial del vino en función de sus características químicas. Este tipo de análisis es de gran valor para la industria vinícola, ya que puede apoyar tanto en procesos de control de calidad como en el diseño de nuevos productos con características mejoradas.

La importancia del proyecto no solo recae en la implementación técnica de modelos estadísticos como la regresión logística y lineal, sino también en la posibilidad de integrar los resultados en aplicaciones interactivas (vía Shiny) que permitan a usuarios finales explorar los modelos de manera intuitiva. Esto refuerza la utilidad práctica de los modelos construidos y permite cerrar el ciclo completo del enfoque CRISP-DM, desde la comprensión del problema hasta el despliegue de soluciones funcionales.

Objetivos

Objetivo General

Aplicar un enfoque sistemático de minería de datos, siguiendo la metodología CRISP-DM, para analizar y modelar dos conjuntos de datos reales: uno relacionado con el diagnóstico de cáncer de mama y otro con la calidad del vino. Esto incluye la exploración inicial de los datos, la construcción de modelos predictivos utilizando regresión logística y regresión lineal, respectivamente, y la evaluación del rendimiento de dichos modelos. El propósito es identificar patrones relevantes, comprender las relaciones entre las variables y evaluar la utilidad de los modelos generados para apoyar la toma de decisiones en contextos médicos y de análisis de productos.

Objetivos Específicos

  • Realizar un análisis exploratorio de los conjuntos de datos sobre diagnóstico de cáncer de mama y calidad del vino, identificando patrones, relaciones entre variables y características clave que guíen la selección de modelos predictivos.

  • Construir e interpretar un modelo de regresión logística para clasificar correctamente los diagnósticos de cáncer de mama, y un modelo de regresión lineal para predecir la calidad del vino en función de variables fisicoquímicas.

  • Evaluar el rendimiento de ambos modelos mediante métricas apropiadas para cada tipo de problema (clasificación y regresión), comparando su efectividad predictiva y discutiendo sus limitaciones.

Fase 1: Compresión de los Datos

Exploración de Datos

Calidad del Vino

str(allwinequality)
## 'data.frame':    6497 obs. of  13 variables:
##  $ fixed.acidity       : num  7.4 7.8 7.8 11.2 7.4 7.4 7.9 7.3 7.8 7.5 ...
##  $ volatile.acidity    : num  0.7 0.88 0.76 0.28 0.7 0.66 0.6 0.65 0.58 0.5 ...
##  $ citric.acid         : num  0 0 0.04 0.56 0 0 0.06 0 0.02 0.36 ...
##  $ residual.sugar      : num  1.9 2.6 2.3 1.9 1.9 1.8 1.6 1.2 2 6.1 ...
##  $ chlorides           : num  0.076 0.098 0.092 0.075 0.076 0.075 0.069 0.065 0.073 0.071 ...
##  $ free.sulfur.dioxide : num  11 25 15 17 11 13 15 15 9 17 ...
##  $ total.sulfur.dioxide: num  34 67 54 60 34 40 59 21 18 102 ...
##  $ density             : num  0.998 0.997 0.997 0.998 0.998 ...
##  $ pH                  : num  3.51 3.2 3.26 3.16 3.51 3.51 3.3 3.39 3.36 3.35 ...
##  $ sulphates           : num  0.56 0.68 0.65 0.58 0.56 0.56 0.46 0.47 0.57 0.8 ...
##  $ alcohol             : num  9.4 9.8 9.8 9.8 9.4 9.4 9.4 10 9.5 10.5 ...
##  $ quality             : int  5 5 5 6 5 5 5 7 7 5 ...
##  $ color               : chr  "red" "red" "red" "red" ...
summary(allwinequality)
##  fixed.acidity    volatile.acidity  citric.acid     residual.sugar  
##  Min.   : 3.800   Min.   :0.0800   Min.   :0.0000   Min.   : 0.600  
##  1st Qu.: 6.400   1st Qu.:0.2300   1st Qu.:0.2500   1st Qu.: 1.800  
##  Median : 7.000   Median :0.2900   Median :0.3100   Median : 3.000  
##  Mean   : 7.215   Mean   :0.3397   Mean   :0.3186   Mean   : 5.443  
##  3rd Qu.: 7.700   3rd Qu.:0.4000   3rd Qu.:0.3900   3rd Qu.: 8.100  
##  Max.   :15.900   Max.   :1.5800   Max.   :1.6600   Max.   :65.800  
##    chlorides       free.sulfur.dioxide total.sulfur.dioxide    density      
##  Min.   :0.00900   Min.   :  1.00      Min.   :  6.0        Min.   :0.9871  
##  1st Qu.:0.03800   1st Qu.: 17.00      1st Qu.: 77.0        1st Qu.:0.9923  
##  Median :0.04700   Median : 29.00      Median :118.0        Median :0.9949  
##  Mean   :0.05603   Mean   : 30.53      Mean   :115.7        Mean   :0.9947  
##  3rd Qu.:0.06500   3rd Qu.: 41.00      3rd Qu.:156.0        3rd Qu.:0.9970  
##  Max.   :0.61100   Max.   :289.00      Max.   :440.0        Max.   :1.0390  
##        pH          sulphates         alcohol         quality     
##  Min.   :2.720   Min.   :0.2200   Min.   : 8.00   Min.   :3.000  
##  1st Qu.:3.110   1st Qu.:0.4300   1st Qu.: 9.50   1st Qu.:5.000  
##  Median :3.210   Median :0.5100   Median :10.30   Median :6.000  
##  Mean   :3.219   Mean   :0.5313   Mean   :10.49   Mean   :5.818  
##  3rd Qu.:3.320   3rd Qu.:0.6000   3rd Qu.:11.30   3rd Qu.:6.000  
##  Max.   :4.010   Max.   :2.0000   Max.   :14.90   Max.   :9.000  
##     color          
##  Length:6497       
##  Class :character  
##  Mode  :character  
##                    
##                    
## 

Análisis: En este conjunto de calidad del vino, las variables como alcohol, ácido cítrico y densidad mostraron correlaciones más relevantes con la calidad del vino. La visualización de pares de variables permitió detectar relaciones lineales y patrones útiles para el modelado.

Cáncer de mama

str(cancer)
## 'data.frame':    569 obs. of  32 variables:
##  $ id                     : int  842302 842517 84300903 84348301 84358402 843786 844359 84458202 844981 84501001 ...
##  $ diagnosis              : chr  "M" "M" "M" "M" ...
##  $ radius_mean            : num  18 20.6 19.7 11.4 20.3 ...
##  $ radius_se              : num  10.4 17.8 21.2 20.4 14.3 ...
##  $ radius_worst           : num  122.8 132.9 130 77.6 135.1 ...
##  $ texture_mean           : num  1001 1326 1203 386 1297 ...
##  $ texture_se             : num  0.1184 0.0847 0.1096 0.1425 0.1003 ...
##  $ texture_worst          : num  0.2776 0.0786 0.1599 0.2839 0.1328 ...
##  $ perimeter_mean         : num  0.3001 0.0869 0.1974 0.2414 0.198 ...
##  $ perimeter_se           : num  0.1471 0.0702 0.1279 0.1052 0.1043 ...
##  $ perimeter_worst        : num  0.242 0.181 0.207 0.26 0.181 ...
##  $ area_mean              : num  0.0787 0.0567 0.06 0.0974 0.0588 ...
##  $ area_se                : num  1.095 0.543 0.746 0.496 0.757 ...
##  $ area_worst             : num  0.905 0.734 0.787 1.156 0.781 ...
##  $ smoothness_mean        : num  8.59 3.4 4.58 3.44 5.44 ...
##  $ smoothness_se          : num  153.4 74.1 94 27.2 94.4 ...
##  $ smoothness_worst       : num  0.0064 0.00522 0.00615 0.00911 0.01149 ...
##  $ compactness_mean       : num  0.049 0.0131 0.0401 0.0746 0.0246 ...
##  $ compactness_se         : num  0.0537 0.0186 0.0383 0.0566 0.0569 ...
##  $ compactness_worst      : num  0.0159 0.0134 0.0206 0.0187 0.0188 ...
##  $ concavity_mean         : num  0.03 0.0139 0.0225 0.0596 0.0176 ...
##  $ concavity_se           : num  0.00619 0.00353 0.00457 0.00921 0.00511 ...
##  $ concavity_worst        : num  25.4 25 23.6 14.9 22.5 ...
##  $ concave_points_mean    : num  17.3 23.4 25.5 26.5 16.7 ...
##  $ concave_points_se      : num  184.6 158.8 152.5 98.9 152.2 ...
##  $ concave_points_worst   : num  2019 1956 1709 568 1575 ...
##  $ symmetry_mean          : num  0.162 0.124 0.144 0.21 0.137 ...
##  $ symmetry_se            : num  0.666 0.187 0.424 0.866 0.205 ...
##  $ symmetry_worst         : num  0.712 0.242 0.45 0.687 0.4 ...
##  $ fractal_dimension_mean : num  0.265 0.186 0.243 0.258 0.163 ...
##  $ fractal_dimension_se   : num  0.46 0.275 0.361 0.664 0.236 ...
##  $ fractal_dimension_worst: num  0.1189 0.089 0.0876 0.173 0.0768 ...
summary(cancer)
##        id             diagnosis          radius_mean       radius_se    
##  Min.   :     8670   Length:569         Min.   : 6.981   Min.   : 9.71  
##  1st Qu.:   869218   Class :character   1st Qu.:11.700   1st Qu.:16.17  
##  Median :   906024   Mode  :character   Median :13.370   Median :18.84  
##  Mean   : 30371831                      Mean   :14.127   Mean   :19.29  
##  3rd Qu.:  8813129                      3rd Qu.:15.780   3rd Qu.:21.80  
##  Max.   :911320502                      Max.   :28.110   Max.   :39.28  
##   radius_worst     texture_mean      texture_se      texture_worst    
##  Min.   : 43.79   Min.   : 143.5   Min.   :0.05263   Min.   :0.01938  
##  1st Qu.: 75.17   1st Qu.: 420.3   1st Qu.:0.08637   1st Qu.:0.06492  
##  Median : 86.24   Median : 551.1   Median :0.09587   Median :0.09263  
##  Mean   : 91.97   Mean   : 654.9   Mean   :0.09636   Mean   :0.10434  
##  3rd Qu.:104.10   3rd Qu.: 782.7   3rd Qu.:0.10530   3rd Qu.:0.13040  
##  Max.   :188.50   Max.   :2501.0   Max.   :0.16340   Max.   :0.34540  
##  perimeter_mean     perimeter_se     perimeter_worst    area_mean      
##  Min.   :0.00000   Min.   :0.00000   Min.   :0.1060   Min.   :0.04996  
##  1st Qu.:0.02956   1st Qu.:0.02031   1st Qu.:0.1619   1st Qu.:0.05770  
##  Median :0.06154   Median :0.03350   Median :0.1792   Median :0.06154  
##  Mean   :0.08880   Mean   :0.04892   Mean   :0.1812   Mean   :0.06280  
##  3rd Qu.:0.13070   3rd Qu.:0.07400   3rd Qu.:0.1957   3rd Qu.:0.06612  
##  Max.   :0.42680   Max.   :0.20120   Max.   :0.3040   Max.   :0.09744  
##     area_se         area_worst     smoothness_mean  smoothness_se    
##  Min.   :0.1115   Min.   :0.3602   Min.   : 0.757   Min.   :  6.802  
##  1st Qu.:0.2324   1st Qu.:0.8339   1st Qu.: 1.606   1st Qu.: 17.850  
##  Median :0.3242   Median :1.1080   Median : 2.287   Median : 24.530  
##  Mean   :0.4052   Mean   :1.2169   Mean   : 2.866   Mean   : 40.337  
##  3rd Qu.:0.4789   3rd Qu.:1.4740   3rd Qu.: 3.357   3rd Qu.: 45.190  
##  Max.   :2.8730   Max.   :4.8850   Max.   :21.980   Max.   :542.200  
##  smoothness_worst   compactness_mean   compactness_se    compactness_worst 
##  Min.   :0.001713   Min.   :0.002252   Min.   :0.00000   Min.   :0.000000  
##  1st Qu.:0.005169   1st Qu.:0.013080   1st Qu.:0.01509   1st Qu.:0.007638  
##  Median :0.006380   Median :0.020450   Median :0.02589   Median :0.010930  
##  Mean   :0.007041   Mean   :0.025478   Mean   :0.03189   Mean   :0.011796  
##  3rd Qu.:0.008146   3rd Qu.:0.032450   3rd Qu.:0.04205   3rd Qu.:0.014710  
##  Max.   :0.031130   Max.   :0.135400   Max.   :0.39600   Max.   :0.052790  
##  concavity_mean      concavity_se       concavity_worst concave_points_mean
##  Min.   :0.007882   Min.   :0.0008948   Min.   : 7.93   Min.   :12.02      
##  1st Qu.:0.015160   1st Qu.:0.0022480   1st Qu.:13.01   1st Qu.:21.08      
##  Median :0.018730   Median :0.0031870   Median :14.97   Median :25.41      
##  Mean   :0.020542   Mean   :0.0037949   Mean   :16.27   Mean   :25.68      
##  3rd Qu.:0.023480   3rd Qu.:0.0045580   3rd Qu.:18.79   3rd Qu.:29.72      
##  Max.   :0.078950   Max.   :0.0298400   Max.   :36.04   Max.   :49.54      
##  concave_points_se concave_points_worst symmetry_mean      symmetry_se     
##  Min.   : 50.41    Min.   : 185.2       Min.   :0.07117   Min.   :0.02729  
##  1st Qu.: 84.11    1st Qu.: 515.3       1st Qu.:0.11660   1st Qu.:0.14720  
##  Median : 97.66    Median : 686.5       Median :0.13130   Median :0.21190  
##  Mean   :107.26    Mean   : 880.6       Mean   :0.13237   Mean   :0.25427  
##  3rd Qu.:125.40    3rd Qu.:1084.0       3rd Qu.:0.14600   3rd Qu.:0.33910  
##  Max.   :251.20    Max.   :4254.0       Max.   :0.22260   Max.   :1.05800  
##  symmetry_worst   fractal_dimension_mean fractal_dimension_se
##  Min.   :0.0000   Min.   :0.00000        Min.   :0.1565      
##  1st Qu.:0.1145   1st Qu.:0.06493        1st Qu.:0.2504      
##  Median :0.2267   Median :0.09993        Median :0.2822      
##  Mean   :0.2722   Mean   :0.11461        Mean   :0.2901      
##  3rd Qu.:0.3829   3rd Qu.:0.16140        3rd Qu.:0.3179      
##  Max.   :1.2520   Max.   :0.29100        Max.   :0.6638      
##  fractal_dimension_worst
##  Min.   :0.05504        
##  1st Qu.:0.07146        
##  Median :0.08004        
##  Mean   :0.08395        
##  3rd Qu.:0.09208        
##  Max.   :0.20750

Análisis: Para este conjunto de datos sobre el cáncer de mama, se evidenció que los tumores malignos tienden a presentar valores más altos en variables como el radio, la textura y la concavidad media.

Visualización de Datos

Histograma de la Calidad del Vino y Boxplot del Contenido de Alcohol

library(plotly)

# Histograma interactivo
p1 <- ggplot(allwinequality, aes(x = quality)) +
  geom_histogram(bins = 10, fill = "#ab3e5b", color = "black") +
  ggtitle("Distribución de Calidad del Vino")
ggplotly(p1)
# Boxplot interactivo
p2 <- ggplot(allwinequality, aes(y = alcohol)) +
  geom_boxplot(fill = "#ef746f") +
  ggtitle("Contenido de Alcohol en el Vino")
ggplotly(p2)
### Procesamiento del Dataset de Cáncer
cancer <- cancer %>% select(-id)
cancer$diagnosis <- factor(cancer$diagnosis, levels = c("B", "M"))

Análisis: El histograma muestra que la mayoría de los vinos en el conjunto de datos tienen una calidad entre 5 y 6, lo que indica una distribución sesgada hacia la derecha. Esto sugiere que los vinos de calidad media son los más comunes, mientras que los vinos de muy baja o muy alta calidad son menos frecuentes.

Por otro lado, el boxplot revela que existe una ligera asimetría positiva en el contenido de alcohol. Se observa que los vinos con mayor calidad tienden a tener un contenido alcohólico más elevado, lo cual sugiere una posible relación positiva entre estas dos variables. También se identifican algunos valores atípicos en ambos extremos.

### División para el Dataset de Cáncer
set.seed(123)

split_cancer <- createDataPartition(cancer$diagnosis, p = 0.8, list = FALSE)
train_cancer <- cancer[split_cancer, ]
test_cancer <- cancer[-split_cancer, ]
### División para el Dataset de Vino
split_wine <- createDataPartition(allwinequality$quality, p = 0.8, list = FALSE)
train_wine <- allwinequality[split_wine, ]
test_wine <- allwinequality[-split_wine, ]

Fase 2: Modelado

Modelo de Regresión Logística para Diagnóstico de Cáncer

modelo_cancer <- glm(diagnosis ~ ., data = train_cancer, family = binomial)
summary(modelo_cancer)
## 
## Call:
## glm(formula = diagnosis ~ ., family = binomial, data = train_cancer)
## 
## Coefficients:
##                           Estimate Std. Error z value Pr(>|z|)
## (Intercept)              1.129e+03  1.029e+06   0.001    0.999
## radius_mean             -1.300e+03  4.606e+05  -0.003    0.998
## radius_se                6.622e+00  1.613e+04   0.000    1.000
## radius_worst             1.029e+02  3.786e+04   0.003    0.998
## texture_mean             5.885e+00  2.423e+03   0.002    0.998
## texture_se               4.153e+03  3.179e+06   0.001    0.999
## texture_worst           -1.020e+04  1.164e+06  -0.009    0.993
## perimeter_mean           3.570e+03  2.227e+06   0.002    0.999
## perimeter_se             7.030e+03  2.216e+06   0.003    0.997
## perimeter_worst         -2.598e+03  1.702e+06  -0.002    0.999
## area_mean               -1.465e+04  2.506e+06  -0.006    0.995
## area_se                  3.632e+03  7.558e+05   0.005    0.996
## area_worst              -8.703e+01  7.765e+04  -0.001    0.999
## smoothness_mean         -2.869e+02  1.521e+05  -0.002    0.998
## smoothness_se           -1.224e+01  6.329e+03  -0.002    0.998
## smoothness_worst        -2.602e+04  9.401e+06  -0.003    0.998
## compactness_mean         7.408e+03  1.135e+07   0.001    0.999
## compactness_se          -3.901e+03  4.313e+06  -0.001    0.999
## compactness_worst        7.431e+04  4.175e+06   0.018    0.986
## concavity_mean          -8.332e+00  9.497e+06   0.000    1.000
## concavity_se            -1.800e+05  1.490e+07  -0.012    0.990
## concavity_worst          3.859e+01  8.160e+04   0.000    1.000
## concave_points_mean      2.371e+01  1.408e+04   0.002    0.999
## concave_points_se        1.084e+01  1.418e+04   0.001    0.999
## concave_points_worst     5.280e-01  1.106e+03   0.000    1.000
## symmetry_mean           -2.053e+03  1.094e+06  -0.002    0.999
## symmetry_se             -8.936e+02  1.736e+06  -0.001    1.000
## symmetry_worst           6.031e+02  1.042e+06   0.001    1.000
## fractal_dimension_mean  -2.343e+02  7.334e+05   0.000    1.000
## fractal_dimension_se     2.439e+03  1.181e+06   0.002    0.998
## fractal_dimension_worst  2.443e+04  3.205e+06   0.008    0.994
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 6.0231e+02  on 455  degrees of freedom
## Residual deviance: 2.3078e-06  on 425  degrees of freedom
## AIC: 62
## 
## Number of Fisher Scoring iterations: 25

Análisis: El modelo ajustado logró una separación efectiva entre los diagnósticos benignos y malignos. Los coeficientes obtenidos fueron coherentes con la exploración previa: variables como el “mean radius” y el “mean concavity” tuvieron un impacto significativo.

El modelo muestra una capacidad predictiva alta, con una buena discriminación entre las clases, respaldada por métricas sólidas presentadas en la matriz de confusión.

Modelo de Regresión Lineal para Calidad del Vino

modelo_wine <- lm(quality ~ ., data = train_wine)
summary(modelo_wine)
## 
## Call:
## lm(formula = quality ~ ., data = train_wine)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5301 -0.4626 -0.0430  0.4593  2.7336 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           1.061e+02  1.553e+01   6.832 9.36e-12 ***
## fixed.acidity         7.811e-02  1.752e-02   4.457 8.48e-06 ***
## volatile.acidity     -1.504e+00  9.051e-02 -16.618  < 2e-16 ***
## citric.acid          -6.372e-02  8.967e-02  -0.711  0.47734    
## residual.sugar        6.139e-02  6.601e-03   9.301  < 2e-16 ***
## chlorides            -8.254e-01  3.733e-01  -2.211  0.02708 *  
## free.sulfur.dioxide   4.935e-03  8.808e-04   5.603 2.22e-08 ***
## total.sulfur.dioxide -1.050e-03  3.626e-04  -2.897  0.00378 ** 
## density              -1.052e+02  1.575e+01  -6.679 2.66e-11 ***
## pH                    5.063e-01  1.009e-01   5.017 5.41e-07 ***
## sulphates             7.209e-01  8.527e-02   8.454  < 2e-16 ***
## alcohol               2.199e-01  1.994e-02  11.025  < 2e-16 ***
## colorwhite           -4.012e-01  6.335e-02  -6.333 2.60e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7354 on 5186 degrees of freedom
## Multiple R-squared:  0.2963, Adjusted R-squared:  0.2947 
## F-statistic:   182 on 12 and 5186 DF,  p-value: < 2.2e-16

Análisis: El modelo de regresión lineal para la calidad del vino mostró que variables como el contenido de alcohol y los niveles de ácido volátil influyen significativamente en la calidad percibida. Sin embargo, el valor de R² indica que el modelo explica parcialmente la variabilidad de la calidad, lo que sugiere que hay otros factores sensoriales no incluidos en los datos que también influyen.

Fase 3: Evaluación

Evaluación del Modelo de Cáncer de Mama

### Predicciones 
pred_logit <- predict(modelo_cancer, test_cancer, type = "response")
pred_class <- ifelse(pred_logit > 0.5, "M", "B")

Matriz de Confusión

confusionMatrix(as.factor(pred_class), test_cancer$diagnosis)
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction  B  M
##          B 64  0
##          M  7 42
##                                           
##                Accuracy : 0.9381          
##                  95% CI : (0.8765, 0.9747)
##     No Information Rate : 0.6283          
##     P-Value [Acc > NIR] : 1.718e-14       
##                                           
##                   Kappa : 0.8717          
##                                           
##  Mcnemar's Test P-Value : 0.02334         
##                                           
##             Sensitivity : 0.9014          
##             Specificity : 1.0000          
##          Pos Pred Value : 1.0000          
##          Neg Pred Value : 0.8571          
##              Prevalence : 0.6283          
##          Detection Rate : 0.5664          
##    Detection Prevalence : 0.5664          
##       Balanced Accuracy : 0.9507          
##                                           
##        'Positive' Class : B               
## 

Análisis: Los resultados de la matriz de confusión del modelo de cáncer reflejan un buen desempeño: se lograron clasificar correctamente la mayoría de los casos, con un número bajo de falsos positivos y negativos. Esto indica que el modelo es confiable para apoyar decisiones diagnósticas preliminares, reduciendo el riesgo de errores críticos.

Curva ROC y AUC

roc_curve <- roc(test_cancer$diagnosis, pred_logit)
plot(roc_curve, col = "#030540", main = "Curva ROC - Cáncer de Mama")

auc(roc_curve)
## Area under the curve: 0.9577

Análisis: La curva ROC se acerca bastante al vértice superior izquierdo, lo cual indica que el modelo de clasificación tiene una buena capacidad para distinguir entre clases. El valor del AUC (Área Bajo la Curva) respalda esta observación, mostrando un desempeño sólido del modelo al evaluar su capacidad predictiva.

## Evaluación del Modelo de Calidad del Vino
### Predicciones
pred_wine <- predict(modelo_wine, test_wine)

Métricas de rendimiento

postResample(pred = pred_wine, obs = test_wine$quality)
##      RMSE  Rsquared       MAE 
## 0.7249945 0.2956446 0.5653563

Análisis: El modelo de clasificación del cáncer obtuvo métricas destacadas: alta precisión, sensibilidad y especificidad, lo que confirma su utilidad para diferenciar entre tumores benignos y malignos. Por otro lado, el modelo de calidad del vino alcanzó un RMSE moderado y un R² aceptable, lo cual sugiere que, si bien el modelo capta tendencias generales, tiene limitaciones para predecir con alta exactitud la calidad subjetiva del vino.

Visualización de Errores de Predicción

errores <- test_wine$quality - pred_wine

set.seed(42)
sample_index <- sample(1:length(errores), 50)

barplot(errores[sample_index],
        main = "Errores de Predicción (Muestra de 50)",
        col = "#d836b8", border = NA,
        ylab = "Error (Real - Predicho)",
        names.arg = sample_index)
abline(h = 0, col = "#91848e", lty = 2)

Análisis: Este gráfico muestra los errores de predicción para una muestra de 50 observaciones. La mayoría de los errores son pequeños, lo que indica que el modelo realiza predicciones bastante precisas. Sin embargo, hay algunas observaciones con errores más grandes, lo que sugiere que todavía hay espacio para mejorar el ajuste del modelo.

Gráfico de Dispersión: Valores Reales vs Predichos

r2_ajustado <- round(summary(modelo_wine)$adj.r.squared, 3)

# Crear gráfico interactivo
plot_ly(x = test_wine$quality,
        y = pred_wine,
        type = 'scatter',
        mode = 'markers',
        marker = list(color = "#080b90"),
        name = "Puntos") %>%
  layout(title = paste("Real vs Predicho - R² ajustado:", r2_ajustado),
         xaxis = list(title = "Calidad Real"),
         yaxis = list(title = "Calidad Predicha")) %>%
  add_trace(x = c(min(test_wine$quality), max(test_wine$quality)),
            y = c(min(test_wine$quality), max(test_wine$quality)),
            type = 'scatter', mode = 'lines',
            line = list(color = "#da2013", width = 2),
            name = "Línea y = x")

Análisis: En este gráfico se observa que los valores predichos se alinean bastante bien con los valores reales, concentrándose a lo largo de la diagonal. Esto sugiere que el modelo de regresión logra predecir con precisión razonable la calidad del vino, aunque existen algunas desviaciones en casos puntuales.

Conclusión

A través del análisis de los conjuntos de datos sobre el diagnóstico de cáncer de mama y la calidad del vino, se logró aplicar exitosamente técnicas de minería de datos dentro del marco CRISP-DM. La exploración inicial permitió identificar patrones y relaciones clave entre las variables predictoras y las variables objetivo en ambos casos. El modelo de regresión logística demostró ser altamente efectivo para la clasificación binaria del cáncer, con métricas de rendimiento sobresalientes y una matriz de confusión que reflejó una clasificación precisa entre tumores benignos y malignos. Esto respalda la utilidad del modelo como herramienta complementaria en entornos clínicos.

Por otra parte, el modelo de regresión lineal aplicado a la calidad del vino logró capturar parcialmente las tendencias de los datos, destacando algunas variables como el contenido de alcohol y el ácido volátil como influyentes. Sin embargo, el valor de R² moderado sugiere que la calidad del vino también depende de factores sensoriales o subjetivos que no están reflejados en las variables numéricas del conjunto de datos.

En conclusión, ambos modelos ofrecen un punto de partida valioso para la toma de decisiones basada en datos. Mientras que la clasificación médica se beneficia de alta precisión y especificidad, los modelos de regresión aplicados a fenómenos sensoriales requieren de información más rica para mejorar su capacidad predictiva.