Che cos’è la varietà differenziabile: il caso ISOMAP?
Autore: Matteo Alberti at Deep Learning Italia
Che cos’è la varietà differenziabile: il caso ISOMAP?
Autore: Matteo Alberti at Deep Learning Italia
INTRODUZIONE
In questo tutorial, parliamo di metodi di riduzione della dimensionalità basati su una struttura matematica chiamata varietà differenziabile (Manifold).
Andiamo dunque a capire che cosa sia una varietà differenziabile, quando risulta utile e come applicarlo senza però entrare nel dettaglio sulla struttura e sulle proprietà matematiche.
Manifold non è altro che uno spazio matematico dove localmente viene a ricrearsi uno spazio euclideo (di una specifica dimensione) ma non a livello globale
Quindi quando e come andremo ad applicare questa serie di metodi? La risposta è semplice: Quando i metodi lineari falliscono
SVOLGIMENTO
Metodi basati sulla varietà differenziabile contrariamente ci riescono. I principali sono:
- ISOMAP
- Local Linear Embedding (LLE)
Vogliamo ricordare che il nostro obiettivo è “preservare la geometria locale”
ISOMAP
L’algoritmo si compone di tre fasi:
- Determinare il numero di vicini (neighbors) sul manifold (basandola sulle distanze Euclidea)
Per ogni punto andremo a mappare i vicini (determinati in base al numero di vicini fissato come nell’algoritmo K-NN o in base ad un raggio fissato).

- In questo step andremo a stimare la Geodetica. Andremo dunque a calcolare la distanza di ogni coppia di punti ma non lavorando in uno spazio Euclideo.
- In questo ultimo step andremo ad applicare una MDS (multidimensional scaling) alla matrice di distanze della geodetica al fine di ricostruirlo in uno spazio Euclideo che manterrà la stessa struttura geometrica.
IMPLEMENTAZIONE PYTHON:
Prima di tutto importiamo i pacchetti necessari di scikit-learn
import numpy as np
import matplotlib.pyplot as plt
from sklearn import manifold
DATA= manifold.Isomap(n_neighbors=N, n_components=C, eigen_solver=’auto’, tol=0, max_iter=None, path_method=’auto’, neighbors_algorithm=’auto’, n_jobs=1)
Andiamo ad analizzare i parametri principali:
- n_ neighbors= Numero intero, corrisponde al numero di vicini
- n_ components= Numero intero, generalmente impostato di default su 2. Corrisponde al numero di coordinate nello spazio del Manifold
Se vogliamo andare a stampare un grafico con i relativi tempi di esecuzione:
from time import time
t0=time()
ISOMAP_DATA= manifold.Isomap(n_neighbors, n_components=2).fit_transform(OUR_DATA)
t1=time()
print("%s: %.2g sec" % ('ISO' t1-t0))
plot.embedding(ISOMAP_DATA, "ISOMAP ottenuto in " % (t1-t0)
plot.show()
Facciamo due ultime considerazioni di utilizzo pratico:
ISOMAP risulta esser uno strumento di riduzione molto efficace che ci permette di bypassare molti problemi legati alla linearità ma, a discapito di alcuni fattori, in particolare:
- Sensibilità agli outliers
- Parametri liberi
Inoltre, ISOMAP è altamente consigliato quando abbiamo già qualche idea sulla struttura dei dati anche perché rispetto ad altri metodi lineari risulta computazionalmente più intensivo.
Per maggiori informazioni sull’argomento visita l’articolo completo: https://www.deeplearningitalia.com/metodi-per-la-riduzione-della-dimensionalita-manifold-based-il-caso-isomap/
메타데이터
- post_id
- efe7741dd4d5
- slug
- che-cosè-la-varietà-differenziabile-il-caso-isomap-efe7741dd4d5
- url
- https://medium.com/@deeplearningitalia/che-cos%C3%A8-la-variet%C3%A0-differenziabile-il-caso-isomap-efe7741dd4d5
- canonical_url
- https://medium.com/@deeplearningitalia/che-cos%C3%A8-la-variet%C3%A0-differenziabile-il-caso-isomap-efe7741dd4d5
- author_url
- https://medium.com/@deeplearningitalia
- status
- ok
- fetched_at
- 2026-07-27 18:46:49