MACHINE LEARNING CON R : CLASIFICACIÓN BINARIA
0. INSTALACIÓN DE LIBRERÍAS
1.ESTUDIO Y ANÁLISIS DEL DATASET
El dataset escogido para este estudio es un dataset que recoge datos del cáncer de mama.
Podemos encontrarlo en Kaggle con el enlace:
https://www.kaggle.com/datasets/erdemtaha/cancer-data/data
Dicho dataset cuenta con 590 observaciones y 32 variables que representan diferentes
características de los núcleos celulares extraídos de las imágenes de las muestras de
aspiración con aguja fina de tumores mamarios. Las variables se definen de la siguiente
forma:
1. ID: Identificador único de cada observación en el conjunto de datos.
2. Diagnosis: Diagnóstico del tumor mamario y puede tener dos valores: “M” para maligno
(cáncer) y “B” para benigno (no canceroso).
3. mean_radius: Promedio de las distancias desde el centro hasta los puntos del perímetro
del tumor.
4. mean_texture: Desviación estándar de los valores de la escala de grises en la imagen del
tumor.
5. mean_perimeter: Suma de las longitudes de los segmentos del perímetro del tumor. 6.
mean_area: Representa el área del tumor.
7. mean_smoothness: Variación local en las longitudes de los radios del tumor.
8. mean_compactness: Compacidad del tumor, que es una relación entre el perímetro y el
área.
9. mean_concavity: Severidad de las porciones cóncavas del contorno del tumor.
10. mean_concave_points: Número de porciones cóncavas del contorno del tumor.
11. mean_symmetry: Simetría del tumor.
12. mean_fractal_dimension: Irregularidad del contorno del tumor.
13. se_radius: Error estándar del promedio de las distancias desde el centro hasta los
puntos del perímetro del tumor.
14. se_texture: Error estándar de la desviación estándar de los valores de la escala de
grises en la imagen del tumor.
15. se_perimeter: Error estándar de la suma de las longitudes de los segmentos del
perímetro del tumor.
16. se_area: Error estándar del área del tumor.
17. se_smoothness: Indica el error estándar de la variación local en las longitudes de los
radios del tumor.
18. se_compactness: Error estándar de la compacidad del tumor.
19. se_concavity: Error estándar de la severidad de las porciones cóncavas del contorno del
tumor.
20. se_concave_points: Error estándar del número de porciones cóncavas del contorno del
tumor.
21. se_symmetry: Error estándar de la simetría del tumor.
22. se_fractal_dimension: Error estándar de la medida de la irregularidad del contorno del
tumor.
23. worst_radius: Peor (mayor) valor encontrado entre los radios del tumor.
24. worst_texture: Peor (mayor) valor encontrado entre las desviaciones estándar de los
valores de la escala de grises en la imagen del tumor.
25. worst_perimeter: Peor (mayor) valor encontrado entre las sumas de las longitudes de los
segmentos del perímetro del tumor.
26. worst_area: Peor (mayor) valor encontrado para el área del tumor.
27. worst_smoothness: Peor (mayor) valor encontrado para la variación local en las
longitudes de los radios del tumor.
28. worst_compactness: Peor (mayor) valor encontrado para la compacidad del tumor.
29. worst_concavity: Peor (mayor) valor encontrado para la severidad de las porciones
cóncavas del contorno del tumor.
30. worst_concave_points: Peor (mayor) valor encontrado para el número de porciones
cóncavas del contorno del tumor.
31. worst_symmetry: Peor (mayor) valor encontrado para la simetría del tumor.
32. worst_fractal_dimension: Peor (mayor) valor encontrado para la medida de la
irregularidad del contorno del tumor
1.1 ANÁLISIS DESCRIPTIVO
Contamos con 569 observaciones y 32 columnas. Vamos a profundizar un poco más y ver
qué datos contiene ese dataset.
Vemos que no hay datos faltantes en todo el dataset. También vemos que todas las
variables son numéricas, excepto la variable predictiva, la cual es la variable ‘diagnosis’.
2. SELECCIÓN DE VARIABLES
2.0.1 PARA HACER EL ESTUDIO ORIGINAL,DIVIDIMOS LAS VARIABLES SEGÚN LA
MEDIA, SE O WORST.
Como nuestro estudio es de clasificación convertimos la variable a predecir en 0 si es B y 1
si es M.
Para hacernos una idea de cómo son las variables, vamos a observarlas gráficamente
Si observamos las gráficas en conjunto, podemos observar que puede existir algún patrón
de clasificación, ya que todas las variables parecen tener una mayor agrupación de datos
en un intervalo concreto y una dispersión.
Para hacernos una idea general, vamos a diferenciar según si la variable diagnosis es 1 o 0.
Podemos ver más fácilmente la separación según si el tumor es maligno o benigno.
2.1 TÉCNICA STEP-WISE
Además usaremos la técnica RFE:
En un principio parece que deberíamos coger 5 u 8 variables. Usaremos también el RFECV:
Vamos a coger 4 listas distintas de variables y comprobaremos cuál de ellas funciona mejor.
2.2 PARECE LÓGICO QUEDARNOS CON LAS VARIABLES DE rfe_variables_2.
2.2.1 ESTUDIO DE LA CORRELACIÓN ENTRE VARIABLES.
Este estudio me ayudará a entender varios datos: - Multicolinealidad entre variables -
Relación entre variable a predecir y variables predictoras - Ayuda a la interpretación - Ayuda
a eliminar variables y evitar problemas por alta dimensionalidad Veamos las correlaciones
que hay entre diagnosis y las variables elegidas:
2.3 VEMOS COMO LAS CORRELACIONES SON SIMILARES ENTRE LAS GRÁFICAS.
Si nos fijamos en la correlación de ‘diagnosis’ con las demás variables en las tres gráficas,
hay alguna que hasta cambia de signo. También cabe destacar que las variables de
concave points y compactness están muy correlacionadas. Vamos a eliminar las variables
compactness. Así podremos eliminar algún problema de multicolinealidad y no debería
afectar mucho a la predicción.
A partir de aquí, continuaremos con las variables ‘worst’, ya que parece que podemos
obtener mejores resultados con este set. Más adelante, repetiremos los modelos con los
distintos set de variables.
2.4 SCATTER PLOTS
Entendamos un poco mejor cómo se relacionan estas variables con la variable a predecir:
Parece que los grupos tienen características bien diferenciadas. Los tumores benignos
parecen tener menos cantidad de cada variable. Esto son buenas noticias, ya que parece
que vamos a poder clasificar bien este problema.
2.5 PREPARACIÓN DE DATOS
Solo tenemos una muestra de los datos. Es buena práctica guardar un pequeño porcentaje
de datos para validar el modelo final con datos totalmente nuevos. Creemos este set de
validación:
Vemos que tenemos 357 observaciones de la clase mayoritaria y 212 de la minoritaria. No
habrá ninguna limitación por tema de falta de observaciones, ya que tenemos bastantes.
El porcentaje de aparición de la clase minoritaria es del 37%. La accuracy base sería del
63% y la tasa de fallos de referencia sería del 37%.
2.6 29 REGISTROS QUE MANTIENEN LA PROPORCIÓN 0/1 PARA VALIDAR AL FINAL
DEL ESTUDIO.
Ahora, continuemos con el proceso normal. Realicemos una división en train y test de la
misma manera. Con este test, veremos lo bien que lo hace nuestro modelo de machine
learning en el área de pruebas.
A partir de ahora, usaremos sólo las variables de ‘worst’. A priori, no tiene sentido usar
distintas mediciones de los mismos en un modelo de machine learning. Haremos las
pruebas al final con cada tipo de variables e incluso con todas a la vez.
2.7 ESTUDIO DE OUTLIERS
Veamos columna por columna si hay outliers que analizar:
Aquí vemos que hay algunos outliers por encima. Veamos cuáles son. Esto lo haremos
calculando el rango intercuartílico:
Son 14 valores, vamos a ver si hay algún patrón respecto a si son tumores malignos o
benignos.
2.8 NO PODEMOS ELIMINAR ESTOS OUTLIERS
Repitamos el proceso con las demás variables. Vamos a crear una función para que nos
muestre directamente el valor de las y de los outliers.
De aquí, parece que sería interesante quitar los 5 outliers de ‘smoothness_wors’t y los 19 de
‘fractal_dimension_worst’. De momento, solo quitaremos los 5 de ‘smoothness_worst’ para
perder el menor número de información.
3 ESTANDARIZACIÓN DE COLUMNAS
Probemos con un escalador diferente para cada set de variables que usemos.
Transformamos el set de datos:
Y ahora le aplicamos la misma transformación al set de test.
4 MODELOS
Vamos a entrenar varios modelos y los analizaremos para ver cuál es el mejor
Para la métrica, podemos elegir entre: - Acurracy - Precision - Recall.
Voy a elegir la métrica de precisión, ya que va a intentar asegurar que cuando alguien tiene
cáncer, lo tenga. Esto lo hago sobre todo por el hecho de que decirle a alguien que tiene
cáncer cuando en verdad no lo tiene, hará que tenga que pasar por tratamientos que
pueden dejarle en un estado irreversible, mientras que, en caso de duda, se podría volver a
repetir el análisis.
Aun así, esta decisión necesitaría de más información para tomarla.
4.1 REGIÓN LOGÍSTICA
Vemos que tenemos una precisión muy alta.
A priori, parece que este modelo está clasificando muy bien. Esto puede ser debido a que
hay buenos patrones para clasificar correctamente este problema, y a que hemos realizado
un buen tratamiento. Vamos a intentar encontrar la mejor regresión logística con la técnica
de Fine-Tuning.
Esta técnica me permite encontrar los mejores parámetros para este problema y maximizar
la precisión.
Hemos encontrado una combinación de parámetros que hace que prediga con una
precisión muy alta. Los dos modelos son muy buenos.
4.2 COMPROBAMOS QUE MODELO FUNCIONA MEJOR
También quiero usar RandomizedSearch para mirar más parámetros. Así, el tuneado será
más extenso en cada modelo.
La precisión sigue siendo perfecta.
Sigamos mirando otros modelos.
4.3 PERCEPTRÓN MULTICAPA
Esta red neuronal también ha sacado buenos resultados.
Hay que tener en cuenta que este modelo es muy difícil de interpretar, requiriendo técnicas
avanzadas para entenderlo. En igualdad de condiciones, nos quedaríamos con el modelo
más sencillo.
Probemos con random search y con otros parámetros:
Volvemos a obtener un 100%. Comparemos estos modelos:
Las regresiones logísticas son las que tiene mejores resultados. Vamos a quedarnos de
momento con la logística normal por simplicidad. Las redes neuronales no llegan a igualarla,
nos quedaremos con la red neuronal grid.
4.4 RANDOM FOREST (CLASSIFIER)
No ha conseguido una precisión tan alta como los otros con el test.
Parece que la mejor decisión de número de árboles es 10.
Los modelos de árboles sí que suelen tener una interpretación más sencilla que las redes
neuronales, pero siguen siendo más complejas que las de la regresión logística.
Con estos parámetros sí que hemos conseguido mejorar la predicción en el test
Todas funcionan muy bien. Quedémonos con el rf grid por tener menos árboles.
4.5 GRADIENT BOOSTING
Aquí no vamos a explorar una gran cantidad de parámetros ya que toma bastante tiempo.
Nos centraremos en los requeridos según la guía.
El resultado está bastante bien.
Los gradient boosting se quedan un poco cortos. Se podría explorar con más parámetros,
pero el estudio quedaría demasiado extenso.
4.6 XGB
Los xgb tienen un rendimiento muy similar.