He estado haciendo un procedimiento similar sobre una base regular últimamente. No es rápido, y toma un pedazo decente de espacio en disco duro si el proceso de un lote de archivos. Como nota, los datos con los que trabajo tiene menos "características", más "usuarios", y puedo usar perl para procesar.
En primer lugar, yo no recomendaría el almacenamiento de los datos juntos como una sola matriz, ya que la mayoría de los programas (R) no será capaz de manejarlo. Si almacena cada usuario como un archivo independiente (.txt o cualquier otro formato funciona mejor para usted), usted puede acceder a ellos individualmente, incluso con R.
Entonces, como un documento nuevo que entra, usted tendrá que hacer de 100.000 comparaciones de cada uno de ellos entre dos vectores de longitud de 10 millones de dólares.
He aquí un ejemplo en R con al azar dos vectores binarios de longitud de 10.000.000.
x=as.numeric(rnorm(10000000)<0)
y=as.numeric(rnorm(10000000)<0)
sim = crossprod(x,y)/sqrt(crossprod(x)*crossprod(y))
[,1]
[1,] 0.4999211
Puesto que los dos vectores en este ejemplo son aleatorios 0,1 vectores, tienen una similitud del coseno de 0.5. Esta semejanza (coseno sim) el cálculo se realizó en menos de un segundo sin mí tratando de optimizar.
A ver cuánto tiempo el proceso, se podía recorrer en este código, a más de 100.000 iteraciones y almacenar cada una similitud de resultados con los resultados vector que contiene todos sus partidos. He probado el código anterior con 1000 iteraciones y que tomó cerca de 70 segundos.
También puede insertar cualquier medida de similitud que usted desea. Sin duda es factible en términos de tiempo de cálculo, pero puede que desee optimizar este si usted necesita más rápido. Espero que esto le da una idea de lo que podría tomar de cómputo.