Grupo 6:
Manuel
Rincón
Cristian Rivera
Sara Velasco
Luis Eduardo Cambindo
El presente trabajo se realiza en el marco del desarrollo del curso “Gestión de datos” de la Universidad del Valle, en el cual se aborda el tema del aprendizaje supervisado, el cual ha sido guiado por el libro digital “Data Science con R” del autor: Mg. Daniel Paredes Inilupu del 2020-06-26 especialmente en el capítulo 10.
Lo que se propone a realizar en el presente trabajo es desarrollar un algoritmo de aprendizaje supervisado el cual se “alimenta” de una fracción de la base de datos final, esto con el fin de entrenar al algoritmo, y la fracción restante será utilizada para evaluar la precisión del algoritmo.
Con el fin de profundizar en el análisis se propone realizar una revisión de diferentes escenarios en los cuales se pueda revisar la efectividad mediante diferentes métricas tales como el “accuracy” (precisión del modelo) y como se ve afectado el algoritmo si se aumenta o disminuye la fracción de datos de entrenamiento y también se buscará el k óptimo para nuestro algoritmo dependiendo de la fracción de datos de entrenamiento; Para lograr los objetivos propuestos se realizarán una serie de pruebas en las cuales se podrán evidenciar los resultados que se obtengan realizando cambios en las variables de entrada.
Para el desarrollo del código (algoritmo) se hace uso de una base de datos dada por el profesor Orlando Joaqui Barandica y esta se crea a partir de la información recopilada en las siguientes bases de datos:
| The world bank | Our world in data | World Health Organization |
|---|---|---|
| https://acortar.link/mXcA5y | https://acortar.link/nMI8LN | https://acortar.link/6hGCvi |
La base de datos dada para el ejercicio tiene las siguientes variables:
En la siguiente tabla se muestran los países que se han incluido en la base de datos dada para el ejercicio, así mismo se muestran los códigos de identificación de cada país y los años en los que se analizó cada uno.Usted puede buscar el país que sea de su interés y así mismo ver si existe en la base de datos y de existir, puede ver los años en los cuales se analizó.
Estado de desarrollo del país que se está analizando. Esta es una variable categórica la cual año tras año se actualiza dependiendo de la clasificación que cada país haya tenido en dicho año, existen dos posibles valores:
| Status |
|---|
| Developing |
| Developed |
Esperanza de vida en años de la población de cada uno de los paises en los diferentes años.
Tasas de mortalidad de adultos de ambos sexos (probabilidad de morir entre los 15 y 60 años por cada 1000 habitantes).
Número de muertes de lactantes (menores de cinco años) por cada 1000 nacidos vivos.
Consumo de alcohol per cápita registrado (15 años o más) en litros de alcohol puro.
Gasto en salud como porcentaje del Producto Interno Bruto per cápita (%), hace referencia al porcentaje invertido en el área de la salud como fracción del PIB per cápita que tuvo cada país en los años evaluados.
Cobertura de inmunización contra la hepatitis B (HepB) en niños de 1 año (%).
Número de casos de sarampión reportados por cada 10.000 habitantes
Índice de masa corporal promedio de toda la población.
Cobertura de inmunización contra la polio (Pol3) en niños de 1 año (%).
Gasto general del gobierno en salud como porcentaje del gasto total del gobierno (%).
Cobertura de inmunización contra la difteria, el tétanos y la tos ferina (DTP3) en niños de 1 año (%).
Muertes por VIH/SIDA por cada 1000 nacidos vivos (0-4 años).
Producto Interno Bruto per cápita (en USD).
Población del país.
Prevalencia de delgadez entre niños y adolescentes de 10 a 19 años (%).
Prevalencia de delgadez entre niños de 5 a 9 años (%).
Índice de Desarrollo Humano en términos de composición de ingresos (índice que varía de 0 a 1).
Número de años de educación.
Tasas de homicidios por cada 100.000 habitantes.
Número de hijos que tendría una mujer si viviera hasta el final de sus años de fertilidad.
Aquí se encuentra la base de datos completa a partir de la cual se va a realizar el análisis de las variables para posteriormente seleccionar aquellas que sean más representativas (esto es a criterio del grupo de trabajo) para el entendimiento de la variable de Status la cual es nuestra variable a predecir a partir del sistema de aprendizaje supervisado.
La metodología usada para llevar a cabo este trabajo está basada en el libro “Data Science con R” y se va a usar la base de datos que se explicó anteriormente, para tal fin se va a realizar una selección de 7 variables del total disponibles, adicionalmente se selecciona el año 2015 y se elimina de la base de datos todos aquellos valores que están en blanco, para trabajar únicamente con los países que tengan datos en las variables elegidas, dejando así una base de datos nueva y lista para iniciar la codificación.
A continuación, se muestran las variables que fueron elegidas por el grupo de trabajo para poder realizar el modelo. Estas variables son elegidas simplemente por el hecho de que para los integrantes del grupo son unas variables que pueden estar íntimamente relacionadas con el Status del país.
| variables |
|---|
| Life.expectancy |
| Percentage.expenditure |
| GDP |
| Thinness.10.19.years |
| HDI |
| Schooling |
| Homicides |
Tras haber realizado la limpieza de la base de datos y tener lista toda la información para iniciar el tratamiento de los datos se procede a realizar un pequeño análisis de las variables elegidas mediante estadísticas descriptivas.
Las variables quedan diagramadas y se encuentra la información más relevante sobre ellas, así pues, la información de las variables queda disponible para quien desee profundizar en su análisis.
| Media | SD | Mínimo | Mediana | Máximo |
|---|---|---|---|---|
| 71.60425 | 7.877179 | 50.881 | 73.25 | 83.7939 |
| Media | SD | Mínimo | Mediana | Máximo |
|---|---|---|---|---|
| 6.559436 | 2.721305 | 1.818817 | 6.219272 | 20.41341 |
| Media | SD | Mínimo | Mediana | Máximo |
|---|---|---|---|---|
| 12918.97 | 17925.8 | 305.5498 | 4989.803 | 101376.5 |
| Media | SD | Mínimo | Mediana | Máximo |
|---|---|---|---|---|
| 4.811243 | 4.326007 | 0.1 | 3.4 | 26.8 |
| Media | SD | Mínimo | Mediana | Máximo |
|---|---|---|---|---|
| 0.7048225 | 0.152677 | 0.347 | 0.733 | 0.948 |
| Media | SD | Mínimo | Mediana | Máximo |
|---|---|---|---|---|
| 8.443787 | 3.15181 | 1.4 | 8.8 | 14.1 |
| Media | SD | Mínimo | Mediana | Máximo |
|---|---|---|---|---|
| 8.259349 | 11.74182 | 0.27 | 4.65 | 87.54 |
Después de haber visto todas las variables, analizar sus valores, como se comportan, sus respectivos promedios, su desviación estándar, así como sus valores máximos y mínimos, conociendo todo eso sobre las variables permitirá entender los resultados que obtendremos en los algoritmos que vamos a desarrollar.
A continuación, se presenta el desarrollo de las primeras 3 pruebas propuestas, a partir de las cuales se va a mantener constante el número de K (k = 7) vecinos que se van a usar y se va a observar cómo se comporta el modelo en cuanto a su precisión o “accuracy” cuando se varían las fracciones de código con las que se entrena el algoritmo tal y como se muestra en la siguiente tabla:
| Nº.de.prueba | Valor.de.k | Fracción.de.entrenamiento | Fracción.de.prueba |
|---|---|---|---|
| Prueba nº 1 | 7 | 50% | 50% |
| Prueba nº 2 | 7 | 70% | 30% |
| Prueba nº 3 | 7 | 80% | 20% |
Los resultados de las pruebas realizadas se muestran a continuación:
| Precisión del modelo |
|---|
| 85.7% |
En la prueba 1 se obtiene una precisión considerablemente alta del 85.7%, es decir, que puede distinguir entre las dos categorías de la variable Status, sin embargo, al analizar la matriz de confusión se observa que el modelo tiende a equivocarse más con los países desarrollados, pues clasificó 8 países en desarrollo como desarrollados.
| Developed | Developing | |
|---|---|---|
| Developed | 15 | 8 |
| Developing | 4 | 57 |
Con el fin de visualizar los valores individuales obtenidos se presenta la tabla de comparación entre los valores reales (los valores que originales de la base de datos) representados por la columna “Status” y los valores que fueron predichos por el algoritmo representados por la columna “Datos. predictivos”.
La tabla permite realizar búsquedas, filtrar columnas y visualizar más o menos cantidad de datos por pestaña, para facilitar el análisis de los resultados obtenidos.
| Precisión del modelo |
|---|
| 86.3% |
En la prueba 2, que tiene una precisión superior a la prueba 1 en 0.6 puntos porcentuales, se obtienen mejores valores. En esta prueba, el modelo clasificó erróneamente seis países en desarrollo como desarrollados y uno desarrollado como en desarrollo. Esto es una mejora en comparación con los ocho y cuatro países respectivamente clasificados incorrectamente en la prueba anterior. Estos resultados sugieren que a medida que aumenta la fracción de entrenamiento, el modelo puede arrojar mejores valores.
En el caso desarrollado se muestra que con los datos ingresados en la prueba nº2 es la que tiene mayor precisión sin inportar que tiene menos datos de entrenamiento que la prueba nº3.
| Developed | Developing | |
|---|---|---|
| Developed | 5 | 6 |
| Developing | 1 | 39 |
Con el fin de visualizar los valores individuales obtenidos se presenta la tabla de comparación entre los valores reales (los valores que originales de la base de datos) representados por la columna “Status” y los valores que fueron predecidos por el algoritmo representados por la columna “Datos.predictivos”.
La tabla permite realizar busquedas, filtrar columnas y visualizar mas o menos cantidad de datos por pestaña, para facilitar el análisis de los resultados obtenidos.
| Precisión del modelo |
|---|
| 85.3% |
En la última prueba se observa que la precisión ha disminuido, aunque no es drástico el cambio, sigue siendo un valor considerablemente alto, sin embargo, al observar los errores cometidos, es suficiente para determinar que el modelo presenta falencias a la hora de distinguir entre las dos categorías, pues en este caso, se clasificaron erróneamente 4 países en desarrollo como desarrollado, lo que lleva a proponer nuevos escenarios para mejorar la respuesta del modelo.
| Developed | Developing | |
|---|---|---|
| Developed | 3 | 4 |
| Developing | 1 | 26 |
Con el fin de visualizar los valores individuales obtenidos se presenta la tabla de comparación entre los valores reales (los valores que originales de la base de datos) representados por la columna “Status” y los valores que fueron predichos por el algoritmo representados por la columna “Datos.predictivos”.
La tabla permite realizar búsquedas, filtrar columnas y visualizar más o menos cantidad de datos por pestaña, para facilitar el análisis de los resultados obtenidos.
| Nº.de.prueba | Valor.de.k | Fracción.de.entrenamiento | Fracción.de.prueba | Precisión.del.modelo |
|---|---|---|---|---|
| Prueba nº 1 | 7 | 50% | 50% | 85.7% |
| Prueba nº 2 | 7 | 70% | 30% | 86.3% |
| Prueba nº 3 | 7 | 80% | 20% | 85.3% |
Se realizaron 3 pruebas manteniendo constante el valor de k = 7, en este caso se varió la fracción de datos con la que se entrenaba el algoritmo y por consiguiente se variaba la fracción de datos con los cuales se haría el testeo del modelo.
En el caso que se acabó de presentar la prueba nos arroja que, aunque se aumente la cantidad de datos de entrenamiento esto no siempre hace que el algoritmo tenga una mayor precisión, por tal motivo se hace necesario realizar pruebas con k variable, con el fin de evaluar como afecta si este fuese el valor optimo, es así como se procede a hallar el valor óptimo de k, cuando generamos ciclos for para evaluar todos los posibles valores que puede tomar k.
| Nº.de.prueba | Fracción.de.entrenamiento | Fracción.de.prueba |
|---|---|---|
| Prueba nº 4 | 50% | 50% |
| Prueba nº 5 | 70% | 30% |
| Prueba nº 6 | 80% | 20% |
| Precisión del modelo optimizado |
|---|
| 89.3% |
Para el caso de la prueba 4, con k óptimo de 16, se obtienen cinco países desarrollados y cinco en desarrollo clasificados erróneamente con una precisión de 89.3%, sensibilidad de 73.7% y especificidad de 92.3%
| Developed | Developing | |
|---|---|---|
| Developed | 14 | 5 |
| Developing | 5 | 60 |
Con el fin de visualizar los valores individuales obtenidos se presenta la tabla de comparación entre los valores reales (los valores que originales de la base de datos) representados por la columna “Status” y los valores que fueron predichos por el algoritmo representados por la columna “Datos.predictivos”.
La tabla permite realizar búsquedas, filtrar columnas y visualizar más o menos cantidad de datos por pestaña, para facilitar el análisis de los resultados obtenidos.
| Precisión del modelo optimizado |
|---|
| 94.1% |
En este caso el modelo tuvo 3 valores erróneos, 2 en vía de desarrollo y 1 en desarrollado, pero los valores no eran así verdaderamente. Así mismo, se puede observar que la precisión aumentó con respecto a la prueba nº4.
| Developed | Developing | |
|---|---|---|
| Developed | 4 | 1 |
| Developing | 2 | 44 |
Con el fin de visualizar los valores individuales obtenidos se presenta la tabla de comparación entre los valores reales (los valores que originales de la base de datos) representados por la columna “Status” y los valores que fueron predichos por el algoritmo representados por la columna “Datos.predictivos”.
La tabla permite realizar búsqueda, filtrar columnas y visualizar más o menos cantidad de datos por pestaña, para facilitar el análisis de los resultados obtenidos.
| Precisión del modelo optimizado |
|---|
| 97.1% |
El modelo para la prueba nº6 obtuvo un unico valor de error, ubicando como en vía de desarrollo uno que en realidad era desarrollado, esto también se puede ver desde su precisión, pues llega a un 97,1% siendo la más alta alcanzada hasta el momento.
| Developed | Developing | |
|---|---|---|
| Developed | 3 | 0 |
| Developing | 1 | 30 |
Con el fin de visualizar los valores individuales obtenidos se presenta la tabla de comparación entre los valores reales (los valores que originales de la base de datos) representados por la columna “Status” y los valores que fueron predichos por el algoritmo representados por la columna “Datos.predictivos”.
La tabla permite realizar búsquedas, filtrar columnas y visualizar más o menos cantidad de datos por pestaña, para facilitar el análisis de los resultados obtenidos.
| Nº.de.prueba | k.óptimo | Fracción.de.entrenamiento | Fracción.de.prueba | Precisión.del.modelo |
|---|---|---|---|---|
| Prueba nº 4 | 16 | 50% | 50% | 89.3% |
| Prueba nº 5 | 36 | 70% | 30% | 94.1% |
| Prueba nº 6 | 66 | 80% | 20% | 97.1% |
Las pruebas realizadas se actualizan de tal forma que se encuentra el K optimo dependiendo de la fracción de los datos para entrenamiento, es decir, se supera el problema de que con un k constante la fracción de entrenamiento, aunque aumente no hace que aumente la precisión del modelo, pues ahora, se evalúa primero cual es el valor óptimo de k para la fracción de entrenamiento dada al modelo.
Con el proceso implementado en el ciclo for se obtiene una relación directa entre la fracción de entrenamiento y la precisión del modelo, esto se logra gracias a que primero se obtiene el valor óptimo de k y luego se generan las salidas del modelo predictivo.
Ahora la precisión del modelo supera a todos los resultados de las pruebas realizadas con k = 7 (k constante), pues la mínima precisión lograda por el modelo de k óptimo es de 98.3% mientras que la precisión máxima con k constante fue 86.3%.
Se concluye que cuando se usa el ciclo for para evaluar los valores de k, el modelo se optimiza y mejora la precisión cuando se usan diferentes fracciones de entrenamiento.
Ahora que ya hemos visto lo que puede hacer un modelo de predicción y como se ven afectadas sus predicciones dependiendo de los parámetros de entrada que le sean asignados, se procede a analizar el uso de una librería llamada “Caret” la cual facilita la escritura del algoritmo gracias a las funciones que esta posee; adicionalmente ofrece funciones que permiten realizar un mejor tratamiento de los datos, llevando así a una posible mejora en los resultados, así es que procedemos a analizar lo que puede hacer esta librería en pro de mejorar nuestro algoritmo predictivo.
Con el fin de poder comparar los resultados obtenidos con la librería caret y con los algoritmos hechos “a pie” procedemos a realizar un escenario de pruebas para así poder llegar a conclusiones basadas en comparaciones de los resultados obtenidos entre las pruebas.
| Nº.de.prueba | Fracción.de.entrenamiento | Fracción.de.prueba |
|---|---|---|
| Prueba nº 7 | 50% | 50% |
| Prueba nº 8 | 70% | 30% |
| Prueba nº 9 | 80% | 20% |
| Nivel.de.confianza | Fracción.de.entrenamiento | Fracción.de.prueba | Precisión.del.modelo |
|---|---|---|---|
| 95% | 50% | 50% | 95.2% |
En esta prueba, se puede observar como el modelo predice el desarrollo de los países con una precisión del 95.2% con una fracción de entrenamiento del 50%, acertando 19 de los 22 países desarrollados y 61 de los 62 países en desarrollo.
| Developed | Developing | |
|---|---|---|
| Developed | 19 | 3 |
| Developing | 1 | 61 |
Con el fin de visualizar los valores individuales obtenidos se presenta la tabla de comparación entre los valores reales (los valores que originales de la base de datos) representados por la columna “Status” y los valores que fueron predichos por el algoritmo representados por la columna “Datos.predictivos”.
La tabla permite realizar búsquedas, filtrar columnas y visualizar más o menos cantidad de datos por pestaña, para facilitar el análisis de los resultados obtenidos.
| Nivel.de.confianza | Fracción.de.entrenamiento | Fracción.de.prueba | Precisión.del.modelo |
|---|---|---|---|
| 95% | 70% | 30% | 98.0% |
En esta prueba, se puede observar como el modelo predice el desarrollo de los países con una precisión del 98% con una fracción de entrenamiento del 70%, acertando 11 de los 11 países desarrollados y 38 de los 39 países en desarrollo.
| Developed | Developing | |
|---|---|---|
| Developed | 11 | 0 |
| Developing | 1 | 38 |
Con el fin de visualizar los valores individuales obtenidos se presenta la tabla de comparación entre los valores reales (los valores que originales de la base de datos) representados por la columna “Status” y los valores que fueron predichos por el algoritmo representados por la columna “Datos.predictivos”.
La tabla permite realizar búsquedas, filtrar columnas y visualizar más o menos cantidad de datos por pestaña, para facilitar el análisis de los resultados obtenidos.
| Nivel.de.confianza | Fracción.de.entrenamiento | Fracción.de.prueba | Precisión.del.modelo |
|---|---|---|---|
| 95% | 80% | 20% | 100.0% |
En esta prueba, se puede observar como el modelo predice el desarrollo de los países con una precisión del 100% con una fracción de entrenamiento del 80%, acertando 8 de los 8 países desarrollados y 25 de los 25 países en desarrollo.
| Developed | Developing | |
|---|---|---|
| Developed | 8 | 0 |
| Developing | 0 | 25 |
Con el fin de visualizar los valores individuales obtenidos se presenta la tabla de comparación entre los valores reales (los valores que originales de la base de datos) representados por la columna “Status” y los valores que fueron predichos por el algoritmo representados por la columna “Datos.predictivos”.
La tabla permite realizar búsquedas, filtrar columnas y visualizar más o menos cantidad de datos por pestaña, para facilitar el análisis de los resultados obtenidos.
| Nº.de.prueba | Nivel.de.confianza | Fracción.de.entrenamiento | Fracción.de.prueba | Precisión.del.modelo |
|---|---|---|---|---|
| Prueba nº 7 | 95% | 50% | 50% | 95.2% |
| Prueba nº 8 | 95% | 70% | 30% | 98.0% |
| Prueba nº 9 | 95% | 80% | 20% | 100.0% |
Para el caso del método Caret, con el nivel de confianza de 95% para las 3 pruebas, se obtiene para la última prueba (prueba nº9) los mejores valores de todo el trabajo, pues tanto la precisión, sensibilidad y especificidad son iguales al 100%, siendo esto lo deseado y lo que representa que el modelo es capaz de distinguir el 100% de los casos positivos y negativos arrojando menos falsos positivos esto teniendo en cuenta que el modelo está sujeto a que la confianza es del 95%.
Cuando se hace uso de la librería caret se incluyen algunas instrucciones que hacen que internamente el modelo evalúe una cantidad dada de valores de k dentro de las posibilidades de las fracciones de entrenamiento, este parámetro se incluye en el argumento tuneLength = 20, pues en este trabajo se usaron 20 valores de evaluación de k.
Otra ventaja que nos presenta la librería caret es el preprocesamiento de los datos, lo que permite que el modelo se ajuste más fácilmente y por consiguiente tenga mayor precisión.
Teniendo en cuenta los métodos utilizados ( K constante, K óptimo y Caret). Percibimos que con cada una de las pruebas, la precisión del modelo aumentaba respectivamente, pasando así de un 85.3% (prueba nº2) siendo este el menor valor de precisión del modelo con un k constante igual a 7 y una fracción de entrenamiento y prueba de 80% y 20% respectivamente, a una precisión del 100% con el método Caret con un k igual a 77 e igualmente una fracción de entrenamiento y prueba de 80% y 20% respectivamente, en resumen teniendo un porcentaje de entrenamiento mayor que del porcentaje de prueba se puede lograr una precisión en los datos mucho mayor que las demas iteraciones que se ralizaron en la modelación.
Esto finalmente nos ayuda a ver que método más preciso para clasificar a un país como “en vía de desarrollo” o “desarrollado” de acuerdo a las variables (Esperanza de vida, Porcentaje.de.gasto, PIB, Delgadez.10.19.años, IDH, Enseñanza, homicidios) con un nivel de confianza del 95% es el método que utiliza la librería Caret.
La cantidad de datos de entrenamiento influye en la precisión del modelo, siempre y cuando el K se adapte a dichas cantidades ingresadas.
Existen herramientas que permiten darle un mejor tratamiento a los datos con el fin de que los modelos tengan mayor precisión.
Se debe realizar una correcta selección de variables, pues existen bases de datos que tienen valores incongruentes, lo que puede llevar a que los modelos no se ajusten y generen valores erróneos en las predicciones, esta conclusión se da debido a que se en una primera instancia se seleccionó la variable Total.expendicture la cual tenía una serie de valores iguales a 2015, siendo este el valor del año, lo cual no era congruente con la variable que se quería incluir en el modelo, razón por la cual se decidió cambiarlo por la variable percentage.expenditure.
En relación con la anterior conclusión particular, se concluye que, para evitar errores de ese tipo, lo mejor es crear una visualización de las variables seleccionadas, así se podrá observar gráficamente algunas incongruencias en cuanto a los datos.
Nota: cabe aclarar que esta conclusión no es general, solo es una conclusión a la que se llega en este trabajo y con los datos dados, por lo tanto, no son reglas de generalidades, son solo conclusiones a un caso en particular.