Avons-nous besoin de définir un ensemble de formation et un ensemble de tests pour le clustering?

10

Lorsque nous procédons à la classification et à la régression, nous définissons généralement des ensembles de tests et de formation pour nous aider à créer et à améliorer des modèles.

Cependant, lorsque nous faisons du clustering, devons-nous également définir des ensembles de tests et de formation? Pourquoi?

rz.He
la source
Oui - pour des raisons similaires à la classification / régression. Vous voulez vous assurer que le modèle que vous créez (par exemple, votre tracé du coude indique que k = 3 dans un clustering k-means) est toujours approprié pour les données invisibles.
ilanman
Merci ilanman;) Aussi, avez-vous des recommandations sur la façon de déterminer le nombre réel de clusters lorsque nous faisons des clusters tels que kmeans?
rz.He

Réponses:

6

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=1kj=1nxi(j)cj2

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)))

entrez la description de l'image ici

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.

Haitao Du
la source
Salut hxd1011, merci pour votre réponse rapide. Une autre question, avez-vous des recommandations sur la façon de déterminer le nombre réel de clusters lorsque nous faisons des clusters tels que kmeans?
rz.He
@ rz. Oui, vérifiez cette réponse stats.stackexchange.com/questions/261537/…
Haitao Du
2
+1 parce que c'est une réponse constructive mais pour jouer l'avocat du diable, vous savez qu'il s'agit de 3 clusters. Si quelqu'un montrait ces données sans aucun contexte, une solution à 2 clusters fonctionnerait également très bien. Peut-être que vous avez même certains des points les plus à l'extrême droite en tant que valeurs aberrantes pour jouer aussi aux "données réelles ont des valeurs aberrantes". Il serait beaucoup plus constructif (et rigoureux) d'examiner la cohérence entre les exécutions de clustering bootstrapées / gigue / sous-ensemble en utilisant certaines statistiques (par exemple, corrélation cophénétique, index Rand-Index ajusté, etc.).
usεr11852
Et si vous n'utilisez pas k-means? Disons, un clustering de liens moyen? Je crains que votre réponse ne soit trop adaptée aux k-means .
A QUIT - Anony-Mousse
@ Anony-Mousse: La réponse est particulière à k-means à titre d'exemple mais elle serait qualitativement la même si DBSCAN ou le clustering spectral ou quoi que ce soit d'autre était utilisé. Cela montre simplement qu'une métrique particulière peut être sur-ajustée.
usεr11852
5

Non, cela ne sera généralement pas possible.

Il existe très peu de clusters que vous pourriez utiliser comme un classificateur. Ce n'est qu'avec k-means, PAM etc. que vous pouvez évaluer la "généralisation", mais le clustering est devenu beaucoup plus diversifié (et intéressant) depuis. Et en fait, même l'ancien clustering hiérarchique ne se généralisera pas bien aux «nouvelles» données. Le clustering n'est pas une classification. De nombreuses méthodes de classification ne se transfèrent pas bien au clustering; y compris l'optimisation hyperparamétrique.

Si vous ne disposez que de données partiellement étiquetées, vous pouvez utiliser ces étiquettes pour optimiser les paramètres. Mais le scénario général du clustering sera que vous souhaitez en savoir plus sur votre ensemble de données; vous exécutez plusieurs fois le clustering, étudiez les clusters intéressants (car généralement, certains clusters sont clairement trop petits ou trop grands pour être intéressants!) et notez certaines des informations que vous avez obtenues. Le clustering est un outil pour aider l' humain à explorer un ensemble de données , pas une chose automatique. Mais vous ne "déploierez" pas un clustering. Ils sont trop peu fiables et un seul clustering ne "racontera jamais toute l'histoire".

A QUIT - Anony-Mousse
la source
1
Le regroupement reflète une propriété globale des données et il n'a généralement pas de «vérité fondamentale». Cela étant triste, je ne pense pas que quiconque préconise l'utilisation d'un clustering comme classificateur en première instance; néanmoins, si nous trouvons un regroupement intéressant, il sera stupide de ne pas essayer d'utiliser les résultats en les incorporant dans un processus décisionnel. (Sinon, pourquoi avons-nous regroupé les données pour commencer?)
usεr11852
pour exécuter le clustering, nous avons encore besoin d'un objectif à optimiser. s'il s'agit d'un problème d'optimisation, il peut sur-s'adapter à une seule donnée. En plus de kmeans, de nombreuses autres méthodes nécessitent encore un certain nombre de grappes.
Haitao Du
1
Tous les algorithmes de clustering ne sont pas un problème d'optimisation.
A QUIT - Anony-Mousse
1
Et en ce qui concerne l'utilisation du résultat: vous voulez utiliser les informations, pas le résultat brut. Interprétez le cluster et travaillez avec l' interprétation , car il y aura beaucoup de points mal attribués.
A QUIT - Anony-Mousse
Je soutiens cette réponse, car lorsqu'un nouveau point de données arrive, vous apprenez la représentation, puis le cluster, il n'est donc pas nécessaire de faire le test. Même si vous le divisez, vous perdez les informations sur les données.
Aaditya Ura
1

Non. Vous n'utilisez pas la formation et les tests dans un apprentissage non supervisé. Il n'y a pas de fonction objective dans l'apprentissage non supervisé pour tester les performances de l'algorithme.

S_Dhungel
la source
3
Sans plus de détails, cela n'ajoute pas vraiment à la discussion et aux deux réponses existantes. Pouvez-vous développer cela?
mdewey