fotografato da Parker Coffmann SU Unsplash

Distribuzioni limitate

Ri dati della vita reale sono spesso delimitati da un determinato dominio. Ad esempio, attributi come età, peso o durata sono sempre valori non negativi. In tali scenari, un KDE standard uniforme potrebbe non riuscire a catturare accuratamente la vera forma della distribuzione, specialmente se c’è una discontinuità di densità al confine.

In 1D, con l’eccezione di alcuni casi esotici, le distribuzioni limitate hanno tipicamente domini limitati su un lato (ad esempio valori positivi) o su due lati (ad esempio intervallo uniforme).

Come illustrato nel grafico seguente, i kernel non sono in grado di stimare i bordi della distribuzione uniforme e fuoriescono dal dominio delimitato.

KDE gaussiano su 100 campioni estratti da una distribuzione uniforme — Immagine dell’autore

Nessuna soluzione pubblica pulita in Python

USfortunatamente, le librerie Python pubbliche più popolari come scipy E scikit-learn al momento non affrontano questo problema. Esistono problemi su GitHub e richieste pull che trattano questo argomento, ma purtroppo sono rimasti irrisolti per un bel po’ di tempo.

Nella R, kde.boundary consente la stima della densità del kernel per dati limitati.

Esistono vari modi per tenere conto della natura limitata della distribuzione. Descriviamo quelli più popolari: Riflessione, Ponderazione e Trasformazione.

Avvertimento:
Per motivi di leggibilità, ci concentreremo sul dominio limitato da unità, vale a dire (0,1). Ricordarsi di standardizzare i dati e ridimensionare la densità in modo appropriato nel caso generale (a,b).

Soluzione: riflessione

TIl trucco consiste nell’aumentare l’insieme dei campioni riflettendoli oltre i confini sinistro e destro. Ciò equivale a riflettere le code dei kernel locali per mantenerli nel dominio delimitato. Funziona meglio quando la derivata della densità è zero al confine.

La tecnica della riflessione implica anche l’elaborazione di un numero di punti campione tre volte superiore.

I grafici seguenti illustrano il trucco della riflessione per tre distribuzioni standard: uniforme, triangolo rettangolo e radice quadrata inversa. Fa un ottimo lavoro nel ridurre la distorsione ai confini, anche per la singolarità della distribuzione della radice quadrata inversa.

KDE su una distribuzione uniforme, utilizzando le riflessioni per gestire i confini— Immagine dell’autore
KDE su una distribuzione triangolare, utilizzando le riflessioni per gestire i confini — Immagine dell’autore
KDE su una distribuzione della radice quadrata inversa, utilizzando le riflessioni per gestire i confini — Immagine dell’autore

NB La firma di basic_kde è stato leggermente aggiornato per consentire di fornire facoltativamente il proprio parametro di larghezza di banda invece di utilizzare la regola empirica di Silverman.

Soluzione: ponderazione

TIl trucco di riflessione presentato sopra prende le code che perdono dal kernel locale e le aggiunge nuovamente al dominio delimitato, in modo che le informazioni non vadano perse. Tuttavia, potremmo anche calcolare quanta parte del nostro kernel locale è andata persa al di fuori del dominio delimitato e sfruttarla per correggere la distorsione.

Per un numero molto elevato di campioni, KDE converge alla convoluzione tra il kernel e la densità reale, troncata dal dominio delimitato.

Se x si trova al confine, verrà effettivamente utilizzata solo metà dell’area del kernel. Intuitivamente, vorremmo normalizzare il nucleo di convoluzione per farlo integrare a 1 sul dominio limitato. L’integrale sarà vicino a 1 al centro dell’intervallo limitato e scenderà a 0,5 vicino ai bordi. Ciò spiega la mancanza di nuclei vicini ai confini.

Analogamente alla tecnica della riflessione, i grafici seguenti illustrano il trucco della ponderazione per tre distribuzioni standard: uniforme, triangolo rettangolo e radice quadrata inversa. Funziona in modo molto simile al metodo di riflessione.

Da un punto di vista computazionale, non è necessario elaborare un numero di campioni 3 volte superiore, ma è necessario valutare la normale funzione di densità cumulativa nei punti di previsione.

KDE su una distribuzione uniforme, applicando peso sui lati per gestire i confini — Immagine dell’autore
KDE su una distribuzione triangolare, applicando peso sui lati per gestire i confini — Immagine dell’autore
KDE su una distribuzione di radice quadrata inversa, applicando peso sui lati per gestire i confini — Immagine dell’autore

Trasformazione

TIl trucco di trasformazione mappa i dati delimitati in uno spazio illimitato, dove KDE può essere applicato in sicurezza. Ciò si traduce nell’utilizzo di una funzione kernel diversa per ciascun campione di input.

La funzione logit sfrutta il logaritmo per mappare l’intervallo unitario (0,1) all’intero asse reale.

Funzione Logit — Immagine dell’autore

Quando si applica una trasformazione f su una variabile casuale Xla densità risultante può essere ottenuta dividendo per il valore assoluto della derivata di f.

Possiamo ora applicarlo al caso speciale della trasformazione logit per recuperare la distribuzione di densità da quella stimata nello spazio logit.

Analogamente alle tecniche di riflessione e ponderazione, i grafici seguenti illustrano il trucco di ponderazione per tre distribuzioni standard: uniforme, triangolo rettangolo e radice quadrata inversa. Si comporta piuttosto male creando grandi oscillazioni ai confini. Tuttavia, gestisce molto bene la singolarità della radice quadrata inversa.

KDE su una distribuzione uniforme, calcolata dopo aver mappato i campioni nello spazio logit — Immagine dell’autore
KDE su una distribuzione triangolare, calcolata dopo aver mappato i campioni nello spazio logit — Immagine dell’autore
KDE su una distribuzione a radice quadrata inversa, calcolata dopo aver mappato i campioni nello spazio logit— Immagine dell’autore

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *