Oui, car le clustering peut également souffrir d'un problème de sur-ajustement. Par exemple, l'augmentation du nombre de clusters "augmentera toujours les performances".
Voici une démo utilisant le clustering K-Means:
La fonction objective de K-means est (les détails de notation peuvent être trouvés ici )
J=∑i=1k∑j=1n∥x(j)i−cj∥2
Avec un tel objectif, le inférieur signifie un «meilleur» modèle.J
Supposons que nous ayons des données suivantes (données d'iris), choisir le nombre de grappe comme sera toujours "meilleur" que choisir le nombre de grappe comme . Ensuite, choisir clusters sera mieux que clusters. Nous pouvons continuer sur cette piste et nous retrouver avec un coût : il suffit de rendre le numéro du cluster égal au nombre de points de données et de placer tout le centre du cluster sur les points correspondants.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)))
Si nous conservons des données pour les tests, cela nous empêchera de sur-ajuster. Le même exemple, supposons que nous choisissions des clusters à grand nombre et plaçons chaque centre de cluster sur les points de données de formation. L'erreur de test sera importante, car les points de données de test ne chevaucheront pas les données de formation.