Determine diferentes grupos de datos 1d de la base de datos

24

Tengo una tabla de base de datos de transferencias de datos entre diferentes nodos. Esta es una gran base de datos (con casi 40 millones de transferencias). Uno de los atributos es el número de transferencias de bytes (nbytes) que varían de 0 bytes a 2 tera bytes. Me gustaría agrupar los nbytes de modo que, dado k grupos, algunas transferencias x1 pertenezcan al grupo k1, x2 a k2, etc.

Por la terminología que usé, es posible que hayas adivinado a qué me refería: K-means. Estos son datos 1d ya que nbytes es la única característica que me importa. Cuando estaba buscando diferentes métodos para esto, vi que el EM fue mencionado un par de veces junto con un enfoque de no agrupamiento. Me gustaría saber acerca de sus puntos de vista sobre cómo abordar este problema (específicamente si se debe agrupar o no).

¡Gracias!

Shaun
fuente
¿Qué son "transferencias x1", "transferencias x2", etc.? ¿Es el "tipo de transferencia" una segunda variable?
Peter Flom - Restablece a Monica
Las transferencias x1 son solo una forma de decir que estas 500 transferencias tenían un tamaño de transferencia alrededor del valor (esta sería la media para ese grupo en k-means).
Shaun
55
No soy un experto en clustering, pero con tantos datos y solo 1 dimensión, me pregunto si podría hacer algunos gráficos de densidad del kernel usando diferentes anchos de banda y ver cuántos modos / picos encuentra, y si el resultado parece ser Sería útil para usted.
gung - Restablece a Monica
1
Usted preguntó si agruparse o no. ¿Cuál sería su objetivo de la agrupación? ¿Usaría los grupos para algún otro propósito, o es de interés teórico?
Peter Flom - Restablece a Monica
Algunos de los otros atributos de la tabla son nombre de usuario, fechas de inicio y finalización. Espero que al agrupar las transferencias en función del tamaño de la transferencia, pueda referirme a otros atributos de una transferencia en particular para ver quién transfiere cuánto en qué mes del año. Lo que haremos con esta observación, aún no lo sé. Pero eso es a donde voy.
Shaun

Respuestas:

43

En datos unidimensionales, no use análisis de conglomerados.

El análisis de conglomerados suele ser una técnica multivariante. O permítanme decirlo al revés: para los datos unidimensionales, que están completamente ordenados, existen técnicas mucho mejores. El uso de k-means y técnicas similares aquí es un desperdicio total, a menos que haga un esfuerzo suficiente para optimizarlas realmente para el caso 1-d.

Solo para darle un ejemplo: para k significa que es común usar k objetos aleatorios como semillas iniciales. Para los datos unidimensionales, es bastante fácil hacerlo mejor simplemente usando los cuantiles apropiados (1 / 2k, 3 / 2k, 5 / 2k, etc.), después de ordenar los datos una vez , y luego optimizar desde este punto de partida. Sin embargo, los datos 2D no se pueden ordenar por completo. Y en una cuadrícula, probablemente habrá celdas vacías.

Tampoco lo llamaría clúster. Yo lo llamaría intervalo . Lo que realmente quiere hacer es optimizar los bordes del intervalo. Si hace k-means, probará para cada objeto si debe moverse a otro clúster. Eso no tiene sentido en 1D: solo se deben verificar los objetos en los bordes del intervalo. Obviamente, es mucho más rápido, ya que solo hay ~ 2k objetos allí. Si aún no prefieren otros intervalos, los objetos más centrales tampoco lo harán.

Es posible que desee analizar técnicas como la optimización de Jenks Natural Breaks , por ejemplo.

O puede hacer una estimación de densidad del núcleo y buscar mínimos locales de la densidad para dividir allí. ¡Lo bueno es que no necesita especificar k para esto!

PD: utilice la función de búsqueda. Aquí hay algunas preguntas sobre la agrupación de datos 1-d que se perdió:

Anony-Mousse
fuente
Los cuantiles no necesariamente están de acuerdo con los grupos. Una distribución 1d puede tener 3 grupos naturales donde dos contienen el 10% de los datos cada uno y el último contiene el 80% de los datos. Por lo tanto, creo que es posible agrupar aquí, aunque estoy de acuerdo en que tiene sentido optimizar la ejecución recogiendo semillas de forma inteligente, etc. o utilizando otras ideas.
Bitwise
Los cuantiles son probablemente buenos puntos de partida para la optimización , a eso me refería. Y solo para dar un ejemplo de lo que puede hacer en 1D que no funciona tan bien en 2+ dimensiones.
Anony-Mousse
Estoy de acuerdo en que valdría la pena intentar usar cuantiles como semillas, pero aún así intentaría algunas inicializaciones aleatorias (por ejemplo, como la que di). En cualquier caso, el mejor método sería simplemente mirar el gráfico de histograma / densidad y elegir manualmente las semillas y luego optimizarlas con el agrupamiento. Eso convergerá muy rápidamente a una buena solución.
Bitwise
3
Jenks es k-means en 1D.
whuber
1
@whuber, incluso si es matemáticamente, espero que haya sido lo suficientemente inteligente como para explotar que los datos se pueden ordenar . Si usa el enfoque de Lloyd para hacer k-means en datos 1-d, es estúpido, porque está haciendo muchos cálculos que podría omitir. Y para la mayoría de la gente, k-means es Lloyd. Y a algunas personas les importa evitar cálculos innecesarios.
Anony-Mousse
1

¿Es su pregunta si debe agrupar o qué método debe utilizar para agrupar?

En cuanto a si debe agrupar, depende si desea particionar automáticamente sus datos (por ejemplo, si desea repetir esta partición varias veces). Si hace esto solo una vez, puede mirar el histograma de la distribución de sus valores y dividirlo a simple vista, como se propone en los comentarios. De todos modos, recomendaría mirar los datos a simple vista, ya que podría ayudarlo a determinar cuántos clústeres desea y también si el clúster "funcionó".

Con respecto al tipo de agrupación, k-means debería estar bien si hay agrupaciones "reales" en los datos. Si no ve ningún clúster en el histograma, no tiene mucho sentido agruparlo de todos modos, ya que cualquier partición de su rango de datos dará clústeres válidos (o en el caso de iniciación aleatoria de kmeans, obtendrá clústeres diferentes cada carrera).

Bitwise
fuente