Il feature learning è un insieme di tecniche di machine learning volte ad automatizzare il feature engineering, cioè quante e quali feature usare e come parametrizzarle.
Purtroppo i dataset del mondo reale sono caratterizzati da dati sparsi, mancanti, rumorosi e ad alta dimensionalità. Questo rende molto difficile visualizzare i dati e capirne strutture e relazioni, per questo è importante sapere come destreggiarsi.
La soluzione potrebbe sembrare prendere direttamente tutte le feature, ma questo porta ad avere modelli molto complessi e per niente desiderabili.
A volte i dati hanno poche relazioni tra loro, oppure sono troppo pochi e mal distribuiti, in quei casi il feature learning non funziona.
Supponiamo di avere un insieme di B vettori di lunghezza N (il numero di data point), ognuno di questi corrisponde ad una feature. Lo span di questo insieme (che è chiamato spanning set) è l’insieme di tutte le combinazioni lineari ottenute dalle B features.
Il compito di un modello è trovare una combinazione lineare di queste feature in grado di approssimare un vettore o una funzione.
$$ w_0+f_1(x)w_1+...+f_B(x)w_B=y(x) $$
La bontà dell’approssimazione dipende da:
Le feature possono essere non parametrizzate (e quindi simili ad un vettore perché sono solo una funzione dell’input) oppure parametrizzate, in quel caso possono assumere varie forme e hanno una maggiore capacità rappresentativa (che però ha un costo).
Quando uno spanning set ha un rank $M$, allora questo si dice approssimatore universale, perché è in grado di approssimare qualsiasi vettore di dimensione $N\le M$, la stessa cosa vale anche per le funzioni, ma per approssimare una funzione generica con precisione arbitraria è possibile che siano necessarie infinite spanning functions.
Le funzioni usate dagli universal approximators sono generalmente di tre tipi:
Fixed shape
Gli approssimatori fixed shape sono formati da funzioni non lineari non parametrizzate, come polinomi o sinusoidi. Purtroppo visto che non sono parametrizzabili c’è bisogno di usarne tante e per grandi input questo porta a problemi di scalabilità. Sono usati spesso in fisica o per intervalli continui, dove si richiede che il modello sia in grado di approssimare anche per domini che non ha visto prima.
Reti neurali
Una rete neurale è un approssimatore universale costituito da tante funzioni parametrizzate che quindi assumono forme diverse. Le funzioni di Loss per le reti neurali purtroppo non sono convesse quindi è possibile solamente fare un gradient descent. Usate spesso anche queste negli intervalli continui.
Alberi
Gli alberi sono il tipo più semplice, approssimano semplicemente con funzoni a gradino discrete. In genere funzionano per dati cateogorici, tabellari o strutturati dove vogliamo anche un po’ di interpretabilità.
Per scegliere il tipo di funzione in genere si può fare una valutazione sul tipo di dato con cui stiamo lavorando, per le altre caratteristiche invece può essere complicato.