Hierarchical clustering - a large number of data

Hi community! I´m trying to do a hierarhical cluster analysis, but i have two problems.
1.- The metric that i want to use is the pearson´s metric
2.- The number of rows is very large (the message in the nodes says that only 64000 records can be processed)

I have the next ideas: calculate the distance matrix with a (python or R) script and run the hierarchical cluster node whit that, but the curse of dimensionality remains, Or do the processes with a samle and predict the other cluster labels with another processes.

Whatever! I turn to you for ideas!
I´m sorry for my bad english, is not my native language.

Hi @Carmelo12 and welcome to the KNIME forum!

I just wanted to share a hint with you concerning your problem of doing hierarchical clustering in a very big set. Recently, @chiabell posted a workflow which could be of help in your case. It is a combination of K-means and Hierarchical clustering to cope with big sets of data. K-means does a first level of clustering and a hierarchical clustering on top of it does the rest. Just in case this could help.

With respect to the second problem, is there a reason why you need to specifically use the Pearson’s Metric?

Hope this helps,

Ael

1 Like

Hi @aworker. I did a kmeans analysis, it uses euclidean metric, i need to find behavior patterns in some records of subsurface measurements from different places, it works some times with eucledean metric but it forms gruops according to proximity not behavior. I have been reading, and apparently the pearson metrics works for this

Hi @Carmelo12

I do not know the term “subsurfaces measures”. What is your field of application?
When you say “a large number of data”, how many samples (rows) and how many dimensions (columns) has your data set? Depending on this, I may suggest a solution. Looking forward to helping.

Best

Ael

measure some variables underground, geologics measures, i don´t know how is the name in english, i´m talking about of 290000 rows for 25 columns

Hi @Carmelo12

Thanks for the clarification. I may have a solution for this but first I need to do some tests :wink:

I’ll let you know soon.

Best

Ael

PS: B.t.w. what is you native language ?

1 Like

Sure! Tell me how.
I´m so sorry, my native language is spanish

Hola @Carmelo12

No quisiera decepcionarte, pero me da la impresion de que no se puede calcular con KNIME por “fuerza bruta” la matriz de distancia de tantos puntos. Ten en cuenta que esto te va a generar una matriz de 8.4100e+10 valores.

Para este tipo de calculo de distancias, tendras que pasar por soluciones aproximadas, por ejemplo, te hara falta primero hacer un muestreo de tus datos (por k-means por ejemplo) y calcular el arbol hierarquico a partir de los centroides. Existen otras soluciones que te puedo comentar.

Este tipo de calculo de tal magnitud, lo has hecho antes por otros medios?

Saludos,

Ael

La vez pasada lo hice con knime, pero métrica euclideana. Me generó un temporal enorme que casi lleno el disco duro de mi computadora y tardo una eternidad. Fuera de eso lo he intentado con Python y con R. Pero he tenido el mismo problema.

Esto es algo típico en otras áreas científicas y se resuelve de manera aproximada gracias a una reducción del problema de cálculo por submuestreo aleatorio. Si al final lo que tienes que hacer es clustering (ya sea por un árbol jerárquico o por otro método como K-Means / Kohonen / etc.), lo único que importa es identificar y reagrupar los objetos a distancia próxima, es decir los objetos que conforman un mismo clúster. Calcular todas las distancias entre todos los objetos por “fuerza bruta” es un contrasentido y una pérdida de tiempo, porque al final lo unico que vas a guardar son los pares de distancias de los objetos que estén próximos.
La manera de hacerlo es usando un muestreo aleatorio previo que se aproxime al número de clúster subyacente de tu problema. Por ejemplo, si sabes más o menos que tus objetos debieran estar reagrupados en 1000 clusters, entonces haces un K-Means con aproximadamente 1000 centroides. La solución pasa a menudo por una primera clusterización por K-Means y a partir de este punto, el árbol jerárquico se calcula a partir de los centroides del K-Means.

Evidentemente esto es justo una opción o solución posible entre otras.

Saludos,

Ael

Me parece una estupenda idea. La forma que lo he estado haciendo es tomando la muestra aleatoria mas pequeña a la cual puedo calcularle su matriz de distancias y elaborar el procedimiento con ello, y las demás etiquetas de cluster estimarlas con otro proceso de acuerdo a la similitud de estos. Pero me parece mejor estructurada la tuya. Por cierto, la fijación de calcular para todo el paquete de datos es por parte de mi jefe.
Supongo que hablas de los análisis híbridos. He intentado leer algo acerca de eso desde ayer que me compartiste el workflow. Pero no he tenido tiempo

¡Muchísimas gracias! Me has abierto la mente.

@Carmelo12 me alegro que la proposición te parezca oportuna. En mi especialidad científica (Quimio-informática), aplicamos estas metodologias hibridas muy a menudo con colecciones de moléculas de varios millones de ejemplares y con varias decenas de miles de descriptores. En nuestro caso, una métrica muy utilizada es Tanimoto, porque nuestros descriptores son binarios, pero una versión para valores continuos es la métrica Arco-coseno. Su comportamiento debiera ser muy similar a la métrica por correlación de Pearson. La métrica de Arco-coseno está disponible en KNIME, por si te interesa. Si te hace falta ayuda para implementar esta idea en KNIME, dímelo y te diré como.

Suerte y saludos,

Ael

Me interesa, por lo menos solo como alimento para el cerebro. porque ya implementé la idea

Vale perfecto. De aquí a poco subiré un ejemplo de cómo hacerlo.