¿Necesitamos establecer un conjunto de entrenamiento y un conjunto de pruebas para la agrupación?

10

Cuando hacemos clasificación y regresión, generalmente establecemos conjuntos de pruebas y capacitación para ayudarnos a construir y mejorar modelos.

Sin embargo, cuando hacemos clustering, ¿también necesitamos establecer conjuntos de prueba y entrenamiento? ¿Por qué?

rz.He
fuente
Sí, por razones similares a la clasificación / regresión. Desea asegurarse de que cualquier modelo que cree (digamos que su diagrama de codo indica que k = 3 en una agrupación de k-medias) sigue siendo apropiado para datos invisibles.
ilanman
Gracias ilanman;) Además, ¿tiene alguna recomendación sobre cómo determinar el número real de clústeres cuando hacemos agrupaciones como kmeans?
rz.He

Respuestas:

6

Sí, porque la agrupación también puede sufrir un problema de sobreajuste. Por ejemplo, aumentar el número de clústeres siempre "aumentará el rendimiento".

Aquí hay una demostración que usa la agrupación de K-Means:

La función objetivo de K-means es (los detalles de notación se pueden encontrar aquí )

J=i=1kj=1nxi(j)cj2

Con tal objetivo, la inferior significa "mejor" modelo.J

Supongamos que tenemos los siguientes datos (datos del iris), elegir el número de clúster como siempre será "mejor" que elegir el número de clúster como . Luego, elegir grupos será mejor que grupos. Podemos continuar en esta pista y terminar con un costo : simplemente haga que el número del grupo sea igual al número de puntos de datos y coloque todo el centro del grupo en los puntos correspondientes.4354J=0

d=iris[,c(3,4)]

res4=kmeans(d, 4,nstart=20)
res3=kmeans(d, 3,nstart=20)


par(mfrow=c(1,2))
plot(d,col=factor(res4$cluster),
		 main=paste("4 clusters J=",round(res4$tot.withinss,4)))
plot(d,col=factor(res3$cluster),
		 main=paste("3 clusters J=",round(res3$tot.withinss,4)))

ingrese la descripción de la imagen aquí

Si tenemos datos retenidos para las pruebas, nos evitará un ajuste excesivo. El mismo ejemplo, supongamos que estamos eligiendo grupos de números grandes y colocamos cada centro de grupo en los puntos de datos de entrenamiento. El error de prueba será grande, porque los puntos de datos de prueba no se superpondrán con los datos de entrenamiento.

Haitao Du
fuente
Hola hxd1011, gracias por su rápida respuesta. Otra pregunta, ¿tiene alguna recomendación sobre cómo determinar el número real de clústeres cuando hacemos agrupaciones como kmeans?
rz.He
@ rz. Sí, verifique esta respuesta stats.stackexchange.com/questions/261537/…
Haitao Du
2
+1 porque es una respuesta constructiva, pero para jugar al defensor del diablo sabes que son 3 grupos. Si alguien mostrara estos datos sin ningún contexto, una solución de 2 clústeres también funcionaría maravillosamente. Tal vez incluso tenga algunos de los puntos superiores más a la derecha como valores atípicos para jugar también a "datos reales que tienen valores atípicos". Sería mucho más constructivo (y estricto) observar la coherencia entre las ejecuciones de agrupación bootstrapped / jittered / subsetted usando alguna estadística (por ejemplo, correlación cophenetic, índice de rand ajustado, etc.).
usεr11852
¿Y si no usas k-means? Digamos, la agrupación promedio de enlaces? Me temo que su respuesta es demasiado adecuada para k-means .
HA SALIDO - Anony-Mousse
@ Anony-Mousse: La respuesta es particular de k-means como ejemplo, pero sería cualitativamente el mismo si DBSCAN o el agrupamiento espectral o cualquier otra cosa se utilizara. Simplemente muestra que una métrica en particular se puede sobreajustar.
usεr11852
5

No, esto generalmente no será posible.

Hay muy pocos agrupamientos que podría usar como un clasificador. Solo con k-means, PAM, etc. podría evaluar la "generalización", pero la agrupación se ha vuelto mucho más diversa (e interesante) desde entonces. Y, de hecho, incluso la antigua agrupación jerárquica no se generalizará bien a los datos "nuevos". La agrupación no es clasificación. Muchos métodos de clasificación no se transfieren bien a la agrupación; incluida la optimización de hiperparámetros.

Si solo ha etiquetado parcialmente los datos, puede usar estas etiquetas para optimizar los parámetros. Pero el escenario general de la agrupación será que desea obtener más información sobre su conjunto de datos; así que ejecuta el agrupamiento varias veces, investiga los grupos interesantes (porque generalmente, algunos grupos claramente son demasiado pequeños o demasiado grandes para ser interesantes) y anota algunas de las ideas que obtuviste. La agrupación en clúster es una herramienta para ayudar al ser humano a explorar un conjunto de datos , no una cosa automática. Pero no "desplegará" una agrupación. Son demasiado poco confiables, y un solo grupo nunca "contará toda la historia".

HA SALIDO - Anony-Mousse
fuente
1
La agrupación refleja una propiedad global de los datos y comúnmente no tiene "verdad fundamental". Lamentando eso, no creo que nadie defienda el uso de un clúster como clasificador en primera instancia; no obstante, si encontramos una agrupación interesante, sería una tontería no intentar utilizar los hallazgos incorporándolos en un proceso de toma de decisiones. (De lo contrario, ¿por qué agrupamos los datos para empezar?)
usεr11852
para ejecutar el agrupamiento, aún necesitamos un objetivo para optimizar. Si se trata de un problema de optimización, puede encajar demasiado en un dato. Además de kmeans, muchos otros métodos aún necesitan varios grupos.
Haitao Du
1
No todos los algoritmos de agrupamiento son un problema de optimización.
HA SALIDO - Anony-Mousse
1
Y en cuanto al uso del resultado: desea utilizar las ideas, no el resultado bruto. Interprete el grupo y trabaje con la interpretación , ya que habrá muchos puntos mal asignados.
HA SALIDO - Anony-Mousse
Apoyo esta respuesta, porque cuando llega un nuevo punto de datos, se aprende la representación y luego se agrupa, por lo que no hay necesidad de la prueba. Incluso si lo está dividiendo, está perdiendo la información de datos.
Aaditya Ura
1

No. No utiliza la capacitación y las pruebas en el aprendizaje no supervisado. No existe una función objetiva en el aprendizaje no supervisado para probar el rendimiento del algoritmo.

S_Dhungel
fuente
3
Sin más detalles, esto realmente no se suma a la discusión y las dos respuestas existentes. ¿Puedes ampliarlo?
mdewey