O introducere ușoară la estimarea densității probabilităților

Tweet Share Share

Ultima actualizare pe 24 iulie 2020

Densitatea probabilității este relația dintre observații și probabilitate.

Unele rezultate ale unei variabile aleatorii vor avea densitate de probabilitate scăzută, iar alte rezultate vor avea o densitate de probabilitate ridicată.

Forma generală a densității de probabilitate este denumită probabilitate distribuție, iar calculul probabilităților pentru rezultatele specifice ale unei variabile aleatorii este realizat de o funcție de densitate de probabilitate sau PDF pe scurt.

Este util să cunoașteți funcția de densitate de probabilitate pentru un eșantion de date în ordine. să știe dacă o observație dată este puțin probabilă, sau atât de puțin probabilă încât să fie considerată o valoare anormală sau anomalie și dacă ar trebui eliminată. De asemenea, este util pentru a alege metode de învățare adecvate care necesită date de intrare pentru a avea o distribuție specifică a probabilității.

Este puțin probabil ca funcția densității probabilității pentru un eșantion aleatoriu de date să fie cunoscută. Ca atare, densitatea probabilității trebuie aproximată utilizând un proces cunoscut sub numele de estimare a densității probabilității.

În acest tutorial, veți descoperi o introducere ușoară a estimării densității probabilității.

După finalizarea acestei tutorial, veți ști:

  • Graficele histogramei oferă o modalitate rapidă și fiabilă de a vizualiza densitatea probabilității unui eșantion de date.
  • Estimarea parametrului densității probabilității implică selectarea unei distribuții comune și estimarea parametrilor pentru funcția de densitate dintr-un eșantion de date.
  • Estimarea densității de probabilitate nonparametrică implică utilizarea unei tehnici pentru a potrivi un model la distribuția arbitrară a datelor, cum ar fi estimarea densității nucleului.

Începeți proiectul cu noua mea carte Probabilitatea pentru învățarea automată, inclusiv tutoriale pas cu pas și fișierele de cod sursă Python pentru toate exemplele.

Să începem.

A Gentle Introductio n la Estimarea densității probabilității
Fotografie de Alistair Paterson, unele drepturi rezervate.

Prezentare generală a tutorialului

Acest tutorial este împărțit în patru părți; acestea sunt:

  1. Densitatea probabilității
  2. Rezumați densitatea cu o histogramă
  3. Estimarea parametrică a densității
  4. Estimarea densității nonparametrice

Densitatea probabilității

O variabilă aleatorie x are o distribuție de probabilitate p (x).

Relația dintre rezultatele unei variabile aleatoare și probabilitatea acesteia este denumită densitatea probabilității sau pur și simplu „densitatea”.

Dacă o variabilă aleatorie este continuă, atunci probabilitatea poate fi calculată prin funcția densității probabilității sau PDF pe scurt. Forma densității probabilității funcția din domeniu pentru o variabilă aleatorie este denumită distribuția de probabilitate și distribuțiile de probabilitate comune au nume, cum ar fi uniforme, normale, exponențiale și așa mai departe.

Având în vedere o variabilă aleatorie, ne interesează densitatea probabilităților sale.

De exemplu, având în vedere un eșantion aleatoriu al unei variabile, am putea dori să știm lucruri precum forma distribuției probabilității bution, cea mai probabilă valoare, răspândirea valorilor și alte proprietăți.

Cunoașterea distribuției probabilității unei variabile aleatorii poate ajuta la calcularea momentelor distribuției, cum ar fi media și varianța, dar poate fi, de asemenea, util pentru alte considerații mai generale, cum ar fi determinarea dacă o observație este puțin probabilă sau foarte puțin probabilă și ar putea fi o valoare anormală sau anomalie.

Problema este că este posibil să nu cunoaștem distribuția probabilității unei variabile aleatorii. Rareori cunoaștem distribuția, deoarece nu avem acces la toate rezultatele posibile pentru o variabilă aleatorie. De fapt, tot la care avem acces este un eșantion de observații. Ca atare, trebuie să selectăm o distribuție de probabilitate.

Această problemă este denumită estimare a densității de probabilitate sau pur și simplu „estimare a densității”, deoarece folosim observațiile dintr-un eșantion aleatoriu pentru a estima densitatea generală a probabilități dincolo de eșantionul de date pe care îl avem la dispoziție.

Există câțiva pași în procesul de estimare a densității pentru o variabilă aleatorie.

Primul pas este de a revizui densitatea de observații în eșantionul aleatoriu cu o histogramă simplă. Din histogramă, am putea fi capabili să identificăm o distribuție de probabilitate comună și bine înțeleasă care poate fi utilizată, cum ar fi o distribuție normală. Dacă nu, ar trebui să potrivim un model la estimează distribuția.

În secțiunile următoare, vom analiza mai atent fiecare dintre acești pași la rândul lor.

Ne vom concentra pe date univariate, de exemplu, o variabilă aleatorie, în această postare pentru simplitate. Deși pașii sunt aplicabili pentru datele multivariate, ele pot deveni mai provocatoare pe măsură ce crește numărul de variabile.

Vreau să învăț probabilitatea de învățare automată

Urmează acum cursul meu gratuit de 7 zile pentru e-mail (cu un exemplu de cod).

Faceți clic pentru a vă înscrie și pentru a obține, de asemenea, o versiune gratuită PDF a cărții electronice a cursului.

Descărcați minicursul GRATUIT

Rezumați densitatea cu o histogramă

Primul pas în estimarea densității este crearea unei histograme a observațiilor din eșantionul aleatoriu.

O histogramă este un grafic care implică mai întâi gruparea observațiilor în coșuri și numărarea numărului de evenimente care se încadrează în fiecare coș. Numărurile sau frecvențele observațiilor din fiecare coș sunt apoi reprezentate ca un grafic cu bare cu coșurile pe axa x și frecvența pe axa y.

Alegerea numărului de coșuri este important, deoarece controlează grosimea distribuției (numărul de bare) și, la rândul său, cât de bine este reprezentată densitatea observațiilor. Este o idee bună să experimentați cu diferite dimensiuni de coșuri pentru un anumit eșantion de date pentru a obține mai multe perspective sau vizualizări pe aceleași date.

Se poate crea o histogramă utilizând biblioteca Matplotlib și funcția hist (). Datele sunt furnizate ca primul argument, iar numărul de coșuri este specificat prin argumentul „coșuri” fie ca un număr întreg (de exemplu, 10), fie ca o secvență a limitelor fiecărui coș (de exemplu).

Fragmentul de mai jos creează o histogramă cu 10 coșuri pentru un eșantion de date.

1
2
3
4

# trasează o histogramă a eșantionului
pyplot.hist (eșantion, bins = 10)
pyplot.show ()

Putem crea un eșantion aleatoriu extras dintr-o distribuție normală și p rețineți că nu cunoaștem distribuția, apoi creați o histogramă a datelor. Funcția normală () NumPy va realiza acest lucru și vom genera 1.000 de eșantioane cu o medie de 0 și o abatere standard de 1, de ex. un gaussian standard.

Exemplul complet este listat mai jos.

1
2
3
4
5
6
7
8

# exemplu de trasare a unei histograme a unui eșantion aleatoriu
din matplotlib import pyplot
din numpy.random import normal
# generate un eșantion
sample = normal (size = 1000)
# grafic o histogramă a eșantionului
pyplot.hist (sample, bins = 10)
pyplot.show ()

Rularea exemplu desenează un eșantion de observații aleatorii și creează histograma cu 10 coșuri. Putem vedea clar forma distribuției normale.

Rețineți că rezultatele dvs. vor diferi, având în vedere natura aleatorie a eșantionului de date. Încercați să rulați exemplul de câteva ori.

Diagrama histogramei cu 10 coșuri dintr-un eșantion de date aleatoriu

Rularea exemplului cu pubele setate la 3 face ca distribuția normală să fie mai puțin evidentă.

Diagrama histogramei cu 3 coșuri dintr-un eșantion de date aleatoriu

Revizuirea unei histograme a unui eșantion de date cu o gamă de numere diferite de coșuri vă va ajuta să identificați dacă densitatea arată ca o distribuție de probabilitate obișnuită sau nu.

În majoritatea cazurilor, veți vedea o distribuție unimodală, cum ar fi forma familiară a clopotului normalului, forma plană a uniformei sau forma descendentă sau ascendentă a o distribuție exponențială sau Pareto.

Este posibil să vedeți și distribuții complexe, cum ar fi vârfuri multiple care nu dispar cu un număr diferit de pubele, denumite distribuție bimodală sau vârfuri multiple, denumite distribuție multimodală. S-ar putea să vedeți, de asemenea, o creștere mare a densității pentru o valoare dată sau o gamă mică de valori care indică valori anormale, care apare adesea pe coada unei distribuții departe de restul densității.

Estimarea parametrică a densității

Forma unei histograme a celor mai multe probe aleatorii se va potrivi cu o distribuție de probabilitate bine cunoscută.

Distribuțiile comune sunt frecvente deoarece apar din nou și din nou în domenii diferite și uneori neașteptate.

Familiarizați-vă cu distribuțiile comune de probabilitate, deoarece vă va ajuta să identificați o distribuție dată din o histogramă.

Odată identificată, puteți încerca să estimați densitatea variabilei aleatorii cu o distribuție de probabilitate aleasă. Acest lucru poate fi realizat prin estimarea parametrilor distribuției dintr-un eșantion aleatoriu de date.

De exemplu, distribuția normală are doi parametri: media și abaterea standard. Având în vedere acești doi parametri, acum cunoaștem funcția de distribuție a probabilității. Acești parametri pot fi evaluați din date, calculând media eșantionului și deviația standard a eșantionului.

Ne referim la acest proces ca estimare a densității parametrice.

Motivul este că folosim funcții predefinite. pentru a rezuma relația dintre observații și probabilitatea lor care poate fi controlată sau configurată cu parametri, deci „parametrică”.

Odată ce am estimat densitatea, putem verifica dacă este o potrivire bună. Acest lucru se poate face în mai multe moduri, cum ar fi:

  • Trasarea funcției densității și compararea formei cu histograma.
  • Eșantionarea funcției densității și compararea probei generate la eșantionul real.
  • Utilizarea unui test statistic pentru a confirma datele se potrivește distribuției.

Putem demonstra acest lucru cu un exemplu.

Noi poate genera un eșantion aleatoriu de 1.000 de observații dintr-o distribuție normală cu o medie de 50 și o deviație standard de 5.

1
2
3

# generează un eșantion
sample = normal (loc = 50, scale = 5, size = 1000)

Putem pretinde că nu cunoaștem distribuția probabilității și poate că ne uităm la o histogramă și putem ghici că este normală. Presupunând că este normal, putem calcula apoi parametrii distribuției, în special media și abaterea standard.

Nu ne-am aștepta ca media și abaterea standard să fie de 50 și 5 exact având în vedere dimensiunea mică a eșantionului. și zgomot în procesul de eșantionare.

Apoi potrivim distribuția cu acești parametri, așa-numita estimare a densității parametrice a eșantionului nostru de date.

În acest caz, putem folosi norma ( ) Funcția SciPy.

1
2
3

# definește distribuția
dist = norm (sample_mean, sam ple_std)

Putem apoi să probăm probabilitățile din această distribuție pentru un interval de valori din domeniul nostru, în acest caz între 30 și 70.

În cele din urmă, putem trasa o histogramă a eșantionului de date și putem suprapune un grafic liniar al probabilităților calculate pentru intervalul de valori din PDF.

Este important să putem converti numărul sau frecvențele din fiecare coș de histogramă la o probabilitate normalizată pentru a ne asigura că axa y a histogramei se potrivește cu axa y a graficului de linie. Acest lucru poate fi realizat setând argumentul „densitate” la „Adevărat” în apelul către hist ().

1
2
3
4

# trageți histograma și pdf
pyplot.hist (sample, bins = 10, densitate = True)
pyplot.plot (valori, probabilități)

Legând aceste fragmente împreună, exemplul complet de estimare a densității parametrice este listat mai jos.

Rularea primului exemplu generează eșantionul de date , apoi estimează parametrii probabilității normale distribuție.

Rețineți că rezultatele dvs. vor diferi, având în vedere natura aleatorie a eșantionului de date. Încercați să rulați exemplul de câteva ori.

În acest caz, putem observa că media și deviația standard au ceva zgomot și sunt ușor diferite de valorile așteptate de 50 și respectiv 5. Zgomotul este minor și se așteaptă ca distribuția să se potrivească în continuare.

1

Mean = 49.852 , Deviație standard = 5.023

Apoi, PDF-ul este potrivit utilizarea parametrilor estimați și histograma datelor cu 10 coșuri este comparată cu probabilitățile pentru un interval de valori eșantionate din PDF.

Putem vedea că PDF-ul este o potrivire bună pentru datele noastre.

Histogramă de probă de date cu suprapunere funcțională a densității probabilității pentru distribuția normală

Este posibil ca datele să se potrivească cu o distribuție de probabilitate comună, dar necesită o transformare înainte de estimarea densității parametrice.

De exemplu, este posibil să aveți valori anterioare care sunt departe de media sau centrul de masă al distribuției. Acest lucru poate avea efectul de a da estimări incorecte ale parametrilor de distribuție și, la rândul său, de a provoca o potrivire slabă a datelor. Aceste valori aberante trebuie eliminate înainte de estimarea parametrilor de distribuție.

Un alt exemplu este că datele pot avea o înclinare sau pot fi deplasate la stânga sau la dreapta. În acest caz, poate fi necesar să transformați datele înainte de a estima parametrii, cum ar fi luarea jurnalului sau a rădăcinii pătrate sau, mai general, folosind o transformare de putere precum transformarea Box-Cox.

Aceste tipuri modificările aduse datelor pot să nu fie evidente și o estimare eficientă a densității parametrice poate necesita un proces iterativ de:

  • Buclă până când potrivirea distribuției la date este suficientă:
    • 1. Estimarea parametrilor de distribuție
    • 2. Revizuirea PDF-ului rezultat în raport cu datele
    • 3. Transformarea datelor pentru a se potrivi mai bine cu distribuția

Estimarea nonparametrică a densității

În unele cazuri, un eșantion de date s-ar putea să nu semene cu o probabilitate comună distribuție sau nu se poate face ușor să se potrivească distribuției.

Acest lucru este adesea cazul când datele au două vârfuri (distribuție bimodală) sau multe vârfuri (distribuție multimodală).

În acest caz, estimarea densității parametrice nu este fezabilă și pot fi utilizate metode alternative care nu utilizează o distribuție comună. În schimb, un algoritm este folosit pentru a aproxima distribuția de probabilitate a datelor fără o distribuție predefinită, denumită o metodă nonparametrică.

Distribuțiile vor avea în continuare parametri, dar nu sunt direct controlabili în același mod ca distribuții simple de probabilitate. De exemplu, o metodă nonparametrică ar putea estima densitatea utilizând toate observațiile dintr-un eșantion aleatoriu, făcând efectiv toate observațiile din „parametrii” eșantionului.

Poate cea mai comună abordare neparametrică pentru estimarea funcției densității probabilității o variabilă aleatorie continuă se numește netezirea kernelului sau estimarea densității kernelului, KDE pe scurt.

  • Estimarea densității kernelului: metodă nonparametrică pentru utilizarea unui set de date pentru estimarea probabilităților pentru puncte noi.

În acest caz, un nucleu este o funcție matematică care returnează o probabilitate pentru o anumită valoare a unei variabile aleatorii. Nucleul netezește sau interpola efectiv probabilitățile în intervalul de rezultate pentru o variabilă aleatorie, astfel încât suma de probabilități este egal cu una, o cerință de probabilități bine comportate.

Funcția kernel cântărește contribuția observațiilor dintr-un eșantion de date pe baza relației sau distanței lor la un eșantion de interogare dat pentru care t probabilitatea este solicitată.

Un parametru, numit parametru de netezire sau lățimea de bandă, controlează domeniul de aplicare sau fereastra de observații, din eșantionul de date care contribuie la estimarea probabilității pentru un eșantion dat. Ca atare, estimarea densității nucleului este uneori denumită o fereastră Parzen-Rosenblatt, sau pur și simplu o fereastră Parzen, după dezvoltatorii metodei.

  • Parametru de netezire (lățime de bandă): parametru care controlează numărul de eșantioane sau fereastra de eșantioane utilizate pentru a estima probabilitatea pentru un punct nou.

O fereastră mare poate duce la o densitate grosieră cu mici detalii, în timp ce o fereastră mică poate avea prea multe detalii și să nu fie suficient de lin sau general pentru a acoperi corect exemple noi sau nevăzute.Contribuția eșantioanelor în cadrul ferestrei poate fi modelată utilizând diferite funcții, uneori denumite funcții de bază, de ex. normal uniform etc., cu efecte diferite asupra netezirii funcției de densitate rezultate.

  • Funcția de bază (nucleu): funcția aleasă utilizată pentru a controla contribuția eșantioanelor din setul de date la estimarea probabilitatea unui nou punct.

Ca atare, poate fi util să experimentați diferite dimensiuni de ferestre și diferite funcții de contribuție și să evaluați rezultatele în funcție de histogramele datelor.

Putem demonstra acest lucru cu un exemplu.

În primul rând, putem construi o distribuție bimodală prin combinarea probelor din două distribuții normale diferite. Mai exact, 300 de exemple cu o medie de 20 și o abatere standard de 5 (vârful mai mic) și 700 de exemple cu o medie de 40 și o abatere standard de 5 (vârful mai mare). Mijloacele au fost alese aproape împreună pentru a se asigura că distribuțiile se suprapun în eșantionul combinat.

Exemplul complet de creare a acestui eșantion cu o distribuție de probabilitate bimodală și reprezentarea histogramei este listat mai jos.

Rularea exemplului creează eșantionul de date și trasează histograma.

Rețineți că rezultatele dvs. vor diferi, având în vedere natura aleatorie a eșantionului de date. Încercați să rulați exemplul de câteva ori.

Avem mai puține probe cu o medie de 20 decât probe cu o medie de 40, pe care le putem vedea reflectate în histogramă cu o densitate mai mare de probe în jur de 40 decât în jur de 20.

Datele cu această distribuție nu se încadrează frumos într-o distribuție de probabilitate comună, prin proiectare. Este un caz bun pentru utilizarea unei metode de estimare a densității nucleului nonparametric.

Diagrama histogramă a eșantionului de date Cu o distribuție de probabilitate bimodală

Biblioteca scikit-learn machine learning oferă clasa KernelDensity care implementează estimarea densității nucleului.

În primul rând, clasa este construită cu lățimea de bandă dorită. (dimensiunea ferestrei) și argumentele kernelului (funcția de bază). Este o idee bună să testați diferite configurații pe datele dvs. În acest caz, vom încerca o lățime de bandă de 2 și un nucleu gaussian.

Clasa se potrivește apoi pe un eșantion de date prin funcția fit (). Funcția se așteaptă ca datele să aibă o formă 2D cu formularul, prin urmare putem remodela eșantionul de date pentru a avea 1.000 de rânduri și 1 coloană.

1
2
3
4
5

# fit densitate
model = KernelDensity (bandwidth = 2, kernel = „gaussian”)
sample = sample.reshape ((len (sample), 1))
model.fit (mostră)

Apoi putem evalua cât de bine se potrivește estimarea densității cu datele noastre, calculând probabilitățile pentru un interval de obs ervări și compararea formei cu histograma, la fel cum am făcut pentru cazul parametric din secțiunea anterioară.

Funcția score_samples () din KernelDensity va calcula probabilitatea jurnalului pentru o serie de eșantioane. Putem crea o gamă de eșantioane de la 1 la 60, aproximativ domeniul domeniului nostru, calculăm probabilitățile jurnalului, apoi inversăm operația jurnalului calculând exponentul sau exp () pentru a reveni valorile în intervalul 0-1 pentru probabilități normale .

În cele din urmă, putem crea o histogramă cu frecvențe normalizate și o linie de suprapunere a valorilor la probabilitățile estimate.

1
2
3
4
5

# trasează histograma și pdf
pyplot.hist (eșantion, pubele = 50, densitate = Adevărat)
pyplot.plot (valori, probabilități)
pyplot.show ()

Legând acest lucru împreună, exemplul complet de estimare a densității nucleului pentru un eșantion de date bimodale este listat mai jos.

Rularea exemplului creează distribuția datelor, se potrivește modelului de estimare a densității nucleului, apoi trasează histograma eșantionul de date și PDF-ul din modelul KDE.

Rețineți că rezultatele dvs. vor diferi, având în vedere natura aleatorie a eșantionului de date. Încercați să rulați exemplul de câteva ori.

În acest caz, putem vedea că PDF-ul este potrivit pentru histogramă. Nu este foarte netedă și ar putea fi făcută cu atât mai mult prin setarea argumentului „lățime de bandă” la 3 eșantioane sau mai mult. Experimentați cu diferite valori ale lățimii de bandă și funcției kernel.

Diagrama funcției histogramei și densității probabilității estimată prin estimarea densității kernelului pentru un eșantion de date bimodale

Clasa KernelDensity este puternică și acceptă estimarea PDF-ului pentru date multidimensionale.

Lecturi suplimentare

Această secțiune oferă mai multe resurse pe această temă dacă doriți să aprofundați.

Cărți

  • Recunoașterea modelelor și învățarea automată, 2006.
  • Învățarea automată: o perspectivă probabilistică, 2012.
  • Elementele învățării statistice: extragerea datelor, inferență și Prediction, 2009.

API

  • scipy.stats.gaussian_kde API.
  • Metode nonparametric nonparametric, Statsmodels API.
  • Kernel Density Estimation Statsmodels Exa simplu.
  • Estimarea densității, API Scikit-Learn.

Articole

  • Estimarea densității, Wikipedia.
  • Histogramă, Wikipedia.
  • Estimarea densității nucleului, Wikipedia.
  • Estimarea densității nucleului multivariat, Wikipedia.
  • Estimarea densității nucleului prin metoda ferestrei Parzen-Rosenblatt, 2014.
  • În profunzime: estimarea densității nucleului.

Rezumat

În acest tutorial, ați descoperit o introducere ușoară a estimării densității probabilității.

Mai exact, ați aflat:

  • Graficele histogramei oferă o modalitate rapidă și fiabilă de a vizualiza densitatea probabilității unui eșantion de date.
  • Densitatea parametrului de probabilitate estimarea implică selectarea unei distribuții comune și estimarea parametrilor pentru funcția de densitate dintr-un eșantion de date.
  • Estimarea densității de probabilitate nonparametrică implică utilizarea unei tehnici pentru a se potrivi un model cu distribuția arbitrară a datelor, cum ar fi estimarea densității nucleului pe.

Aveți întrebări?
Puneți întrebările dvs. în comentariile de mai jos și voi face tot posibilul să răspund.

Obțineți un control asupra probabilității de învățare automată!

Dezvoltă-ți înțelegerea probabilității

… cu doar câteva linii de cod python

Descoperă cum în noua mea carte electronică:
Probabilitatea pentru învățarea automată

Oferă auto-studiu tutoriale și proiecte end-to-end pe:
Teorema Bayes, Optimizarea Bayesiană, Distribuții, Probabilitate maximă, Entropie încrucișată, Modele de calibrare
și multe altele …

În cele din urmă valorificați incertitudinea în Proiectele dvs.

Treceți peste universitari. Rezultate. Vedeți ce se află în interiorul

Trimiteți Tweet Share Share

Leave a Reply

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *