Supposons un groupe de points de données, tels que un tracé ici (ce graphique n'est pas spécifique à mon problème, mais simplement utilisé comme exemple approprié): P>
p>
Inspection visuellement le graphique de dispersion, il est assez évident que les points de données forment deux "groupes", avec des points aléatoires qui n'appartiennent pas évidemment non plus. P>
Je cherche un algorithme, cela me permettrait de: p>
3 Réponses :
Je pense que vous recherchez quelque chose dans le sens d'un K-olds algorithme de clustering a>. p>
Vous devriez être capable de trouver des implémentations adéquates dans la plupart des langues générales. P>
Il existe de nombreux choix, mais si vous êtes intéressé par la probabilité qu'un nouveau point de données appartienne à un mélange particulier, j'utiliserais une approche probabiliste telle que la modélisation du mélange gaussien soit estimée par une probabilité maximale ou des baies. P>
Estimation maximale de vraisemblance de Les modèles de mélanges sont implémentés dans matlab . p>
Votre besoin que le nombre de composants est inconnu rend votre modèle plus complexe. L'approche probabiliste dominante consiste à placer un processus de Dirichlet avant la distribution du mélange et l'estimation par une méthode bayésienne. Par exemple, voir Cet article sur le mélange gaussien infini Modèles . Le modèle de mélange DP vous donnera une inférence sur le nombre de composants et les composants que chaque élément appartient, ce qui correspond exactement à ce que vous voulez. Sinon, vous pouvez effectuer une sélection de modèle sur le nombre de composants, mais cela est généralement moins élégant. P>
Il existe de nombreuses modèles de modèles de mélange DP, mais ils peuvent ne pas être aussi pratiques. Par exemple, voici un Implémentation MATLAB . P>
Votre graphique suggère que vous êtes un utilisateur R. Dans ce cas, si vous recherchez des solutions préemballées, la réponse à votre question se situe sur ce Vue des tâches pour l'analyse de cluster . P>
Vous avez besoin d'un algorithme de clustering. Tous peuvent être dévidés en 2 groupes: P>
Si vous voulez un algorithme du 1er type, alors k-moyen est ce dont vous avez vraiment besoin. P>
Si vous souhaitez algorithme de 2e type, vous avez probablement besoin d'un algorithme de clustering hiérarchique. Je n'en ai jamais implémenté aucun d'entre eux. Mais je vois un moyen facile d'améliorer k-moyens de telle sorte qu'il sera inutile de spécifier le nombre de clusters. p>