Tengo una matriz NxM
y quiero calcular la matriz NxN
de distancias euclidianas entre los puntos M
. En mi problema, N
es de aproximadamente 100,000. Como planeo usar esta matriz para un algoritmo vecino k-más cercano, solo necesito mantener las distancias más pequeñas de k
, por lo que la matriz NxN
resultante es muy escasa. Esto está en contraste con lo que sale de dist()
, por ejemplo, que daría como resultado una matriz densa (y probablemente problemas de almacenamiento para mi tamaño N
).Computing matriz de distancia dispersa por pares en R
Los paquetes para kNN que he encontrado hasta ahora (knnflex
, kknn
, etc.) parecen usar matrices densas. Además, el paquete Matrix
no ofrece una función de distancia pairwise.
Más cerca de mi objetivo, veo que el paquete spam
tiene una función que permite tener en cuenta solo las distancias menores que cierto umbral, delta
. En mi caso, sin embargo, un valor particular de delta
puede producir demasiadas distancias (por lo que tengo que almacenar la matriz NxN
densamente) o muy pocas distancias (de modo que no puedo usar kNN).
He visto comentarios previos sobre intentar realizar k-means clustering utilizando los paquetes bigmemory/biganalytics
, pero no parece que pueda aprovechar estos métodos en este caso.
¿Alguien sabe una función/implementación que calculará una matriz de distancia de forma dispersa en R? Mi (temido) plan de copia de seguridad es tener dos for
bucles y guardar resultados en un objeto Matrix
.
Solo asegúrate de ... Sabes de 'dist' http: // stat. ethz.ch/R-manual/R-patched/library/stats/html/dist.html, ¿verdad? – Benjamin
Lo siento, no tenía claro por qué dist() no es adecuado para mi situación. Resulta en una matriz densa y es un poco molesto almacenar la matriz NxN. –
Probablemente deberías aceptar una de las respuestas aquí que piensas que realmente responde la pregunta (la tuya si crees que se ajusta mejor), o editar tu pregunta para aclarar por qué no. – Tommy