2010-01-12 21 views
7

asumir un grupo de puntos de datos, tal como uno trazada aquí (este gráfico no es específico de mi problema, pero sólo se utiliza como un ejemplo adecuado):detección Group en conjuntos de datos

Inspección el gráfico de dispersión visualmente, es bastante obvio que los puntos de datos forman dos 'grupos', con algunos puntos aleatorios que obviamente no pertenecen a ninguno de ellos.

Busco un algoritmo, eso me para permitir:

  • comienzo con un conjunto de datos de dos o más dimensiones.
  • detectar tales grupos del conjunto de datos sin conocimiento previo de cuántos (o si alguno) podría estar allí
  • una vez que se hayan detectado los grupos, 'pregunte' el modelo de grupos, si parece que un nuevo punto de muestra cualquiera de los grupos

Respuesta

5

Hay muchas opciones, pero si le interesa la probabilidad de que un nuevo punto de datos pertenezca a una mezcla en particular, usaría un enfoque probabilístico como el modelado de mezclas gaussianas, ya sea estimado por máxima verosimilitud o Bayes.

Estimación de máxima verosimilitud de mixtures models is implemented in Matlab.

Su requisito de que el número de componentes sea desconocido hace que su modelo sea más complejo. El enfoque probabilístico dominante es colocar un Proceso de Dirichlet antes en la distribución de la mezcla y estimarlo por algún método bayesiano. Por ejemplo, vea this paper on infinite Gaussian mixture models. El modelo de mezcla DP le dará inferencia sobre el número de componentes y los componentes a los que pertenecen cada elemento, que es exactamente lo que usted desea. Alternativamente, puede realizar la selección del modelo en la cantidad de componentes, pero esto generalmente es menos elegante.

Hay muchas implementaciones de modelos de modelos de mezclas DP, pero pueden no ser tan convenientes. Por ejemplo, aquí hay un Matlab implementation.

Su gráfico sugiere que usted es un usuario R. En ese caso, si está buscando soluciones preempaquetadas, la respuesta a su pregunta se encuentra en este Task View for cluster analysis.

2

Necesita uno de los algoritmos de agrupamiento. Todos ellos se puede dividir en 2 grupos:

  1. se especifica el número de grupos (clusters) - 2 grupos en tu ejemplo
  2. algoritmo tratan de adivinar el número correcto de racimos por sí mismo

Si quieres algoritmo de 1er tipo, entonces K-Means es lo que realmente necesitas.

Si desea un algoritmo de 2do tipo, probablemente necesite uno de los algoritmos de agrupamiento jerárquico. No he implementado ninguno de ellos. Pero veo una manera fácil de mejorar los K-means de tal manera que será innecesario especificar la cantidad de clusters.

Cuestiones relacionadas