Modelos no supervisados en salud: clusterizando células

Tengo una debilidad por los métodos no supervisados. Me parecen los más próximos a la esencia de la investigación científica. Son los que verdaderamente se adentran en el misterio de los datos, buscando regularidades ocultas, sin ninguna idea preconcebida. No siempre dan respuesta, pero cuando la ofrecen suele ser muy satisfactoria.

En este post vamos a habar de diferentes técnicas de aprendizaje no supervisado. Se utilizan para realizar un análisis clúster de los datos o bien para realizar visualizaciones de datasets de elevadas dimensiones. El análisis clúster busca encontrar subgrupos homogéneos dentro del conjunto  de datos mientras que las técnicas de reducción de la dimensionalidad nos permiten transformar el número de variables del conjunto original a un subconjunto más pequeño con la menor perdida de información.

Ilustraremos las técnicas con el conjunto de datos Breast Cancer Winscosin Data Set. Está formado por 569 observaciones con 30 variables de tipo real. El conjunto de datos no presenta valores nulos.

Las variables se calculan a partir de una imagen digitalizada de un aspirado con aguja fina (FNA) de una masa mamaria. Describen las características de los núcleos celulares presentes en la imagen.

Las variables son las siguientes:

  • Radio
  • Textura
  • Perímetro
  • Área
  • Suavidad
  • Compacidad
  • Concavidad
  • Puntos cóncavos
  • Simetría
  • Dimensión fractal

El conjunto de datos está formado por la media, el error estándar y el peor de los valores de las variables para cada una de las imágenes.

El conjunto de datos contiene 212 observaciones clasificadas como malignas y 357 observaciones clasificadas como benignas.

Vamos aplicar distintos algoritmos no supervisados al dataset. Dado que conocemos la clase a la que pertenece cada observación, podremos evaluar que eficaz es el algoritmo estableciendo los clúster. La implementación la realizaremos en Python, utilizando la librería sckit-learn.

Agrupamiento jerárquico

El agrupamiento jerárquico (hierarchical clustering) consiste en establecer una jerarquía de particiones o clústeres en el conjunto de datos. Hay dos enfoques para el agrupamiento jerárquico:

  • Aglomerativo (AHC): parte de una fragmentación total de los datos y fusiona los datos progresivamente hasta que se obtiene un solo grupo. Aplica una estrategia bottom-up. Hablaremos de clustering o agrupamiento.
  • Divisivo (DHC): parte de un único grupo y los divide de forma recursiva hasta conseguir un grupo para cada dato. Aplica una estrategia top-dowon. Hablaremos de segmentación.

El principal inconveniente de este tipo de algoritmos es que no es capaz de determinar el número de grupos a generar. Es necesario determinarlo previamente o fijar un criterio de parada en el proceso de construcción jerarquica.

Se suele utilizar un diagrama denominado dendograma para representar las agrupaciones sucesivas que genera el algoritmo.

Una de las ventajas de los algoritmos jerárquicos es que nos ofrecen diferentes niveles de agrupamiento lo que en ocasiones suele ser tan interesante cómo conocer el agrupamiento definitivo.

Se requiere establecer la métrica de distancia que se utilizará y el criterio de enlace para medir la distancia entro los grupos que contienen más de una observación. Estos factores afectan al resultado final y deben explorarse para cada dataset.

El procedimiento básico del clustering jerárquico aglomerativo es el siguiente:

  1. Cada observación se inicializa como un clúster.
  2. En cada paso los dos clústeres más próximos se fusionan  (métrica de distancia y criterio de enlace).
  3. Se continua hasta todas las observaciones se agrupen en único clúster.

A modo de ejemplo aplicaremos un clustering jerárquico aglomerativo a nuestras observaciones de tejidos celulares. El dendograma resultante es:

Dendograma

Si extraemos los clúster a una distancia de 20 se obtienen 4 clúster con la siguiente distribución de tejidos malignos y benignos:

tipo_tejido    0    1

cluster

1              2    0

2              5    2

3            165   12

4             40  343

Se observa que el 93% de las observaciones agrupadas en el clúster 3 son malignas  y el 89% de las observaciones agrupadas en el clúster 4 son benignas. Considerando sólo los clúster 3 y 4 que aglutinan la mayoría de las observaciones obtendríamos una exactitud en la segmentación del 89%.

t-SNE

t-SNE (t-distribuited stochastic neighbor embedding) es un método no supervisado para visualización. Reduce observaciones n-dimensionales (n variables) a un espacio de 2 dimensiones para facilitar la observación. Por ejemplo, nuestro conjunto de datos está formado por 30 variables, lo que hace imposible su representación gráfica. Con este método podemos transformar las observaciones a un espacio de dos dimensiones para su visualización. t-SNE intenta mantener la distancia entre observaciones lo que lo convierte en una herramienta de gran ayuda para la exploración visual de conjuntos de datos.

Si aplicamos t-SNE a nuestro conjunto de datos obtenemos:

t-SNE

Observamos visualmente que segmenta muy bien los dos tipos de tejidos.

Hay que señalar que las técnicas de reducción de la dimensionalidad no sólo sirven para la representación visual de los datos sino también como técnica de preprocesado antes de aplicar otro algoritmo de aprendizaje.

Si aplicamos el clustering jerárquico después de aplicar t-SNE obtenemos el siguiente dendograma:

Jerárquico tras t-SNE

Si extraemos los dos clúster que existen para una altura de 50 se obtiene la siguiente tabla de contingencia:

tipo_tejido    0    1

cluster             

1            192    8

2             20  349

Lo que representa una exactitud del 95% en la segmentación de los tejidos, superior a la conseguida aplicando el clustering jerárquico directamente a los datos.

k-means

K-means es una segmentación de tipo particional que genera una estructura plana. Consiste en la partición de un conjunto de n observaciones en k grupos en los que cada observación pertenece a aquel grupo cuya distancia es menor. Debemos considerar que el número de grupos debe establecerse antes de ejecutar el algoritmo y que cada grupo viene caracterizado por un punto denominado centroide.

El algoritmo básicamente funciona de la siguiente forma:

  1. Seleciona k centroides iniciales.
  2. Se itera hasta que se cumpla una condición de parada:
    1. Asignar a cada centroide los puntos más próximos.
    1. Recalcular los centroides de los nuevos grupos.

Si aplicamos k-means directamente a nuestras observaciones de tejidos celulares obtenemos:

tipo_tejido    0    1

cluster             

0             36  339

1            176   18

El algoritmo es capaz de segmentar las muestreas de tejido con un 90,5%.

A continuación vamos a evaluar si mejorar nuestro clustering aplicando previamente t-SNE y posteriormente k-means:

tipo_tejido    0    1

cluster             

0             12  329

1            200   28

La exactitud de la segmentación aumenta hasta el 93%.

K-means es un algoritmo muy sensible a los outliers y a las asimetrías en el dataset. Basados en la misma idea existen un gran número de algoritmos que pretenden paliar alguno de estos inconvenientes como: k-medians, k-medioids, fuzzy c-means…

Análisis de componentes principales (PCA)

Es una técnica muy utilizada de  reducción de la dimensionalidad. Se trata de una transformación de datos a un espacio de dimensión menor pero manteniendo la mayor varianza posible del conjunto de datos original. Si consideramos un espacio de dimensión 2 formado por las dos primeras componentes principales se obtiene la siguiente distribución para cada de las clases objetivo:

Análisis de componentes principales

Si aplicamos posteriormente k-mean obtendríamos la siguiente matriz de confusión en su capacidad de segmentar los tejidos:

tipo_tejido    0    1

cluster             

0             37  342

1            175   15

La exactitud sería del 90,9%.

Como ves existen muchas alternativas para el análisis clúster. La elección de la más apropiada dependerá de las características del conjunto de datos original y la capacidad de las mimas para encontrar grupos homogéneos con sentido clínico. Aquí teníamos la ventaja de conocer la agrupación de los tejidos. En un problema real deberíamos analizar las distintas alternativas y buscar dentro de cada clúster que variables  clínicas lo caracterizan. Este tipo de técnicas se utiliza para segmentar grupos de pacientes dentro de una patología y así poder ofrecer un tratamiento diferencial a cada grupo.

Espero que te haya resultado interesante este post sobre métodos no supervisados en análisis y minería de datos en salud.

Si tienes un conjunto de datos de pacientes a  los que crees que se pueda aplicar un análisis clúster y necesitas ayuda no dudes en contactar conmigo.