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)
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.
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.
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.
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.
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.
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, ]
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_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.
### Predicciones
pred_logit <- predict(modelo_cancer, test_cancer, type = "response")
pred_class <- ifelse(pred_logit > 0.5, "M", "B")
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.
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)
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.
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.
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.
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.