La Organización Mundial de la Salud ha estimado que 12 millones de muertes se producen en todo el mundo, cada año debido a enfermedades del corazón. La mitad de las muertes en los Estados Unidos y otros países se deben a enfermedades cardiovasculares. El pronóstico precoz de las enfermedades cardiovasculares puede ayudar en la toma de decisiones sobre los cambios de estilo de vida en pacientes de alto riesgo y a su vez reducir las complicaciones.
Se busca pretende identificar los factores de riesgo más / relevante de enfermedades del corazón, así como predecir el riesgo global mediante el uso de árboles de decisión.
El conjunto de datos está disponible públicamente en el sitio web Kaggle, y es a partir de un estudio cardiovascular sobre los residentes de la ciudad de Framingham, Massachusetts. El objetivo es la clasificación para predecir si el paciente tiene riesgo de 10 años de futura enfermedad cardiaca coronaria (CHD) .El conjunto de datos proporciona información de los pacientes. Incluye más de 4.000 registros y 14 atributos.
En la siguinete tabla se encuentra la información de las variables con las que se va a trabajar :
| No. | Variable | Tipo de datos | Descripción | Tipo de variable | Método de función de procesamiento |
|---|---|---|---|---|---|
|
|
sexo | Binaria |
Sexo 0: hombre 1: mujer |
Independiente | Ninguno |
|
|
edad | Binaria | Edad del paciente | Independiente | Ninguno |
|
|
educación | Binaria |
Nivel de educación del paciente 4: Barchelor 3: Associate 2: Senior 1: JHS |
Independiente | Ninguno |
|
|
currentSmoker | Binaria |
Si el paciente es fumador actual 0: No 1: sí |
Independiente | Ninguno |
|
|
cigsPerday | Binaria | El número de cigarrillos que la persona fumaba en promedio en un día | Independiente | Ninguno |
|
|
BPMeds | Binaria |
Si el paciente estaba o no tomando medicamentos para la presión arterial 0: No 1: Sí |
Independiente | Ninguno |
|
|
prevalentStroke | Binaria |
Si el paciente había tenido un derrame cerebral previamente 0: No 1: Sí |
Independiente | Ninguno |
|
|
prevalentHyp | Binaria |
Si el paciente era hipertenso o no 0: No 1: Sí |
Independiente | Ninguno |
|
|
diabetes | Binaria |
Si el paciente tenía diabetes o no 0: No 1: Sí |
Independiente | Ninguno |
|
|
totChol | Binaria | Nivel de colesterol total | Independiente | Ninguno |
|
|
sysBP | Doble | Presión arterial sistólica | Independiente | Ninguno |
|
|
diaBP | Doble | Presión arterial diastólica | Independiente | Ninguno |
|
|
IMC | Doble | Índice de masa corporal | Independiente | Ninguno |
|
|
heartRate | Binaria | Frecuencia cardíaca del paciente | Independiente | Ninguno |
|
|
glucosa | Binaria | Nivel de glucosa | Independiente | Ninguno |
|
|
TenYearCHD | Binaria |
0: No 1: Sí |
Target | Ninguno |
De estudios hechos sobre el dataset se ha concluido que :
• Los hombres parecen ser más susceptibles a la enfermedad cardíaca que las mujeres. El aumento de la edad, el número de cigarrillos fumados por día y la presión arterial sistólica también muestran el aumento de probabilidades de tener la enfermedad cardíaca
• El colesterol no presenta ningún cambio significativo en las probabilidades de enfermedad coronaria. Esto podría ser debido a la presencia de ’colesterol bueno (HDL) en la lectura de colesterol total.
Ahora observemos el missmap de la base de datos:
se observa que la base posee datos faltantes pero no representan más del 30% de cada variable, por lo tanto se procede a imputar los datos, mediante imputación múltiple:
Así trabajaremos con la base imputada.
No se ve presencia de datos atípicos.
Existen dos posibles datos de atípicos.
Se puede ver una gran cantidad de posibles datos atípicos, con valores muy bajos y muy altos.
Se tiene una gran cantidad de posibles datos atípicos por valores muy altos.
Existen varios posibles atípicos con valores altos además de unos cuantos con valores bajos.
Existen varios posibles atípicos con valores altos además de un posible valor demasiado bajo.
Se ve que exiten varios posibles valores atípicos por ser muy altos y dos posibles valores muy bajos.
En este caso existen muchísimos datos atípicos, tanto por valores muy bajos como por valores muy altos.
Claramente se ve como a mayor edad se tiene un mayor número de casos con enfermedad coronaria, es más, no se tienen casos de enfermedad coronaria en las personas menores a 34 años. La mayoría de personas están alrededor de los 40 años.
Se puede observar que la mayoría de personas son no fumadoras actualmente, pocas de estas tienen la enfermedad a estudiar. Se puede ver que en las personas que fuman al rededor de 20 cigarrillos diarios hay un gran porcentaje con la enfermedad coronaria.
Se puede ver las personas que tienen entre 200 y 300 de colesterol son quienes más presentan la enfermedad, además esta variable posiblemente podría seguir una distribución normal.
Se ve que la fracción de personas que tienen la enfermedad coronaria aumenta conforme aumenta la presión arterial sistólica. Esta variable podría seguir una distribución Gamma o tal vez una normal, esto por la presencia de atos atípicos.
Cuando la presión diastólica es baja no se ve ausencia de la enfermedad a estudiar mientras que en valores altos no parece haber una relación. Esta variable persenta una gran cantidad de observaciones entre 75 y 87, de nuevo podría seguir una distribución normal con presencia de atípicos.
El índice de masa corporal parece no tener relación con la enfermedad coronaria, la mayoría de observaciones pueden estar dentro de lo que se considera un valor normal o de sobrepeso, algunos valores son extremadamente altos por lo que pueden considerarse datos atípicos.
La frecuencia cardíaca de los pacientes en su mayoría está en valores normales, de nuevo, no parece haber relación entre la enfermedad estudiada y el valor medido.
No vemos relación entre la enfermedad coronaria y los niveles de glucosa en sangre. Se observan niveles considerados normales en la mayoría de observaciones, sin embargo, existen valores extremdamente altos.
La mayoría de observaciones son de mujeres, pero parece que la enfermedad coronaria se presenta mayormente en hombres puesto que a pesar de tener más mujeres aparecen más hombres con la enfermedad.
Aparentemente no existe una relación entre la educación y la variable de estudio, la mayoría de observaciones son de personas con bachilerato y decrece conforme el nivel de educación (Lo cual puede ser normal).
El número de personas que fuma y que no fuma es casi igual, no parece haber una relación entre la enfermedad de estudio y el hecho de que una persona fume o no.
La mayoría de personas observadas no toma medicamentos para la presión. Por la forma en que se distribuye esta variable no podemos pensar en una relación entre la variable de estudio y la ingesta de medicamentos.
La mayoría de pacientes no ha tenido un derrame cerebral previamente, de nuevo, no podemos observar una relación entre la enfermedad de estudio y esta variable.
Tenemos una gran cantidad de personas hipertensas en las observaciones, existe una posible relación entre estas variables puesto que a pesar de que hay menos personas con hipertensión que sin esta los pacientes con enfermedad coronaria e hipertensión son más.
La mayoría de pacientes no padece de diabetes, la pequeña cantidad de observaciones que padecen diabetes no permite analizar una relación entre ambas enfermedades.
Se divide el dataset en dos submuestras: una para entrenar el modelo y otra para validarlo. La proporción de los datos es de 70% , 30% respectivamente:
El Valor de información es una medida de entropía muy popular en la construcción de scorecards. Con este estadístico se puede medir el poder de predicción de agrupar los atributos de una variable. La función valor de información se calcula a partir del Peso de Evidencia (Weight of Evidence, WOE, del inglés), el cuál recoge el poder predictivo de la variable independiente en función de la variable dependiente.
\[WOE_{i}=ln\ \left[\frac{\%\Omega }{\%\Omega^{\sim}}\right]\] Donde \(\%\Omega^{\sim}\) representa el porcentaje de observaciones de nuestro interés; \(\%\Omega\) representa el porcentaje de observaciones que no lo son; y el subíndice \(i\) denota la variable independiente. Es decir, en nuestro caso, \(\%\Omega\) es el porcentaje de pacientes que no desarrolló una enfermedad crónica cardíaca en 10 años (también denominados, \(no-eventos\)) dada la observación de \(i\), y \(\%\Omega^{\sim}\) es el porcentaje que desarrolló una de esas enfermedades en 10 años (\(eventos\)) dada la observación de \(i\). Se entiende a \(ln(.)\) por el logaritmo natural.
El \(VI\) entonces se define como:
\[VI=\sum\ (\%\Omega^{\sim} - \%\Omega )\times WOE \]
Generalmente, la literatura establece los siguientes criterios en cuanto al valor del \(VI\):
A continuación presentamos el resultado de este test:
| Variable | VI | |
|---|---|---|
| prevalentHyp | prevalentHyp | 0.2192991 |
| sexo | sexo | 0.0684087 |
| educacion | educacion | 0.0575814 |
| diabetes | diabetes | 0.0557945 |
| BPMeds | BPMeds | 0.0546726 |
| prevalentStroke | prevalentStroke | 0.0197202 |
| fumadorAcutual | fumadorAcutual | 0.0018107 |
Aquí, estableceremos que únicamente usaremos aquellas variables que tengan un \(VI\) mayor a \(0.02\), por lo que \(fumadorAcutual\) y \(prevalentStroke\) no entrarán en el modelo. Notemos que la información de \(fumadorAcutual\) se puede verse reflejada también en el número de cigarrillos diarios que consume el individuo, por lo que habría una correlacion positiva entre ambas variables -y esto hace que el test la rechace.
Se procede a realizar un árbol de decisión simple usando todas las variables disponibles excepto aquellas que no son predictivas según el test de VI:
veamos además la matriz de confusión:
| Y | N | |
|---|---|---|
| Y | 13 | 20 |
| N | 180 | 1058 |
Aplicando un árbol de decisión simple, se tiene una matriz de confusion con 1058 Verdaderos Negativos, 13 Verdaderos Positivos, 180 Falsos Positivos y 20 falsos negativos. Observamos que el numero predicho de personas con CDH esta inflado, ya que el modelo predice un numero considerablemente mayor de personas con enfermedad coronaria que, en realidad, no la tienen. Se puede destacar que el modelo ha clasificado de mejor manera a las personas que no tienen enfermedad coronaria. Cabe mencionar que el costo asociado con un falso negativo, es mucho mayor que el de un caso positivo con respecto al riesgo de tener una enfermedad coronaria.
El \(ROC\) nos permite ilustrar la capacidad predictiva del clasificador binario para nuestra variable dependiente respecto a los errores de tipo I y de tipo II. Recuérdese que la curva \(ROC\) se crea trazando la tasa de verdaderos positivos (\(TPR\)) versus la tasa de falsos positivos (\(FPR\)).
\[TPR=\frac{TP}{P}\] \[FPR=\frac{FP}{N}\] De tal forma que se obtiene:
Además se tiene un área de 0.5244023. Un área cercana a 0.5 no es un resultado adecuado para el modelo. Incluso, se puede decir que el modelo tiene casi nula capacidad de discriminación y le cuesta distinguir entre clases.
Como su nombre lo indica, consiste en una gran cantidad de árboles de decisión individuales que operan como un conjunto. Cada árbol individual en el Random Forest retorna una predicción de clase y la clase con más votos se convierte en la predicción de nuestro modelo. Esto es, un gran número de modelos (árboles) relativamente no correlacionados que se ponderan superará a cualquiera de los modelos constituyentes individuales. Esta metodología, suele denominarse como bagging, explicada a detalle más adelante. Cada árbol se construye de la siguiente manera:
Dado que el número de casos en el conjunto de entrenamiento es \(N\), una muestra de esos \(N\) casos se toma aleatoriamente pero con reemplazo. Esta muestra será el conjunto de entrenamiento para construir el árbol \(k\).
Si existen \(M\) varibles de entrada, un número \(m<M\) se especifica tal que para cada nodo, \(m\) variables se seleccionan aleatoriamente de \(M\). La mejor división de estos \(m\) atributos es usado para ramificar el árbol. El valor \(m\) se mantiene constante durante la generación del random forest.
Cada árbol crece hasta su máxima extensión posible y no hay proceso de poda o reducción de nodos. Nuevas instancias se predicen a partir de la agregación de las predicciones de los \(x\) árboles (i.e., mayoría de votos para clasificación, promedio para regresión).
| Y | N | |
|---|---|---|
| Y | 8 | 11 |
| N | 185 | 1067 |
## [1] 84.57907
El atributo que muestre el menor índice de Gini es el que maximiza la reduccion de impurezas. En el grafico se muestra el mean decrease, por tanto, a mayor valor mostrado, mejor sera la reducción de impurezas. En este caso, la variable sysBP (presión arterial sistolica) puede ser un atributo o punto de division adecuado para el criterio de division. Ademas, tambien se consideran los atributos de indice de masa corporal, glucosa, edad y el nivel de colesterol como atributos importantes para la division.
Al observar la matriz de confusion para este modelo, se tienen 8 valores Verdaderos Positivos, 1067 Verdaderos Negativos, 185 Falsos Positivos y 11 Falsos Negativos. Obtenemos un porcentaje de predicciones correctas de 84.736 % . Es importante mencionar que el numero de Falsos Negativos, que se considera tiene un mayor costo asociado, es menor que en el anterior modelo.
Curva ROC:
## Y N predict observado
## 2 0.046 0.954 N N
## 5 0.038 0.962 N N
## 6 0.152 0.848 N N
## 7 0.136 0.864 N Y
## 10 0.200 0.800 N N
## 13 0.204 0.796 N N
Además se tiene un área de 0.6789151.
El área bajo la curva AUC es de 0.6799, se aleja mas de 0.52 que fue el area obtenida por el anterior modelo. Se puede decir que el modelo tiene aproximadamente un 68% de probabilidades de distinguir correctamente entre las clases.
Así como todos los modelos, un árbol de decisión también sufre de los problemas de sesgo y varianza.
El Bagging permite reducir la varianza de las predicciones a través de la combinación de los resultados de varios clasificadores, cada uno de ellos modelados con diferentes subconjuntos tomados de la misma población.## [1] N N N N N N
## Levels: N Y
| Y | N | |
|---|---|---|
| N | 173 | 1038 |
| Y | 20 | 40 |
## [1] 83.24154
La Matriz de Confusion muestra que se obtienen 20 Verdaderos Positivos, 1038 Verdaderos Negativos, 173 Falsos Positivos y 40 Falsos Negativos. El porcentaje de predicciones correctas es de 83.24% , menor que el del anterior modelo. Ademas, salta a la vista que existen mas casos correspondientes al error tipo II, tener mas casos de Falsos Negativos tiene un mayor costo asociado.
Curva ROC:
Además se tiene un área de 0.6379858.
Al observar la curva ROC, salta a la vista que no se diferencia demasiado de la diagonal. En efecto, tiene un area menor que el anterior modelo, de 0.638. Esto significa que el modelo en cuestion tiene un 63.8% de probabilidad de distinguir correctamente entre clases.
Es una variación del algoritmo de gradient boosting, donde en cada iteración del algoritmo, cada clasificador debe encajar en una submuestra del conjunto de entrenamiento extraído al azar sin reemplazo. El algoritmo de gradient boosting, en pocas palabras, construye modelos de regresión ajustando una función parametrizada (learner) a los errores por mínimos cuadrados en cada iteración.
Formalmente, en el problema de estimación de funciones, se tiene un sistema que consta de una variable de “salida” o “respuesta” aleatoria y un conjunto de variables de “entrada” o “explicativas” aleatorias. Dado un conjunto de observaciones (muestra para el training) se busca encontrar una función \(F^{*}(x)\) de \(x\) a \(Y\) tal que el valor de una función de pérdida \(\varphi(y,F(x))\) -que escogemos que sea la función de mínimos cuadrados- sea mínima.
\[F^{*}(x)=arg\min_{F(x)} E_{y|x} \varphi(y,F(x))= arg\min_{F(x)}\sum[y-F(x)]^{2} \] Lo que definimos como boosting, aproxima \(F^{*}(x)\) mediante una expansion aditiva de la forma
\[F_{m}(x)=\sum \beta_{m}h(x,a_{m})\] donde las funciones \(h(x,a)\) se escogen con una forma simple (una regresion lineal generalmente) de \(x\) con parametros \(a=\{a_{1}, a_{2},...,a_{m} \}\) tal que \(M\) es el número de iteraciones requeridas que más aproximan* \(F(x)\) a \(F^{*}(x)\), y \(m=1,...,M\). Asi, \(h(.)\) es un ajuste preliminar del training data, y los coeficientes \(\beta_{m}\) ajustan una sola funcion de manera ponderada (en una manera muy similar al bagging) a una sola funcion de clasificacion superior. Los residuos,
\[e_{i, m}=\left[\frac{\partial \varphi(y_{i},F_{m}(x_{i}))}{\partial F_{m}(x_{i})}\right] \] se calculan de manera iterativa. Dicho cálculo se hace mediante el algoritmo propuesto por Friedman (1999) -omitido en este trabajo por simplicidad. Ante esto, Friedman (2002) propone una pequeña modificación al algoritmo propuesto inicialmente para incorporar la aleatoriedad como parte integral del procedimiento. Sea \(\{y_{i},x_{i} \}\) el training data, con \(i= \{1,...,N \}\), y sea \(\{\pi(i) \}\) una permutacion aleatoria de los enteros \(\{1,...,N \}\). Ahora, se calcula
\[F_{\pi(i)}(x)=\sum \beta_{\pi(i)}h(x,a_{\pi(i)})\] Esto representa una mejora sustancial en la precisión del algoritmo, pues como se observa en algoritmos afines como AdaBoost, la noción de que inyectar aleatoriedad en los procedimientos de estimación de funciones mejora su desempeño.
*La literatura (Huber, 1996) define el número de iteraciones óptimo como \[\{M :\ \varphi(y_{M},F_{M})=(y_{M}-F_{M})^{2}\ (|y_{M}-F_{M}|<\delta)+2\delta(|y_{M}-F_{M}|-\delta/2)(|y_{M}-F_{M}|>\delta)\ con\ \delta \to 0 \} \]
| Y | N | |
|---|---|---|
| Y | 14 | 12 |
| N | 179 | 1066 |
La Matriz de Confusion de este modelo muestra 14 Verdaderos Positivos, 1066 Verdaderos Negativos, 179 Falsos Positivos y 12 Falsos Negativos. El porcentaje de predicciones acertadas es de 84.97% , el mayor de todos los modelos presentados. Sin embargo, el numero de Falsos Negativos es mayor que en Random Forest. Se debe tomar en cuenta que el Error de tipo II tiene un mayor costo asociado para el contraste entre modelos.
Curva ROC:
## Y N predict observado
## 1 0.06346800 0.9365320 N N
## 2 0.06518105 0.9348189 N N
## 3 0.16227125 0.8377288 N N
## 4 0.16103973 0.8389603 N Y
## 5 0.17040055 0.8295995 N N
## 6 0.11559972 0.8844003 N N
Además se tiene un área de 0.7055764.
Es visible que la curva ROC de este modelo se aleja un tanto mas de la diagonal de area 0.5. El area bajo la curva es de 0.7056, este es el mejor valor de entre los modelos presentados. La probabilidad de que el modelo pueda distinguir correctamente entre clases es del 70.56%.
AdaBoost se refiere a un método particular de entrenamiento de un clasificador sobre el que ha sido aplicado una técnica similar al bagging previemente. Pues, este combina varios “clasificadores débiles” en un solo “clasificador fuerte”, donde consideramos a clasificadores débiles como árboles de decisión con una sola división.Y, con esto, AdaBoost funciona poniendo más peso en las instancias difíciles de clasificar y menos en las que ya se manejan bien directamente por los clasificadores débiles para obtener un clasificador fuerte. En términos bastante cortos, el clasificador es una ponderación diferenciada que permite obtener un clasificador superior.
En nuestra notacion, y como definimos \(h(.)\) anteriormente para el training, a cada iteracion \(m\) se busca minimizar el error total \(e_{m}\), asignando un coeficiente \(\alpha_{m}\) que pondera cada funcion \(h\)
\[e_{m}=\sum_{i} E_{y|x} \left[ F_{m-1}(x_{i})+\alpha_{m} h(x_{i}) \right] \]
## Observed Class
## Predicted Class Y N
## N 177 1042
## Y 16 36
## [1] 83.24154
La Matriz de Confusion muestra 16 Verdaderos Positivos, 1050 Verdaderos Negativos, 177 Falsos Positivos y 28 Falsos Negativos. El porcentaje de predicciones correctas es de 83.87%. Nuevamente, se observa que el numero de registros que caen en el Error tipo II es mayor que en otros modelos.
Curva ROC:
## observado X1 X2 predicciones.class
## 1 N 0.3116954 0.6883046 N
## 2 N 0.2728581 0.7271419 N
## 3 N 0.4267254 0.5732746 N
## 4 Y 0.4229233 0.5770767 N
## 5 N 0.3413779 0.6586221 N
## 6 N 0.3170480 0.6829520 N
Además se tiene un área de 0.6601844, lo que implica que existe un 65.94% de probabilidad de que el modelo puede distinguir correctamente las clases.
–>
1.Los hombres son más susceptibles a la enfermedad cardíaca que las mujeres. El aumento de la edad, el número de cigarrillos fumados por día y la presión arterial sistólica conducen a una enfermedad cardíaca.
2.El colesterol no es significativo en las probabilidades de enfermedad coronaria.
Existe evidencia estadística de que los hombres parecen ser más susceptibles a la enfermedad cardíaca que las mujeres. El aumento de la edad y la presión arterial sistólica también muestran el aumento de probabilidades de tener la enfermedad cardíaca.
Se rechaza que el numero de cigarrillos fumados por dia sea significativo. Se rechaza que el colesterol no presenta ningún cambio significativo en las probabilidades de enfermedad coronaria.
Los modelos con el mejor indicador AUC son Random Forest, con \(0.6799\), y el Stochastic Gradient Boosting con \(0.7056\). Es importante realizar un analisis respecto al costo asociado al recurrir al modelo Stochastic Gradient Boosting ya que este tiene un mayor número de ocurrencias del Error Tipo II. Un mayor numero de Falsos Negativos, en el contexto de riesgo por padecer enfermedad coronaria en el futuro, puede ocasionar que existan complicaciones relacionadas a la falta de tratamientos médicos y preventivos oportunos. Al ser parte de un area medica que representa la mitad de las muertes en Estados Unidos, es necesario obtener modelos con mayor poder predictivo -se esperaría tener un AUC lo más alejado posible de 0.5 y modelos con valores muy cercanos no serían aceptables.
La hipotesis médica sobre la no significancia del colesterol se explica por la presencia de “colesterol bueno (HDL)” en la lectura de colesterol total. Sin embargo, al no considerar como importantes las variables de cigarrillos diarios fumados y los antecedentes de accidente cerebrovascular, ademas de la implementacion de los distintos modelos, la presencia de colesterol presenta un cambio estadísticamente significativo.
La mitad de las muertes en los Estados Unidos y otros países desarrollados se deben a enfermedades cardiovasculares. Hay que recalcar que estas variables son sensibles a los cambios en los hábitos y calidad de vida de los diferentes países, por esto, podría ser generalizable, hasta cierto punto, para países desarrollados.
Las campañas de pronóstico temprano de las enfermedades cardiovasculares pueden basarse en estos modelos. Ante el riesgo adicional de cometer el Error de Tipo II, se pueden realizar campañas especializadas para aquellos casos Falsos Negativos, aun no identificados, enfocadas en la prevención y los cambios en el estilo de vida. Principalmente, aquellos Negativos mayores de 45 años que presenten una presión arterial sistólica mayor o igual a 125.
Hastie, T., Tibshirani, R., Friedman, J. H. (2008). Elements of Statistical Learning, 2(nd) Ed., Springer Series in Statistics.
Friedman, J. H. (2002). Stochastic gradient boosting. Computational Statistics & Data Analysis, 38(4), 367–378. doi:10.1016/s0167-9473(01)00065-2.
Yiu, T. (2019, 12 junio). Understanding Random Forest. Towards Data Science. https://towardsdatascience.com/understanding-random-forest-58381e0602d2