Generalnie sprawa jest prosta - chodzi nam o zmniejszenie wymiarowości danych, tak aby zachować pomiędzy nimi odległości. Robimy to tak, że jeśli mamy dane ( wierszy) o wymiarowości , to tworzymy losową macierz o wymiarach , gdzie to docelowa (mniejsza) wymiarowość. Oryginalne dane przemnażamy przez tę macierz i … już.
Powyższe opiera się twierdzeniu Johnson–Lindenstrauss, który wprowadza warunki na to jakie powinno być oraz , żeby z dużym prawdopodobieństwem otrzymać dane o mniejszej wymiarowości, ale zachowujące odległości.