FastMap e Multiscaling
Traduzione e Integrazione
delle Lezioni a cura di Sandro Gallo
Home BFR e
k-means Birch*
Spesso il clustering in spazi metrici non euclidei è
difficile.
Per ovviare a questo problema si può immergere uno spazio
metrico in uno spazio euclideo in modo da minimizzare la
distorsione. Dati due spazi (X,d), (X,d'), una immersione
è una funzione f:X-->X' e la distorsione è
Dis(f) = Esp(f) * Contr(f) dove

è l'espansione,

è la contrazione.
Le nostre immersioni saranno in spazi euclidei, nonostante non
è possibile immergere tutti gli spazi metrici.
Il multiscaling è un metodo di immersione di uno
spazio metrico in uno euclideo ad alta dimensione n. Immerge in
uno spazio di dimensione k <<n simulando l'alta
dimensionalità. L'algoritmo procede così:
- Metti n punti random in Rk .
- Consideriamo come errore l'energia di un sistema di molle
ciascuna di lunghezza D(x,y) tra x e y. L'energia delle molle
è il quadrato della differenza tra l'attuale lunghezza e
D(x,y).
- Visita ogni punto e cerca di porlo in una posizione che
minimizzi l'energia totale delle molle. Questo implicherà
spostare tutti gli altri punti.
- Procedi così fino a trovare un minimo locale che si
spera sia anche globale.
Il multiscaling quindi costa almeno O(n2). Fastmap risolve
il problema dei costi creando k pseudo-assi che servono a porre
gli n punti nello spazio k-dimensionale in tempo O(nk).
Fastmap sceglie k coppie di punti (ai, bi) come estremi dei k
assi e calcola la proiezione x di ogni altro punto sugli assi
mediante la sola distanza, sfruttando Pitagora. La formula
è la seguente:

Avendo scelto (a,b) come estremi di un asse, parte delle distanze
tra due punti c e d è conteggiata dalla proiezione di c e
d sull'asse ab, e il resto della distanza è nelle altre
dimensioni.
Se le proiezioni di c e d sono x e y, rispettivamente, in futuro
quando scegliamo altri assi la distanza Dcurrent(c,d) dovrebbe
essere collegata alla distanza data tramite 
Fastmap computa per ogni punto c, k proiezioni c1, c2, ..., ck
sui k pseudo-assi che sono determinati dalle coppie (a1, b1),
(a2, b2), ...(ak, bk).
L'algoritmo procede così:
for i = 2, ..., k do:
- Usando Dcurrent scegli ai, bi come segue:
- Sia c random
- ai il più lontano da c secondo Dcurrent
- bi il più lontano da ai e da c
- Per ogni x, calcola xi con Pitagora
- Aggiorna la definizione di Dcurrent secondo la formula

Fastmap nel clustering serve a mappare n punti in k dimensioni in
O(nk), dopodichè si può usare un qualche algoritmo
di clustering su spazi euclidei.
Un ulteriore miglioramento consiste nell'usare lo spazio euclideo
solo per stimare i clustroidi, mentre le distanze vengono
calcolate rispetto allo spazio metrico originale.
Home BFR e
k-means Birch*