El mapeo entre dos conjuntos de resultados es fácil de calcular, porque la información que obtiene en una prueba se puede representar como un conjunto de tres tuplas: el primer componente es un punto (multidimensional), el segundo es una etiqueta de clúster (arbitraria) suministrado por su algoritmo, y el tercero es una etiqueta de clúster (arbitraria) suministrada por un algoritmo de referencia. Construye la por kkktabla de clasificación para los pares de etiquetas: si los resultados están de acuerdo, será un múltiplo de una matriz de permutación. Es decir, cada fila y cada columna deben tener exactamente una celda distinta de cero. Esa es una simple verificación para programar. También es sencillo rastrear pequeñas desviaciones de este ideal hasta puntos de datos individuales para que pueda ver con precisión cómo difieren las dos respuestas si es que difieren en absoluto. No me molestaría en calcular medidas estadísticas de acuerdo: o hay un acuerdo perfecto (hasta la permutación) o no lo hay, y en este último caso necesita rastrear todos los puntos de desacuerdo para comprender cómo ocurren. Los resultados están de acuerdo o no; cualquier desacuerdo, incluso en un solo punto, necesita revisión.
Es posible que desee utilizar varios tipos de conjuntos de datos para las pruebas: (1) conjuntos de datos publicados con resultados de k-means publicados; (2) conjuntos de datos sintéticos con grupos evidentes y fuertes; (3) conjuntos de datos sintéticos sin agrupamiento obvio. (1) es una buena disciplina para usar cada vez que escribe un programa de matemáticas o estadísticas. (2) es fácil de hacer de muchas maneras, como generar algunos puntos aleatorios para que sirvan como centros de grupos y luego generar nubes de puntos al desplazar aleatoriamente los centros de grupos de cantidades relativamente pequeñas. (3) proporciona algunas comprobaciones aleatorias que pueden descubrir comportamientos inesperados; de nuevo, esa es una buena disciplina de prueba general.
Además, considere crear conjuntos de datos que enfaticen el algoritmo al ubicarse solo en los límites entre soluciones extremas. Esto requerirá creatividad y una comprensión profunda de su algoritmo (¡lo que presumiblemente tiene!). Un ejemplo que me gustaría comprobar en cualquier caso sería conjuntos de vectores de la forma donde v es un vector con componentes no cero y i toma valores secuenciales integrales 0 , 1 , 2 , ... , n - 1 . También me gustaría verificar el algoritmo en conjuntos de vectores que forman polígonos equiláteros. En cualquier situación, casos donde n no esyo vvyo0 , 1 , 2 , … , n - 1norteun múltiplo de es particularmente interesante, incluso cuando n es menor que k . Lo que es común en estas situaciones es que (a) usan todas las dimensiones del problema, pero (b) las soluciones correctas son geométricamente obvias, y (c) existen múltiples soluciones correctas.knortek
re≥ 2tuv2 dXzXz
w = z -( z ⋅ x ) x .
ywXyXyrenortecos( 2 πk / n ) x + pecado( 2 πk / n ) yk0 0n - 1