У меня есть N векторов v размера m . Я могу вычислить корреляцию между двумя векторами следующим образом:
d = correlation(v1,v2)
Я хотел бы найти для каждого вектора v1 вектор пары v2, где значение корреляции выше 0,9. Я не могу вычислить матрицу корреляции, потому что у меня огромное количество векторов (N> 3 миллиона).
Наивный алгоритм выглядит так:
for v1 in vectors:
for v2 in vectors:
if correlation(v1,v2) > 0.9:
yield (v1,v2)
break
У вас есть лучший алгоритм, чтобы предложить? Я думаю, что я могу сделать это, используя алгоритм heuristi c, потому что я не хочу максимального значения корреляции, а просто одно из других, где корреляция находится среди порога.