Algoritmos no supervisados – K-means (k-medios)

Inteligencia Artificial en Salud

Algoritmos no supervisados – K-means (k-medios)

Hoy hablaremos de los  Algoritmos no supervisados – K-means (k-medios) .   Lo haremos utilizando la pandemia del COVID-19 en el que a los gobiernos del mundo los tomó por sorpresa.  ¿ Cómo se enfrentan los países ante el COVID19 ?

por Juan I. Barrios *

Quise hacer este post,   que es más de corte académico ( no es una evaluación) ,   para aplicar un par de métodos de Inteligencia Artificial  que puedan  «agrupar» los países de acuerdo a sus indicadores en unos pocos grupos,  utilizando  algoritmos NO supervisados, tales como:

a.) K-means  ( El algoritmo K-means paso a paso) 

b.) Algoritmo de agrupamiento jerárquico,

y poder sacar  algunas conclusiones,  sobre en que punto se encuentra Costa Rica comparativamente en el manejo de la Pandemia contra los otros países.

Los números que utilizo para hacer este post son los que produce el sitio:  ourworldindata.org sobre los datos que recogen sitios como Johns Hopkins University  y Worldometers.info.

He centrado mi análisis en el conjunto de las variables disponibles para todos los países en el mencionado sitio.

Las  variables disponibles en el set de datos son la suma de las variables originales mas las variables transformadas. (total 37)

iso_code                                   object
continent                                  object
location                                   object
date                               datetime64[ns]
total_cases                               float64
new_cases                                 float64
total_deaths                              float64
new_deaths                                float64
total_cases_per_million                   float64
new_cases_per_million                     float64
total_deaths_per_million                  float64
new_deaths_per_million                    float64
new_tests                                 float64
total_tests                               float64
total_tests_per_thousand                  float64
new_tests_per_thousand                    float64
new_tests_smoothed                        float64
new_tests_smoothed_per_thousand           float64
tests_per_case                            float64
positive_rate                             float64
tests_units                                object
stringency_index                          float64
population                                float64
population_density                        float64
median_age                                float64
aged_65_older                             float64
aged_70_older                             float64
gdp_per_capita                            float64
extreme_poverty                           float64
cardiovasc_death_rate                     float64
diabetes_prevalence                       float64
female_smokers                            float64
male_smokers                              float64
handwashing_facilities                    float64
hospital_beds_per_thousand                float64
life_expectancy                           float64
fatality_rate                             float64
mortality_rate                            float64
total_test_per_million                    float64
new_tests_per_million                     float64
total_cases_2                             float64
fatality_rate_2                           float64

Estadística tradicional

Comencemos repasando como se hacía el análisis  estadístico tradicional, con técnicas muy utilizadas en el pasado.  ¿ Cual es la limitación ?,  El ser humano,  de forma tradicional analiza las cosas en dos dimensiones. Vamos a traer un ejemplo donde vamos a usar el total  de casos de covid19 por cada país y el Indice de letalidad.  Recordemos que el Indice de letalidad ( fatality rate) es el resultado de dividir el total de muertes entre el total de afectados por la enfermedad,   multiplicado por 100  .  Si tratamos de clasificar a los países , utilizando únicamente esas dos variables,  incluso con sólo dos  vamos a tener mucho trabajo.  (ver gráfico siguiente )

Tratemos de analizar estas tendencias:

En algunos países,  da la impresión,  que lograron disminuir las muertes mientras aumentaban los casos (un gráfico en forma de X)  en otros conforme aumentan los casos  subían las muertes ( un gráfico en forma de ola )  y otros en los que lograron disminuir ambas variables (gráfico en forma de una C,)   etcétera,   Sin embargo para conocer ¿ Que países están perdiendo la guerra contra el COVID19 ? estaríamos haciendo un análisis donde estamos incluyendo  las tendencias sin considerar las escalas y con apenas sólo dos variables.

 

Después de tratar de analizar el desempeño de los países ante la pandemia utilizando estas dos variables encontramos que la limitación de los métodos estadísticos tradicionales es grande y por tanto hay una dificultad para poder concluir algo.

Por esta razón,  vamos a utilizar las técnicas de Machine Learning ( Inteligencia Artificial) .  En este caso en particular usaremos un viejo conocido:  el algoritmo Kmeans ( k-means o k-medios) que es paarte del los Algoritmos de Aprendizaje NO supervisado.  En el esquema a continuación podemos ver dónde se ubican estos algoritmos.

Los tipos de aprendizaje automático clásico

Los tipos de aprendizaje automático clásico

Veamoslo en detalle:

– Algoritmo K-means  (k-medias)

Algoritmos no supervisados – K-means (k-medios) se utiliza para AGRUPAR conjuntos de cosas.

Objetivo: “Dividir  objetos en función de características desconocidas.  Consideremos que la máquina las agrupará  de una forma,a insospechada, que no es al azar, el algoritmo busca relaciones ocultas en los datos para formar los grupos y el ejercicio consiste en ver porque quedaron conformados de esa forma.

Hoy en día utilizamos  K-means  para :

  •  Segmentación del mercado (tipos de clientes, fidelización).
  • Cuando buscamos unir puntos cercanos en un mapa.
  • En técnicas de compresión de imágenes.
  • Analizar y etiquetar nuevos datos.
  • Para detectar comportamientos anormales.

También hay otros algoritmos de este tipo:  Mean-Shift , y DBSCAN  (agrupación por densidad)  y la agrupación jerárquica.

La agrupación en clúster es una clasificación sin clases predefinidas. Es como dividir calcetines por colores  cuando usted no sabe cuantos colores diferentes tiene.   

 

Un excelente ejemplo de agrupamiento – son los marcadores en mapas web. Cuando estás buscando todos los restaurantes veganos alrededor, el motor de agrupación los agrupa para formar manchas con un número. De lo contrario, los navegadores no podrían seleccionar  los muchos  restaurantes veganos en una ciudad.

Las fotos de Apple y las de Google usan un agrupamiento más complejo.  Si está buscando caras en las fotos para crear álbumes de sus amigos, es posible  que su  aplicación no sepa cuántos amigos tienes y cómo se ven, pero está tratando de encontrar las características faciales comunes. A ese otro tipo de agrupación le llamamos Agrupación típica.

Los algoritmos de agrupación ó en clúster intentarán  encontrar objetos similares (según algunas características) y fusionarlos en un grupo.  Los que tienen muchas características similares se unen en una clase.

En el caso del algoritmo K-means, usamos una herramienta que es la llamada «curva del codo» la cual nos orienta sobre el número «ideal» de grupos que debemos indicarle al algoritmo que utilice.

 

Veamos la curva del codo en nuestro caso:  ( la forma del codo  podría estar en un valor entre 3 y 4 grupos.)

Curva del hombro K-means

Método de la curva del hombro para el algoritmo K-means

Podríamos comenzar con un análisis preliminar

El coeficiente de correlación lineal de Pearson:

Antes de aplicar Algoritmos no supervisados – K-means (k-medios) ,  hacemos un análisis de correlación entre las variables para conocer cuales están mas  relacionadas unas con otras.  El coeficiente de correlación de Pearson varía entre -1 y 1 cuando el coeficiente se acerca al 1 indica que la relación es mayor ya sea directa o inversamente proporcional,  ya sea si se acerca a  +1 o al -1 .  Cuando el coeficiente tiende a 0 no hay relación.  El gráfico de color (heatmap) favorece el análisis visual ya que  aquellas variables con los colores mas claros están mas relacionadas y las más oscuras menos relacionadas.  Los cruces de la misma variable contra si misma aparecen en color amarillo por razones obvias.

Coeficiente de correlación lineal de Pearson

Con las variables mas  representativas : total de casos, total de muertes y total de pruebas obtenemos una primera aproximación de los clúster o grupos.  Acá tuve una limitación y es el hecho de que hay países que no reportaron muertes o pruebas en algunos días lo que invalida su clasificación (lo que llamamos valores: NaN)

Siempre vamos a tener la tendencia a decir que se agruparon porque tenían mas casos,  o porque tenían mas cantidad de muertes, etc. cuando en realidad los algoritmos no supervisados «agrupan » las cosas de acuerdo a relaciones «ocultas» que uno a veces se limita a describir ,no  a  entender.

En el  análisis estadístico tradicional,  Nosotros agrupamos las cosas basados en una o dos variables   (pacientes por sexo, pacientes por edad, pacientes que sufren de una determinada enfermedad, etc.) en este caso se agrupan considerando TODAS las variables a la vez.

a.) Analisis con el algoritmo K-means

como lo mencionamos dentro de los Algoritmos no supervisados – se encuentra K-means (k-medios) , con realidad es un método de agrupamiento, que tiene como objetivo agrupar  un conjunto de datos en k grupos en el que cada observación del grupo pertenece esta cercano al valor medio del grupo.

La agrupación del conjunto de datos puede ilustrarse en una partición del espacio de datos en celdas de Voronoi.

El problema es computacionalmente difícil (NP-hard). Sin embargo, hay metodologías heurísticas que se emplean comúnmente y convergen rápidamente en un óptimo similar, gracias a un refinamiento iterativo.

En nuestro caso, ambos  algoritmo agruparán los países   de acuerdo a un análisis complejo que incluye todas las variables al mismo tiempo y en un umero de grupos reducido.   Es un análisis «multi dimensional», que NO se entienda que se agrupan al azar, definitivamente hay una relación clara entre los miembros de cada grupo.  A veces lo difícil es encontrarla.

En el cuadro a continuación vamos a utilizar sólo 6 variables, y acá incluso todavía  es posible descubrir estos comportamientos y agrupar los países,  y  poder concluir  cómo están enfrentando los países el Covid19 ¿ Cómo ha sido el manejo ?:

RESULTADOS

Ahora veamos los resultados.

Quiero reiterar que siempre tenemos la tendencia de tratar de explicar porque el algoritmo agrupó los datos de  una forma o de otra.   Hay elementos que podrían resultar muy obvios y son los que yo describo, pero sin duda van a encontrar otros que son inexplicables porque esta inmersos en ese fenomeno de la multidimensionalidad.

a.) el clúster o grupo 1  tiene los países que tienen un número muy alto de casos por millón,  no tienen tampoco el número mas alto  de muertes, aunque tienen el número mas bajo de pruebas por mil habitantes .  Sin duda incluye países que han enfrentado la pandemia en condiciones difíciles . Podríamos decir que  no son ni los mas buenos pero tampoco los mas malos. En este grupo están muchos de los países que han sufrido mas el impacto de la Pandemia como UK, España  y el Perú .  En nuestro ranking de 4 están en el número 2.  Los países que el algoritmo clasificó en éste grupo son:

'Afghanistan', 'Algeria', 'Angola', 'Argentina', 'Australia', 'Cameroon', 'Canada', 'Colombia', "Cote d'Ivoire", 'France', 'Ghana', 'Iraq', 'Italy', 'Kenya', 'Madagascar', 'Malaysia', 'Morocco', 'Mozambique', 'Myanmar', 'Nepal', 'Niger', 'Peru', 'Poland', 'Saudi Arabia', 'South Africa', 'South Korea', 'Spain', 'Sudan', 'Taiwan', 'Tanzania', 'Thailand', 'Uganda', 'Ukraine', 'United Kingdom', 'Uzbekistan', 'Venezuela', 'Yemen'

b.) el clúster o grupo 2 son los que tienen el tercer lugar en el número de casos, el primer lugar en numero de pruebas , y el segundo lugar en número de muertes.  En este grupo está el numero mas grande de países (incluyendo a Costa Rica) .  En esta clasificación no explica muchos de los países que están en este grupo.  El grupo de países en este grupo son:

'Albania', 'Andorra', 'Anguilla', 'Antigua and Barbuda', 'Armenia', 'Aruba', 'Austria', 'Azerbaijan', 'Bahamas', 'Bahrain', 'Barbados', 'Belarus', 'Belgium', 'Belize', 'Benin', 'Bermuda', 'Bhutan', 'Bolivia', 'Bonaire Sint Eustatius and Saba', 'Bosnia and Herzegovina', 'Botswana', 'British Virgin Islands', 'Brunei', 'Bulgaria', 'Burkina Faso', 'Burundi', 'Cambodia', 'Cape Verde', 'Cayman Islands', 'Central African Republic', 'Chad', 'Chile', 'Comoros', 'Congo', 'Costa Rica', 'Croatia', 'Cuba', 'Curacao', 'Cyprus', 'Czech Republic', 'Denmark', 'Djibouti', 'Dominica', 'Dominican Republic', 'Ecuador', 'El Salvador', 'Equatorial Guinea', 'Eritrea', 'Estonia', 'Faeroe Islands', 'Falkland Islands', 'Fiji', 'Finland', 'French Polynesia', 'Gabon', 'Gambia', 'Georgia', 'Gibraltar', 'Greece', 'Greenland', 'Grenada', 'Guam', 'Guatemala', 'Guernsey', 'Guinea', 'Guinea-Bissau', 'Guyana', 'Haiti', 'Honduras', 'Hong Kong', 'Hungary', 'Iceland', 'International', 'Ireland', 'Isle of Man', 'Israel', 'Jamaica', 'Jersey', 'Jordan', 'Kazakhstan', 'Kosovo', 'Kuwait', 'Kyrgyzstan', 'Laos', 'Latvia', 'Lebanon', 'Lesotho', 'Liberia', 'Libya', 'Liechtenstein', 'Lithuania', 'Luxembourg', 'Macedonia', 'Malawi', 'Maldives', 'Mali', 'Malta', 'Mauritania', 'Mauritius', 'Moldova', 'Monaco', 'Mongolia', 'Montenegro', 'Montserrat', 'Namibia', 'Netherlands', 'New Caledonia', 'New Zealand', 'Nicaragua', 'Northern Mariana Islands', 'Norway', 'Oman', 'Palestine', 'Panama', 'Papua New Guinea', 'Paraguay', 'Portugal', 'Puerto Rico', 'Qatar', 'Romania', 'Rwanda', 'Saint Kitts and Nevis', 'Saint Lucia', 'Saint Vincent and the Grenadines', 'San Marino', 'Sao Tome and Principe', 'Senegal', 'Serbia', 'Seychelles', 'Sierra Leone', 'Singapore', 'Sint Maarten (Dutch part)', 'Slovakia', 'Slovenia', 'Somalia', 'South Sudan', 'Sri Lanka', 'Suriname', 'Swaziland', 'Sweden', 'Switzerland', 'Syria', 'Tajikistan', 'Timor', 'Togo', 'Trinidad and Tobago', 'Tunisia', 'Turks and Caicos Islands', 'United Arab Emirates', 'United States Virgin Islands', 'Uruguay', 'Vatican', 'Western Sahara', 'Zambia', 'Zimbabwe'.

c.) el clúster o grupo 3 son los que tienen el número mas alto de casos, el número mas alto de muertes y el número mas bajo de camas hospitalarias . Es posible que estén en este grupo los países con sistemas de salud  que han atendido de peor forma la Pandemia.  En este grupo se encuentran:

'Brazil', 'Indonesia', 'Nigeria', 'Pakistan', 'United States'

d.) el clúster o grupo 4 son los que tienen el número de casos promedio por millón mas bajo , la proporción de muertes mas baja,  han hecho un número de pruebas bastante alto y hospitalariamente son los mas preparados.   Es posible que estén en este grupo, estén  los países con sistemas de salud  fuertes.  Los países en este grupo son:

['Bangladesh', 'Democratic Republic of Congo', 'Egypt', 'Ethiopia', 'Germany', 'Iran', 'Japan', 'Mexico', 'Philippines', 'Russia', 'Turkey', 'Vietnam']

Habría que analizar con mas detalle porque el algoritmo metió en este grupo a México y a Bangladés e Irán  que ha tenido problemas de atención de la Pandemia bastante importantes.

Concluida esta primera parte debemos seguir las metodología de Machine Learning, ya que  siempre es aconsejable utilizar al menos dos algoritmos diferentes sobre el mismo «conjunto o set de datos, por ello vamos a usar el :

b.) Análisis con agrupamiento jerárquico

En minería de datos, el agrupamiento jerárquico es un método de análisis de grupos puntuales, el cual busca construir una jerarquía de grupos. La Estrategia para el agrupamiento jerárquico puede ser de dos tipos:

  • Aglomerativas: Este es un acercamiento ascendente: cada observación comienza en su propio grupo, y los pares de grupos son mezclados mientras uno sube en la jerarquía. (éste es el que vamos a utilizar en este caso)
  • Divisivas: Este es un acercamiento descendente: todas las observaciones comienzan en un grupo, y se realizan divisiones mientras uno baja en la jerarquía.

En general, las mezclas y divisiones son determinadas con un Algoritmo voraz. Los resultados del agrupamiento jerárquico son usualmente presentados en un dendrograma.

Es muy interesante observar que ambos algoritmos arrojaron similar conformación de los grupos.

Con el propósito de que los mas entusiastas puedan seguir paso a paso el análisis realizado,  he querido incluir en este post el código completo en Python que he escrito para poder hacer éste análisis.

* el presente artículo sobre Algoritmos no supervisados – K-means (k-medios)  fue escrito por el Dr. Juan I. Barrios es médico especialista en Informática médica, es máster en Business Intelligence y experto en BIG DATA y Ciencia de datos en salud . Su trabajo consiste la aplicación de modelos de de Inteligencia artificial en salud. Reside en la ciudad de Barcelona, donde colabora en la cátedra de Informática Médica de la Universidad de Barcelona, como profesor visitante.

 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

HTML Snippets Powered By : XYZScripts.com