Ho difficoltà a capire la maledizione della dimensionalità. In particolare, mi sono imbattuto in esso mentre facevo il scikit-learn
tutorial in Python. Qualcuno può spiegare quanto segue in un modo più semplice? Mi dispiace, sto cercando di capire da molto tempo e non riesco a capire come sono arrivati al calcolo del numero di esempi di allenamento per ottenere uno stimatore KNN efficiente?
Ecco la spiegazione:
Perché uno stimatore sia efficace, è necessario che la distanza tra i punti vicini sia inferiore a un valore d, che dipende dal problema. In una dimensione, ciò richiede in media n ~ 1 / d punti. Nel contesto del precedente esempio KNN, se i dati sono descritti da una sola funzione con valori compresi tra 0 e 1 e con n osservazioni di addestramento, i nuovi dati non saranno più lontani di 1 / n. Pertanto, la regola di decisione del vicino più vicino sarà efficiente non appena 1 / n sarà piccolo rispetto alla scala delle variazioni delle caratteristiche tra le classi.
Se il numero di funzioni è p, ora sono necessari n ~ 1 / d ^ p punti. Diciamo che abbiamo bisogno di 10 punti in una dimensione: ora sono necessari 10 ^ punti p in dimensioni p per aprire lo spazio [0, 1]. Man mano che p diventa grande, il numero di punti di allenamento richiesti per un buon stimatore aumenta esponenzialmente.
EDIT: anche la tilde ( ~
) dovrebbe rappresentare approssimativa in quell'esempio? o l'operatore python tilde?