Agrupación de datos 1D


16

Tengo un conjunto de datos, quiero crear grupos en esos datos basados ​​en una sola variable (no faltan valores). Quiero crear 3 grupos basados ​​en esa variable.

¿Qué algoritmo de agrupamiento utilizar, k-means, EM, DBSCAN, etc.?

Mi pregunta principal es, ¿en qué circunstancias debo usar k-means sobre EM o EM sobre k-means?


1
El algoritmo EM es una herramienta de propósito general para hacer la estimación de máxima verosimilitud con datos faltantes. ¿Puede ser más específico acerca de cómo es un "algoritmo de agrupamiento"?
Macro

Estoy usando weka como herramienta, y bajo el algoritmo de agrupamiento, EM aparece como un algoritmo. Lamento las preguntas tontas, soy nuevo en la minería de datos.
Ali

Sé que el algoritmo EM se usa para hacer una estimación de máxima probabilidad para los modelos de variables latentes (que pueden considerarse como "datos faltantes") y las variables latentes a menudo se usan para modelar el agrupamiento. Quizás esto es lo que se quiere decir.
Macro

@macro: quizás quieras echar un vistazo aquí: stat.washington.edu/mclust para empezar.
user603

3
¿Cuál es el propósito de la agrupación? Como con la mayoría de las preguntas estadísticas, existen múltiples respuestas y conocer el propósito es una guía esencial para seleccionar las apropiadas o buenas.
whuber

Respuestas:


11

El algoritmo K-means y el algoritmo EM serán bastante similares para la agrupación 1D.

En K-means comienza con una suposición de dónde están las medias y asigna cada punto al grupo con la media más cercana, luego vuelve a calcular los medios (y las variaciones) en función de las asignaciones actuales de puntos, luego actualiza la asignación de puntos, luego actualiza los significados ...

En EM también comenzaría adivinando dónde están las medias, luego calculará el valor esperado de las asignaciones (esencialmente la probabilidad de que cada punto esté en cada grupo), luego actualice las medias estimadas (y las variaciones) usando los valores esperados como pesos, luego calcular nuevos valores esperados, luego calcular nuevos medios, ...

La principal diferencia es que la asignación de puntos a grupos en K-means es un todo o nada, donde EM proporciona proporciones / probabilidad de pertenencia a un grupo (se puede ver que un punto tiene 80% de probabilidad de estar en el grupo A, 18% de probabilidad de estar en el grupo B, y 2% de probabilidad de estar en el grupo C). Si hay mucha separación entre los grupos, entonces los 2 métodos darán resultados bastante similares. Pero si hay una buena cantidad de superposición, entonces el EM probablemente dará resultados más significativos (aún más si la varianza / desviación estándar es de interés). Pero si lo único que le importa es asignar la pertenencia a un grupo sin preocuparse por los parámetros, entonces K-means es probablemente más simple.

¿Por qué no hacer ambas cosas y ver cuán diferentes son las respuestas? si son similares, elija el más simple; si son diferentes, decida comparar la agrupación con los datos y el conocimiento externo.


Gracias Greg, tu publicación ayudó, apliqué ambas y parece que EM generó mejores clústeres que k-mean. (Creo que es principalmente porque los datos que tengo son continuos y no hay vacíos). Estoy un poco confundido, ya que solo tengo datos 1D, entonces probablemente debería hacer binning para clasificar los datos. ¿Qué piensas? ¿Qué quieres decir exactamente con parámetros? ¿Se refiere a los atributos de una instancia? Gracias Ali
Ali

Hm EM solo parece ser insuficiente. Necesita una suposición sobre la distribución de las distribuciones subyacentes de la mezcla.
tomka

2

EM es mejor que k-means en términos de resultados.

K-means, sin embargo, tiene un tiempo de ejecución más rápido.

Producirán resultados similares si las matrices de desviación estándar / covarianza son aproximadamente iguales. Si sospecha que esto es cierto, use k-means.

DBSCAN se usa cuando los datos no son gaussianos. Si está utilizando datos unidimensionales, esto generalmente no es aplicable, ya que una aproximación gaussiana generalmente es válida en 1 dimensión.


0

Otra forma simple es usar básicamente la ordenación de la matriz 1D: es decir, iterar sobre cada punto y obtener los valores que están a una distancia mínima de él en las direcciones positiva y negativa. Por ejemplo:

data = [1,2,3,4,5,6,7,8,9,10,12]
k = 5
for a in data:
   print {'group': sorted(k, key=lambda n: abs(n-a))[0:k], 'point': a}

dará a conocer:

{'group': [1, 2, 3, 4, 5], 'point': 1}
{'group': [2, 1, 3, 4, 5], 'point': 2}
{'group': [3, 2, 4, 1, 5], 'point': 3}
{'group': [4, 3, 5, 2, 6], 'point': 4}
{'group': [5, 4, 6, 3, 7], 'point': 5}
{'group': [6, 5, 7, 4, 8], 'point': 6}
{'group': [7, 6, 8, 5, 9], 'point': 7}
{'group': [8, 7, 9, 6, 10], 'point': 8}
{'group': [9, 8, 10, 7, 6], 'point': 9}
{'group': [10, 9, 8, 12, 7], 'point': 10}
{'group': [12, 10, 9, 8, 7], 'point': 12}

Qué puntos, que los elementos cercanos a un punto en particular están básicamente bajo su grupo. Lo único que debe reflexionar sobre esta técnica es la variable k, que es el tamaño fijo del clúster :-).


-2

Si solo hay una variable, no es necesario agrupar. Puede agrupar fácilmente sus observaciones en función de la distribución de la variable.

¿O me estoy perdiendo algunos puntos aquí?


55
¿Puedes dar un ejemplo específico de cómo agrupar observaciones basadas en la distribución de la variable?
Ali

@ composer314: con un histograma?
nico

1
Lo siento, pero aún no lo sigo. ¿Cómo puedo usar un histograma para agrupar observaciones relacionadas? (Supongo que la pregunta que puedo hacer es realmente ¿cómo se encuentran los grupos dentro de un histograma? ¿Sería esto similar a la selección de picos espectrales?)
Ali

55
@composer Usar el histograma o incluso un núcleo de datos sin problemas no suele ser una forma "fácil" de agrupar. Si desea ir por este camino, debe ajustar un modelo de mezcla finita . Si solo desea lo que puede sugerir una vista informal de un histograma, use K-means (también conocido como método de Jenks , popular entre los cartógrafos).
whuber
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.