Propagación de afinidad

En estadística y minería de datos, propagación de afinidad (AP) es un algoritmo de clusterización basado en el concepto de «mensajeo» entre puntos de datos.[1]​ A diferencia de algoritmos de clusterización como k-medias o k-medoides, propagación de afinidad no requiere que el número de grupos estén determinados o estimados antes de correr el algoritmo. Al igual que k-medoides, propagación de afinidad encuentra «ejemplares» miembros del conjunto de entrada que son representantes de los grupos.[1]

Algoritmo

editar

Sean   puntos de un conjunto de datos, sin suposiciones hechas sobre su estructura interna, y sea   una función que cuantifica la similitud entre cualesquiera dos puntos, tal que   sii   es más similar a   que a  . Para este ejemplo, el negativo del cuadrado de la distancia de dos puntos fue utilizado, es decir, para puntos   y  ,  [1]

La diagonal de   (es decir,  ) es particularmente importante, ya que representa la preferencia, lo que quiere decir cuan probablemente un dato particular se volverá un ejemplar. Asignando el mismo valor para todas las entradas, se controla cuántas clases produce el algoritmo. Un valor cercano a la mínima similitud posible produce menos clases, mientras que un valor cercano a la máxima similitud posible produce muchas clases. Este valor es típicamente inicializado en la mediana de las similitudes de todos los pares de entradas.

El algoritmo procede alternando entre dos pasos de mensajeo, los cuales actualizan dos matrices:[1]

  • La "matriz" de responsabilidad   tiene valores   que cuantifican cuán conveniente es que   sea el ejemplar de  , relativo a otros candidatos a ejemplar de  .
  • La "matriz" de disponibilidad   contiene valores   que representan cuan «apropiado» sería para   elegir a   como su ejemplar, teniendo en cuenta la preferencia de los otros puntos por   como ejemplar.

Ambas matrices se inician en ceros, y pueden verse como tablas de probabilidad logarítmica. El algoritmo entonces lleva a cabo iterativamente las siguientes actualizaciones:

  • Primero, las actualizaciones de responsabilidad se realizan del siguiente modo:

 

  • Entonces, las disponibilidades se actualizan del siguiente modo:
  para  
 

Las iteraciones se llevan a cabo hasta que las fronteras de grupo quedan sin cambios por un número de iteraciones, o hasta que se alcanza un número predeterminado (de iteraciones). Los ejemplares se extraen de las matrices finales como aquellos cuya essponsibility + disponibilidad' para sí mismos es un número positivo (i.e. ).

Aplicaciones

editar

Los inventores de propagación de afinidad demostraron que es mejor para ciertas tareas de visión de ordenador y de biología computaciona, p. ej. clustering de imágenes de caras humanas e identificación de transcritos regulados, que k-medias, incluso cuando a k-medias se le permitieron múltiples reinicios aleatorios y se inicializó utilizando PCA.[1][2]​ Un estudio que compara propagación de afinidad y Markov clustering en partición de gráficas de interacción de proteínas encontró que Markov clustering funciona mejor para aquel problema.[3]​ Una variante semi-supervisada ha sido propuesta para aplicaciones de minería de textos.[4]​ Otra aplicación reciente fue en economía, cuándo la propagación de afinidad fue usada para encontrar algunos patrones temporales en los multiplicadores de salida de la economía de EE. UU. entre 1997 y 2017.[5]

Software

editar
  • Una implementación en Java se incluye en el framework para minería de datos ELKI.
  • Una implementación de propagación de afinidad de Julia está contenida en el paquete Julia Statistic's Clustering.jl.
  • Una versión de Python es parte de la librería scikit-aprender.
  • Una implementación de R está disponible en el paquete "apcluster».

Referencias

editar
  1. a b c d e Brendan J. Frey; Delbert Dueck (2007). «Clustering by passing messages between data points». Science 315 (5814): 972-976. PMID 17218491. doi:10.1126/science.1136800. 
  2. . Int'l Conf. on Computer Vision. 2007. doi:10.1109/ICCV.2007.4408853. 
  3. James Vlasblom; Shoshana Wodak (2009). «Markov clustering versus affinity propagation for the partitioning of protein interaction graphs». BMC Bioinformatics 10 (1): 99. PMC 2682798. PMID 19331680. doi:10.1186/1471-2105-10-99. 
  4. Renchu Guan; Xiaohu Shi; Maurizio Marchese; Chen Yang; Yanchun Liang (2011). «Text Clustering with Seeds Affinity Propagation». IEEE Transactions on Knowledge & Data Engineering 23 (4): 627-637. doi:10.1109/tkde.2010.144. 
  5. Almeida, Lucas Milanez de Lima; Balanco, Paulo Antonio de Freitas (1 de junio de 2020). «Application of multivariate analysis as complementary instrument in studies about structural changes: An example of the multipliers in the US economy». Structural Change and Economic Dynamics (en inglés) 53: 189-207. ISSN 0954-349X. doi:10.1016/j.strueco.2020.02.006.