Una delicata introduzione alla stima della densità di probabilità

Tweet Condividi Condividi

Ultimo aggiornamento 24 luglio 2020

La densità di probabilità è la relazione tra le osservazioni e il loro probabilità.

Alcuni risultati di una variabile casuale avranno una bassa densità di probabilità e altri risultati avranno un’alta densità di probabilità.

La forma complessiva della densità di probabilità è indicata come probabilità distribuzione e il calcolo delle probabilità per risultati specifici di una variabile casuale viene eseguito da una funzione di densità di probabilità, o PDF in breve.

È utile conoscere la funzione di densità di probabilità per un campione di dati in ordine per sapere se una data osservazione è improbabile, o così improbabile da essere considerata un valore anomalo o un’anomalia e se dovrebbe essere rimossa. È anche utile per scegliere metodi di apprendimento appropriati che richiedono che i dati di input abbiano una distribuzione di probabilità specifica.

È improbabile che la funzione di densità di probabilità per un campione casuale di dati sia nota. In quanto tale, la densità di probabilità deve essere approssimata utilizzando un processo noto come stima della densità di probabilità.

In questo tutorial scoprirai una breve introduzione alla stima della densità di probabilità.

Dopo aver completato questo tutorial, lo saprai:

  • I grafici degli istogrammi forniscono un modo rapido e affidabile per visualizzare la densità di probabilità di un campione di dati.
  • La stima parametrica della densità di probabilità implica la selezione di una distribuzione comune e stimare i parametri per la funzione di densità da un campione di dati.
  • La stima della densità di probabilità non parametrica implica l’utilizzo di una tecnica per adattare un modello alla distribuzione arbitraria dei dati, come la stima della densità del kernel.

Avvia il tuo progetto con il mio nuovo libro Probability for Machine Learning, inclusi tutorial passo passo e file di codice sorgente Python per tutti gli esempi.

Cominciamo.

Un’introduzione delicata n alla stima della densità di probabilità
Foto di Alistair Paterson, alcuni diritti riservati.

Panoramica del tutorial

Questo tutorial è diviso in quattro parti; sono:

  1. Densità di probabilità
  2. Riepiloga la densità con un istogramma
  3. Stima della densità parametrica
  4. Stima della densità non parametrica

Densità di probabilità

Una variabile casuale x ha una distribuzione di probabilità p (x).

La relazione tra i risultati di una variabile casuale e la sua probabilità è indicata come densità di probabilità, o semplicemente “densità”.

Se una variabile casuale è continua, la probabilità può essere calcolata tramite la funzione densità di probabilità, o PDF in breve. La forma della densità di probabilità funzione attraverso il dominio per una variabile casuale è indicata come distribuzione di probabilità e le distribuzioni di probabilità comuni hanno nomi, come uniforme, normale, esponenziale e così via.

Data una variabile casuale, siamo interessati a la densità delle sue probabilità.

Ad esempio, dato un campione casuale di una variabile, potremmo voler conoscere cose come la forma della distribuzione di probabilità bution, il valore più probabile, la diffusione dei valori e altre proprietà.

Conoscere la distribuzione di probabilità per una variabile casuale può aiutare a calcolare i momenti della distribuzione, come la media e la varianza, ma può anche essere utile per altre considerazioni più generali, come determinare se un’osservazione è improbabile o molto improbabile e potrebbe essere un valore anomalo o un’anomalia.

Il problema è che potremmo non conoscere la distribuzione di probabilità per una variabile casuale. Raramente conosciamo la distribuzione perché non abbiamo accesso a tutti i possibili risultati per una variabile casuale. In effetti, tutto ciò a cui abbiamo accesso è un campione di osservazioni. In quanto tale, dobbiamo selezionare una distribuzione di probabilità.

Questo problema è indicato come stima della densità di probabilità, o semplicemente “stima della densità”, poiché utilizziamo le osservazioni in un campione casuale per stimare la densità generale di probabilità al di là del semplice campione di dati che abbiamo a disposizione.

Ci sono alcuni passaggi nel processo di stima della densità per una variabile casuale.

Il primo passo è rivedere la densità di osservazioni nel campione casuale con un istogramma semplice. Dall’istogramma, potremmo essere in grado di identificare una distribuzione di probabilità comune e ben compresa che può essere utilizzata, come una distribuzione normale. In caso contrario, potremmo dover adattare un modello a stimare la distribuzione.

Nelle sezioni seguenti, esamineremo più da vicino ciascuno di questi passaggi a turno.

Ci concentreremo su dati univariati, ad esempio una variabile casuale, in questo post per semplicità, sebbene i passaggi siano applicabili a dati multivariati, possono diventare più impegnativi ng all’aumentare del numero di variabili.

Voglio imparare la probabilità per l’apprendimento automatico

Segui subito il mio corso intensivo di posta elettronica gratuito di 7 giorni (con codice di esempio).

Fai clic per iscriverti e ottenere anche una versione gratuita in formato PDF ebook del corso.

Scarica il tuo mini-corso GRATUITO

Riepiloga densità con un istogramma

Il primo passo nella stima della densità è creare un istogramma delle osservazioni nel campione casuale.

Un istogramma è un grafico che implica innanzitutto il raggruppamento delle osservazioni in contenitori e il conteggio del numero di eventi che cadono in ciascun contenitore. I conteggi o le frequenze delle osservazioni in ciascun bin vengono quindi tracciati come un grafico a barre con i bin sull’asse xe la frequenza sull’asse y.

La scelta del numero di bin è importante in quanto controlla la grossolanità della distribuzione (numero di barre) e, a sua volta, quanto bene viene tracciata la densità delle osservazioni. È una buona idea sperimentare con diverse dimensioni di bin per un dato campione di dati per ottenere più prospettive o viste sugli stessi dati.

È possibile creare un istogramma utilizzando la libreria Matplotlib e la funzione hist (). I dati vengono forniti come primo argomento e il numero di bin viene specificato tramite l’argomento “bins” come numero intero (ad esempio 10) o come sequenza dei confini di ogni bin (ad esempio).

Lo snippet di seguito crea un istogramma con 10 contenitori per un campione di dati.

1
2
3
4

# traccia un istogramma del campione
pyplot.hist (sample, bins = 10)
pyplot.show ()

Possiamo creare un campione casuale tratto da una distribuzione normale e p invia nuovamente non conosciamo la distribuzione, quindi crea un istogramma dei dati. La funzione normale () NumPy raggiungerà questo obiettivo e genereremo 1.000 campioni con una media di 0 e una deviazione standard di 1, ad es. una gaussiana standard.

L’esempio completo è elencato di seguito.

1
2
3
4
5
6
7
8

# esempio di tracciare un istogramma di un campione casuale
da matplotlib import pyplot
da numpy.random import normal
# genera un campione
sample = normal (size = 1000)
# traccia un istogramma del campione
pyplot.hist (sample, bins = 10)
pyplot.show ()

Esecuzione del esempio disegna un campione di osservazioni casuali e crea l’istogramma con 10 bin. Possiamo vedere chiaramente la forma della distribuzione normale.

Tieni presente che i tuoi risultati saranno diversi data la natura casuale del campione di dati. Prova a eseguire l’esempio alcune volte.

Grafico a istogramma con 10 contenitori di un campione di dati casuali

L’esecuzione dell’esempio con bins impostati su 3 rende la distribuzione normale meno ovvia.

Grafico dell’istogramma con 3 contenitori di un campione di dati casuali

Rivedere un istogramma di un campione di dati con un intervallo di numeri diversi di contenitori aiuterà a identificare se la densità appare come una comune distribuzione di probabilità o meno.

Nella maggior parte dei casi, vedrai una distribuzione unimodale, come la familiare forma a campana della normale, la forma piatta dell’uniforme o la forma discendente o ascendente di una distribuzione esponenziale o di Pareto.

Potresti anche vedere distribuzioni complesse, come picchi multipli che non scompaiono con numeri diversi di bin, indicati come distribuzione bimodale, o picchi multipli, indicati come distribuzione multimodale. Potresti anche vedere un grande picco di densità per un dato valore o un piccolo intervallo di valori che indicano valori anomali, che spesso si verificano sulla coda di una distribuzione lontana dal resto della densità.

Stima densità parametrica

La forma di un istogramma della maggior parte dei campioni casuali corrisponderà a una ben nota distribuzione di probabilità.

Le distribuzioni comuni sono comuni perché si verificano ancora e ancora in domini diversi e talvolta inaspettati.

Acquisisci familiarità con le distribuzioni di probabilità comuni poiché ti aiuterà a identificare una data distribuzione da un istogramma.

Una volta identificato, puoi tentare di stimare la densità della variabile casuale con una distribuzione di probabilità scelta. Ciò può essere ottenuto stimando i parametri della distribuzione da un campione casuale di dati.

Ad esempio, la distribuzione normale ha due parametri: la media e la deviazione standard. Dati questi due parametri, ora conosciamo la funzione di distribuzione di probabilità. Questi parametri possono essere stimati dai dati calcolando la media campionaria e la deviazione standard campionaria.

Ci riferiamo a questo processo come stima della densità parametrica.

Il motivo è che utilizziamo funzioni predefinite per riassumere la relazione tra le osservazioni e la loro probabilità che può essere controllata o configurata con parametri, quindi “parametrica”.

Una volta stimata la densità, possiamo verificare se è un buon adattamento. Questo può essere fatto in molti modi, come:

  • Tracciare la funzione di densità e confrontare la forma con l’istogramma.
  • Campionare la funzione di densità e confrontare il campione generato con il campione reale.
  • Utilizzando un test statistico per confermare che i dati si adattano alla distribuzione.

Possiamo dimostrarlo con un esempio.

Noi può generare un campione casuale di 1.000 osservazioni da una distribuzione normale con una media di 50 e una deviazione standard di 5.

1
2
3

# genera un campione
sample = normal (loc = 50, scale = 5, size = 1000)

Possiamo quindi fingere di non conoscere la distribuzione di probabilità e magari guardare un istogramma e supporre che sia normale. Supponendo che sia normale, possiamo quindi calcolare i parametri della distribuzione, in particolare la media e la deviazione standard.

Non ci aspetteremmo che la media e la deviazione standard siano 50 e 5 esattamente data la piccola dimensione del campione e rumore nel processo di campionamento.

Quindi adattare la distribuzione con questi parametri, la cosiddetta stima della densità parametrica del nostro campione di dati.

In questo caso, possiamo usare la norma ( ) Funzione SciPy.

1
2
3

# definisce la distribuzione
dist = norm (sample_mean, sam ple_std)

Possiamo quindi campionare le probabilità da questa distribuzione per un intervallo di valori nel nostro dominio, in questo caso tra 30 e 70.

Infine, possiamo tracciare un istogramma del campione di dati e sovrapporre un grafico a linee delle probabilità calcolate per l’intervallo di valori da il PDF.

È importante che possiamo convertire i conteggi o le frequenze in ogni bin dell’istogramma in una probabilità normalizzata per garantire che l’asse y dell’istogramma corrisponda all’asse y del grafico a linee. Ciò può essere ottenuto impostando l’argomento “density” su “True” nella chiamata a hist ().

1
2
3
4

# traccia l’istogramma e il pdf
pyplot.hist (sample, bins = 10, density = True)
pyplot.plot (values, probabilities)

Unendo questi snippet, l’esempio completo di stima della densità parametrica è elencato di seguito.

L’esecuzione dell’esempio genera prima il campione di dati , quindi stima i parametri della probabilità normale distribuzione.

Tieni presente che i tuoi risultati saranno diversi data la natura casuale del campione di dati. Prova a eseguire l’esempio alcune volte.

In questo caso, possiamo vedere che la media e la deviazione standard hanno un po ‘di rumore e sono leggermente diverse dai valori previsti di 50 e 5 rispettivamente. Il rumore è minore e si prevede che la distribuzione sia ancora adeguata.

1

Mean = 49.852 , Deviazione standard = 5,023

Successivamente, il PDF è adatto utilizzando i parametri stimati e l’istogramma dei dati con 10 bin viene confrontato con le probabilità per un intervallo di valori campionati dal PDF.

Possiamo vedere che il PDF è una buona corrispondenza per i nostri dati.

Istogramma campione di dati con sovrapposizione della funzione densità di probabilità per la distribuzione normale

È possibile che i dati corrispondano a una distribuzione di probabilità comune, ma richiede una trasformazione prima della stima della densità parametrica.

Ad esempio, potresti avere valori anomali che sono lontani da la media o il centro di massa della distribuzione. Ciò potrebbe avere l’effetto di fornire stime errate dei parametri di distribuzione e, a sua volta, causare un cattivo adattamento ai dati. Questi valori anomali dovrebbero essere rimossi prima di stimare i parametri di distribuzione.

Un altro esempio è che i dati possono avere un’inclinazione o essere spostati a sinistra oa destra. In questo caso, potrebbe essere necessario trasformare i dati prima di stimare i parametri, ad esempio prendendo il logaritmo o la radice quadrata, o più in generale, utilizzando una trasformata di potenza come la trasformata di Box-Cox.

Questi tipi delle modifiche ai dati potrebbe non essere ovvia ed una stima della densità parametrica efficace potrebbe richiedere un processo iterativo di:

  • Loop fino a quando l’adattamento della distribuzione ai dati è abbastanza buono:
    • 1. Stima dei parametri di distribuzione
    • 2. Revisione del PDF risultante rispetto ai dati
    • 3. Trasformare i dati per adattarli meglio alla distribuzione

Stima della densità non parametrica

In alcuni casi, un campione di dati potrebbe non assomigliare a una probabilità comune o non possono essere facilmente adattati alla distribuzione.

Questo è spesso il caso quando i dati hanno due picchi (distribuzione bimodale) o molti picchi (distribuzione multimodale).

In questo caso, la stima della densità parametrica non è fattibile e possono essere utilizzati metodi alternativi che non utilizzano una distribuzione comune. Viene invece utilizzato un algoritmo per approssimare la distribuzione di probabilità dei dati senza una distribuzione predefinita, denominata metodo non parametrico.

Le distribuzioni avranno ancora parametri ma non sono direttamente controllabili allo stesso modo come semplici distribuzioni di probabilità. Ad esempio, un metodo non parametrico potrebbe stimare la densità utilizzando tutte le osservazioni in un campione casuale, in effetti effettuando tutte le osservazioni nei “parametri del campione”.

Forse l’approccio non parametrico più comune per stimare la funzione di densità di probabilità di una variabile casuale continua è chiamata kernel smoothing, o stima della densità del kernel, in breve KDE.

  • Stima della densità del kernel: metodo non parametrico per utilizzare un set di dati per stimare le probabilità di nuovi punti.

In questo caso, un kernel è una funzione matematica che restituisce una probabilità per un dato valore di una variabile casuale. Il kernel smussa o interpola efficacemente le probabilità nell’intervallo di risultati per una variabile casuale in modo tale che la somma di probabilità è uguale a uno, un requisito di probabilità ben comportate.

La funzione kernel pesa il contributo delle osservazioni da un campione di dati in base alla loro relazione o distanza da un dato campione di query per cui t a probabilità è richiesta.

Un parametro, chiamato parametro di livellamento o larghezza di banda, controlla l’ambito, o finestra di osservazione, dal campione di dati che contribuisce a stimare la probabilità per un dato campione. In quanto tale, la stima della densità del kernel viene a volte indicata come una finestra di Parzen-Rosenblatt, o semplicemente una finestra di Parzen, dopo gli sviluppatori del metodo.

  • Parametro di attenuazione (larghezza di banda): parametro che controlla il numero di campioni o finestra di campioni utilizzati per stimare la probabilità di un nuovo punto.

Una finestra grande può risultare in una densità grossolana con pochi dettagli, mentre una finestra piccola potrebbe avere troppi dettagli e non essere abbastanza regolare o generale da coprire correttamente esempi nuovi o non visti.Il contributo dei campioni all’interno della finestra può essere modellato utilizzando diverse funzioni, a volte indicate come funzioni di base, ad es. normale uniforme, ecc., con diversi effetti sulla levigatezza della funzione di densità risultante.

  • Funzione di base (kernel): la funzione scelta utilizzata per controllare il contributo dei campioni nel set di dati alla stima del probabilità di un nuovo punto.

Come tale, può essere utile sperimentare con diverse dimensioni di finestra e diverse funzioni di contributo e valutare i risultati rispetto agli istogrammi dei dati.

Possiamo dimostrarlo con un esempio.

Innanzitutto, possiamo costruire una distribuzione bimodale combinando campioni da due diverse distribuzioni normali. In particolare, 300 esempi con una media di 20 e una deviazione standard di 5 (il picco più piccolo) e 700 esempi con una media di 40 e una deviazione standard di 5 (il picco più grande). I mezzi sono stati scelti vicini per garantire la sovrapposizione delle distribuzioni nel campione combinato.

L’esempio completo di creazione di questo campione con una distribuzione di probabilità bimodale e tracciamento dell’istogramma è elencato di seguito.

L’esecuzione dell’esempio crea il campione di dati e traccia l’istogramma.

Tieni presente che i risultati saranno diversi data la natura casuale del campione di dati. Prova a eseguire l’esempio alcune volte.

Abbiamo meno campioni con una media di 20 rispetto ai campioni con una media di 40, che possiamo vedere riflessi nell’istogramma con una densità maggiore di campioni intorno a 40 rispetto a circa 20.

I dati con questa distribuzione non si adattano bene a una distribuzione di probabilità comune, per impostazione predefinita. È un buon caso per utilizzare un metodo di stima della densità del kernel non parametrico.

Grafico dell’istogramma del campione di dati Con una distribuzione di probabilità bimodale

La libreria di apprendimento automatico scikit-learn fornisce la classe KernelDensity che implementa la stima della densità del kernel.

Innanzitutto, la classe è costruita con la larghezza di banda desiderata (dimensione della finestra) e argomenti del kernel (funzione di base). È una buona idea testare diverse configurazioni sui dati. In questo caso, proveremo una larghezza di banda di 2 e un kernel gaussiano.

La classe viene quindi adattata a un campione di dati tramite la funzione fit (). La funzione prevede che i dati abbiano una forma 2D con il modulo, quindi possiamo rimodellare il nostro campione di dati in modo che abbia 1.000 righe e 1 colonna.

1
2
3
4
5

# fit density
model = KernelDensity (bandwidth = 2, kernel = “gaussian”)
sample = sample.reshape ((len (sample), 1))
model.fit (sample)

Possiamo quindi valutare quanto bene la stima della densità corrisponda ai nostri dati calcolando le probabilità per un intervallo di oss ervations e confrontando la forma con l’istogramma, proprio come abbiamo fatto per il caso parametrico nella sezione precedente.

La funzione score_samples () su KernelDensity calcolerà la probabilità logaritmica per un array di campioni. Possiamo creare un intervallo di campioni da 1 a 60, circa l’intervallo del nostro dominio, calcolare le probabilità di log, quindi invertire l’operazione di log calcolando l’esponente o exp () per restituire i valori all’intervallo 0-1 per probabilità normali .

Infine, possiamo creare un istogramma con frequenze normalizzate e un grafico a linee sovrapposte di valori per probabilità stimate.

1
2
3
4
5

# traccia l’istogramma e il pdf
pyplot.hist (sample, bins = 50, density = True)
pyplot.plot (valori, probabilità)
pyplot.show ()

Mettendo insieme questo, l’esempio completo della stima della densità del kernel per un campione di dati bimodali è elencato di seguito.

L’esecuzione dell’esempio crea la distribuzione dei dati, si adatta al modello di stima della densità del kernel, quindi traccia l’istogramma di il campione di dati e il PDF dal modello KDE.

Tieni presente che i tuoi risultati saranno diversi data la natura casuale del campione di dati. Prova a eseguire l’esempio alcune volte.

In questo caso, possiamo vedere che il PDF si adatta bene all’istogramma. Non è molto fluido e potrebbe essere migliorato impostando l’argomento “bandwidth” su 3 campioni o più. Sperimenta con valori diversi della larghezza di banda e della funzione kernel.

Istogramma e grafico della funzione densità di probabilità stimati tramite la stima della densità del kernel per un campione di dati bimodali

La classe KernelDensity è potente e supporta la stima del PDF per dati multidimensionali.

Ulteriori letture

Questa sezione fornisce più risorse sull’argomento se stai cercando di approfondire.

Libri

  • Pattern Recognition and Machine Learning, 2006.
  • Machine Learning: A Probabilistic Perspective, 2012.
  • The Elements of Statistical Learning: Data Mining, Inference e Prediction, 2009.

API

  • API scipy.stats.gaussian_kde.
  • Metodi non parametrici non parametrici, API Statsmodels.
  • Stima della densità del kernel Statsmodels Exa mple.
  • Stima della densità, Scikit-Learn API.

Articoli

  • Stima della densità, Wikipedia.
  • Istogramma, Wikipedia.
  • Stima della densità del kernel, Wikipedia.
  • Stima della densità del kernel multivariata, Wikipedia.
  • Stima della densità del kernel tramite il metodo della finestra di Parzen-Rosenblatt, 2014.
  • Approfondimento: stima della densità del kernel.

Riepilogo

In questo tutorial, hai scoperto una breve introduzione alla stima della densità di probabilità.

In particolare, hai imparato:

  • I grafici degli istogrammi forniscono un modo rapido e affidabile per visualizzare la densità di probabilità di un campione di dati.
  • Densità di probabilità parametrica stima implica la selezione di una distribuzione comune e la stima dei parametri per la funzione di densità da un campione di dati.
  • La stima della densità di probabilità non parametrica implica l’utilizzo di una tecnica per adattare un modello alla distribuzione arbitraria dei dati, come la stima della densità del kernel su.

Hai domande?
Poni le tue domande nei commenti qui sotto e farò del mio meglio per risponderti.

Ottieni un controllo sulla probabilità di machine learning!

Sviluppa la tua comprensione della probabilità

… con solo poche righe di codice Python

Scopri come nel mio nuovo ebook:
Probability for Machine Learning

Fornisce autoapprendimento tutorial e progetti end-to-end su: Teorema di Bayes, ottimizzazione bayesiana, distribuzioni, massima verosimiglianza, entropia incrociata, modelli di calibrazione
e molto altro ancora …

Finalmente sfrutta l’incertezza in I tuoi progetti

Salta gli accademici. Solo risultati. Guarda cosa c’è dentro

Tweet Condividi Condividi

Leave a Reply

Lascia un commento

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