Jemný úvod do odhadu hustoty pravděpodobnosti

Tweet Sdílet Sdílet

Poslední aktualizace 24. července 2020

Hustota pravděpodobnosti je vztah mezi pozorováním a jejich pravděpodobnost.

Některé výsledky náhodné proměnné budou mít nízkou hustotu pravděpodobnosti a jiné výsledky budou mít vysokou hustotu pravděpodobnosti.

Celkový tvar hustoty pravděpodobnosti se označuje jako pravděpodobnost distribuce a výpočet pravděpodobností pro konkrétní výsledky náhodné proměnné se provádí funkcí hustoty pravděpodobnosti nebo zkráceně PDF.

Je užitečné znát funkci hustoty pravděpodobnosti pro vzorek dat, aby vědět, zda je dané pozorování nepravděpodobné nebo nepravděpodobné, že by bylo považováno za odlehlou hodnotu nebo anomálii, a zda by mělo být odstraněno. Je také užitečné vybrat vhodné metody učení, které vyžadují, aby vstupní data měla specifické rozdělení pravděpodobnosti.

Je nepravděpodobné, že je známa funkce hustoty pravděpodobnosti pro náhodný vzorek dat. Proto musí být hustota pravděpodobnosti aproximována pomocí procesu známého jako odhad hustoty pravděpodobnosti.

V tomto výukovém programu najdete jemný úvod do odhadu hustoty pravděpodobnosti.

Po dokončení tohoto tutoriál, budete vědět:

  • Grafy histogramu poskytují rychlý a spolehlivý způsob vizualizace hustoty pravděpodobnosti vzorku dat.
  • Odhad hustoty pravděpodobnosti zahrnuje výběr běžné distribuce a odhad parametrů funkce hustoty ze vzorku dat.
  • Neparametrický odhad hustoty pravděpodobnosti zahrnuje použití techniky přizpůsobení modelu libovolnému rozdělení dat, jako je odhad hustoty jádra.

Zahajte svůj projekt svou novou knihou Pravděpodobnost pro strojové učení, včetně podrobných návodů a souborů zdrojového kódu Pythonu pro všechny příklady.

Pojďme začít.

Jemný úvod n k odhadu hustoty pravděpodobnosti
Fotografie Alistaira Patersona, některá práva vyhrazena.

Výukový přehled

Tento výukový program je rozdělen do čtyř částí; jsou to:

  1. Hustota pravděpodobnosti
  2. Shrnutí hustoty pomocí histogramu
  3. Odhad parametrické hustoty
  4. Neparametrický odhad hustoty

Hustota pravděpodobnosti

Náhodná proměnná x má rozdělení pravděpodobnosti p (x).

Vztah mezi výsledky náhodné proměnné a její pravděpodobností je označuje se jako hustota pravděpodobnosti nebo jednoduše „hustota“.

Pokud je náhodná proměnná spojitá, lze pravděpodobnost vypočítat pomocí funkce hustoty pravděpodobnosti nebo zkráceně PDF. Tvar hustoty pravděpodobnosti funkce v celé doméně pro náhodnou proměnnou se označuje jako rozdělení pravděpodobnosti a běžné rozdělení pravděpodobnosti mají názvy, například uniformní, normální, exponenciální atd.

Vzhledem k náhodné proměnné nás zajímá hustota jejích pravděpodobností.

Například vzhledem k náhodnému vzorku proměnné bychom možná chtěli znát věci, jako je tvar pravděpodobnosti distri představa, nejpravděpodobnější hodnota, šíření hodnot a další vlastnosti.

Znalost rozdělení pravděpodobnosti pro náhodnou proměnnou může pomoci vypočítat momenty rozdělení, jako je průměr a rozptyl, ale může být také užitečné pro další obecnější úvahy, jako je stanovení, zda je pozorování nepravděpodobné nebo velmi nepravděpodobné a může to být odlehlá hodnota nebo anomálie.

Problém je v tom, že možná neznáme rozdělení pravděpodobnosti pro náhodnou proměnnou. Zřídka známe rozdělení, protože nemáme přístup ke všem možným výsledkům pro náhodnou proměnnou. Ve skutečnosti máme přístup pouze k vzorku pozorování. Proto musíme vybrat rozdělení pravděpodobnosti.

Tento problém se označuje jako odhad hustoty pravděpodobnosti nebo jednoduše „odhad hustoty“, protože k odhadování obecné hustoty pomocí náhodných vzorků používáme pozorování. pravděpodobnosti přesahující pouze vzorek dat, který máme k dispozici.

V procesu odhadu hustoty pro náhodnou proměnnou existuje několik kroků.

Prvním krokem je zkontrolovat hustotu pozorování v náhodném vzorku s jednoduchým histogramem. Z histogramu můžeme být schopni identifikovat běžné a dobře pochopené rozdělení pravděpodobnosti, které lze použít, například normální rozdělení. Pokud ne, možná budeme muset přizpůsobit model odhadněte distribuci.

V následujících částech se postupně podrobněji podíváme na každý z těchto kroků.

Zaměříme se na jednorozměrná data, např. jednu náhodnou proměnnou, v tomto příspěvku pro jednoduchost. Ačkoli jsou tyto kroky použitelné pro data s více proměnnými, mohou být náročnější ng, jak se zvyšuje počet proměnných.

Chcete se naučit pravděpodobnost strojového učení

Zúčastněte se mého bezplatného sedmidenního kurzu e-mailové havárie (s ukázkovým kódem).

Kliknutím se zaregistrujete a získáte také bezplatnou verzi kurzu Ebook v elektronické podobě.

Stáhněte si minikurz ZDARMA

Shrnutí hustoty pomocí histogramu

Prvním krokem v odhadu hustoty je vytvoření histogramu pozorování v náhodném vzorku.

Histogram je graf, který zahrnuje nejprve seskupení pozorování do košů a počítání počtu událostí, které spadají do každého koše. Počty nebo frekvence pozorování v každém koši jsou poté vyneseny jako sloupcový graf s koši na ose x a frekvencí na ose y.

Volba počtu košů je důležité, protože řídí hrubost distribuce (počet sloupců) a zase to, jak dobře je vynesena hustota pozorování. Je vhodné experimentovat s různými velikostmi přihrádek pro daný vzorek dat a získat více pohledů nebo pohledů na stejná data.

Histogram lze vytvořit pomocí knihovny Matplotlib a funkce hist (). Data jsou poskytována jako první argument a počet košů je zadán pomocí argumentu „koše“ buď jako celé číslo (např. 10), nebo jako posloupnost hranic každého koše (např.).

Fragment níže vytváří histogram s 10 zásobníky pro vzorek dat.

1
2
3
4

# vykreslit histogram vzorku
pyplot.hist (sample, bins = 10)
pyplot.show ()

Můžeme vytvořit náhodný vzorek získaný z normálního rozdělení ap retend neznáme distribuci, pak vytvořte histogram dat. Normální () funkce NumPy toho dosáhne a vygenerujeme 1 000 vzorků se střední hodnotou 0 a standardní odchylkou 1, např. standardní gaussián.

Celý příklad je uveden níže.

1
2
3
4
5
6
7
8

# příklad vykreslení histogramu náhodného vzorku
z matplotlib import pyplot
z numpy.random import normální
# vygenerování vzorku
sample = normal (size = 1000)
# vykreslení histogramu vzorku
pyplot.hist (sample, bins = 10)
pyplot.show ()

Spuštění příklad nakreslí vzorek náhodných pozorování a vytvoří histogram s 10 zásobníky. Jasně vidíme tvar normálního rozdělení.

Upozorňujeme, že vaše výsledky se budou lišit vzhledem k náhodné povaze vzorku dat. Zkuste příklad spustit několikrát.

Graf histogramu s 10 zásobníky náhodného vzorku dat

Spuštěním příkladu s biny nastavenými na 3 je normální rozdělení méně zřejmé.

Graf histogramu se 3 zásobníky náhodného vzorku dat

Kontrola histogramu vzorku dat s řadou různých počtů zásobníků pomůže zjistit, zda hustota vypadá jako běžné rozdělení pravděpodobnosti nebo ne.

Ve většině případů uvidíte unimodální rozdělení, například známý tvar zvonu normálu, plochý tvar uniformy nebo sestupný nebo vzestupný tvar exponenciální nebo Paretova distribuce.

Můžete také vidět složité distribuce, například několik vrcholů, které nezmizí s různým počtem košů, označovaných jako bimodální distribuce, nebo více vrcholů, označovaných jako multimodální distribuce. Můžete také vidět velké zvýšení hustoty pro danou hodnotu nebo malý rozsah hodnot označujících odlehlé hodnoty, které se často vyskytují na konci distribuce daleko od zbytku hustoty.

Odhad parametrické hustoty

Tvar histogramu většiny náhodných vzorků bude odpovídat známému rozdělení pravděpodobnosti.

Běžné distribuce jsou běžné, protože se vyskytují znovu a znovu v různých a někdy neočekávaných doménách.

Seznamte se s běžnými pravděpodobnostními distribucemi, protože vám pomohou určit danou distribuci z histogram.

Po identifikaci se můžete pokusit odhadnout hustotu náhodné proměnné se zvoleným rozdělením pravděpodobnosti. Toho lze dosáhnout odhadem parametrů rozdělení z náhodného vzorku dat.

Například normální rozdělení má dva parametry: průměr a směrodatnou odchylku. Vzhledem k těmto dvěma parametrům nyní známe funkci rozdělení pravděpodobnosti. Tyto parametry lze odhadnout z dat výpočtem střední hodnoty vzorku a směrodatné odchylky.

Tento proces označujeme jako odhad parametrické hustoty.

Důvodem je to, že používáme předdefinované funkce abychom shrnuli vztah mezi pozorováními a jejich pravděpodobností, kterou lze ovládat nebo konfigurovat pomocí parametrů, tedy „parametrických“.

Jakmile odhadneme hustotu, můžeme zkontrolovat, zda je vhodná. To lze provést mnoha způsoby, například:

  • Vynesení funkce hustoty a porovnání tvaru s histogramem.
  • Vzorkování funkce hustoty a porovnání vygenerovaného vzorku s skutečný vzorek.
  • Pomocí statistického testu k potvrzení, že data odpovídají distribuci.

Můžeme to prokázat na příkladu.

My může generovat náhodný vzorek 1 000 pozorování z normálního rozdělení s průměrem 50 a směrodatnou odchylkou 5.

1
2
3

# vygenerovat ukázku
sample = normal (loc = 50, scale = 5, size = 1000)

Potom můžeme předstírat, že neznáme rozdělení pravděpodobnosti, a možná se podíváme na histogram a hádáme, že je to normální. Za předpokladu, že je to normální, pak můžeme vypočítat parametry rozdělení, konkrétně průměr a směrodatnou odchylku.

Neočekávali bychom, že průměr a směrodatná odchylka budou přesně 50 a 5 vzhledem k malé velikosti vzorku a šum v procesu vzorkování.

Pak přizpůsobte distribuci těmto parametrům, tzv. parametrický odhad hustoty našeho datového vzorku.

V tomto případě můžeme použít normu ( ) Funkce SciPy.

1
2
3

# definovat distribuci
dist = norma (sample_mean, sam ple_std)

Potom můžeme z této distribuce ochutnat pravděpodobnosti pro rozsah hodnot v naší doméně, v tomto případě mezi 30 a 70.

Nakonec můžeme vykreslit histogram vzorku dat a překrýt liniový graf pravděpodobností vypočítaných pro rozsah hodnot od PDF.

Důležité je, že můžeme převést počty nebo frekvence v každém zásobníku histogramu na normalizovanou pravděpodobnost, abychom zajistili, že se osa y histogramu shoduje s osou y liniového grafu. Toho lze dosáhnout nastavením argumentu „density“ na „True“ ve volání hist ().

1
2
3
4

# vykreslení histogramu a pdf
pyplot.hist (sample, bins = 10, density = True)
pyplot.plot (hodnoty, pravděpodobnosti)

Spojením těchto úryvků je kompletní příklad odhadu parametrické hustoty uveden níže.

Spuštěním příkladu se nejprve vygeneruje datový vzorek , poté odhadne parametry normální pravděpodobnosti rozdělení.

Upozorňujeme, že vaše výsledky se budou lišit vzhledem k náhodné povaze vzorku dat. Zkuste příklad spustit několikrát.

V tomto případě vidíme, že střední a standardní odchylka mají určitý šum a mírně se liší od očekávaných hodnot 50, respektive 5. Šum je malý a očekává se, že distribuce bude i nadále dobře vyhovovat.

1

průměr = 49,852 , Standardní odchylka = 5,023

Dále je formát PDF vhodný použití odhadovaných parametrů a histogramu dat s 10 přihrádkami je porovnáno s pravděpodobnostmi pro rozsah hodnot vzorkovaných z PDF.

Vidíme, že PDF je pro naše data dobrá shoda.

Histogram vzorku dat s překrytím funkce hustoty pravděpodobnosti pro normální rozdělení

Je možné, že data odpovídají běžnému rozdělení pravděpodobnosti, ale před odhadem parametrické hustoty vyžadují transformaci.

Můžete mít například hodnoty odlehlých hodnot, které jsou daleko od střední hodnota nebo těžiště distribuce. To může mít za následek nesprávné odhady distribučních parametrů a následně způsobit špatné přizpůsobení datům. Tyto odlehlé hodnoty by měly být před odhadem distribučních parametrů odstraněny.

Dalším příkladem je, že data mohou mít zkosení nebo mohou být posunuta doleva nebo doprava. V takovém případě možná budete muset data před odhadem parametrů transformovat, například převzetím logu nebo odmocniny, nebo obecněji pomocí transformace výkonu, jako je transformace Box-Cox.

Tyto typy modifikace dat nemusí být zřejmé a efektivní odhad parametrické hustoty může vyžadovat iterační proces:

  • Loop Dokud nebude distribuce k datům dostatečně dobrá:
    • 1. Odhad distribučních parametrů
    • 2. Kontrola výsledného souboru PDF s údaji
    • 3. Transformace dat, aby lépe odpovídaly distribuci

Neparametrický odhad hustoty

V některých případech nemusí vzorek dat vypadat jako běžná pravděpodobnost distribuce nebo jej nelze snadno přizpůsobit distribuci.

Toto je často případ, kdy mají data dva vrcholy (bimodální distribuce) nebo mnoho vrcholů (multimodální distribuce).

V tomto v případě, parametrický odhad hustoty není proveditelný a lze použít alternativní metody, které nepoužívají společnou distribuci. Místo toho se používá algoritmus k aproximaci rozdělení pravděpodobnosti dat bez předem definované distribuce, která se označuje jako neparametrická metoda.

Distribuce budou mít stále parametry, ale nelze je přímo řídit stejným způsobem jako jednoduché rozdělení pravděpodobnosti. Například neparametrická metoda může odhadnout hustotu pomocí všech pozorování v náhodném vzorku, což ve skutečnosti provede všechna pozorování v „parametrech“ vzorku.

Snad nejběžnější neparametrický přístup k odhadu funkce hustoty pravděpodobnosti spojitá náhodná proměnná se nazývá vyhlazování jádra neboli zkrácení odhadu hustoty jádra, zkráceně KDE.

  • Odhad hustoty jádra: Neparametrická metoda pro použití datové sady k odhadu pravděpodobnosti nových bodů.

V tomto případě je jádro matematická funkce, která vrací pravděpodobnost pro danou hodnotu náhodné proměnné. Jádro účinně vyhlazuje nebo interpoluje pravděpodobnosti v celém rozsahu výsledků pro náhodnou proměnnou tak, že součet pravděpodobností se rovná jedné, požadavek dobře vychovaných pravděpodobností.

Funkce jádra váží příspěvek pozorování ze vzorku dat na základě jejich vztahu nebo vzdálenosti k danému vzorku dotazu, pro který t Je požadována pravděpodobnost.

Parametr, který se nazývá vyhlazovací parametr nebo šířka pásma, řídí rozsah nebo okno pozorování ze vzorku dat, který přispívá k odhadu pravděpodobnosti pro daný vzorek. Odhad hustoty jádra se tak po vývojářích metody někdy označuje jako okno Parzen-Rosenblatt nebo jednoduše okno Parzen.

  • Smoothing Parameter (bandwidth): Parametr, který řídí počet vzorků nebo okno vzorků použité k odhadu pravděpodobnosti nového bodu.

Velké okno může mít za následek hrubou hustotu s malými detaily, zatímco malé okno může mít příliš mnoho podrobností a nebuďte dostatečně plynulí nebo obecní, abyste správně pokryli nové nebo neviditelné příklady.Příspěvek vzorků v okně lze tvarovat pomocí různých funkcí, někdy označovaných jako základní funkce, např. uniformní normální atd., s různými účinky na hladkost výsledné funkce hustoty.

  • Základní funkce (jádro): Zvolená funkce používaná k řízení příspěvku vzorků v datové sadě k odhadu pravděpodobnost nového bodu.

Proto může být užitečné experimentovat s různými velikostmi oken a různými funkcemi příspěvků a vyhodnotit výsledky oproti histogramům dat.

Můžeme to demonstrovat na příkladu.

Nejprve můžeme sestrojit bimodální distribuci kombinací vzorků ze dvou různých normálních distribucí. Konkrétně 300 příkladů se střední hodnotou 20 a standardní odchylkou 5 (menší vrchol) a 700 příkladů se střední hodnotou 40 a standardní odchylkou 5 (větší vrchol). Prostředky byly vybrány těsně vedle sebe, aby se zajistilo překrytí distribucí v kombinovaném vzorku.

Celý příklad vytvoření tohoto vzorku s bimodálním rozdělením pravděpodobnosti a vykreslení histogramu je uveden níže.

Spuštění příkladu vytvoří vzorek dat a vykreslí histogram.

Upozorňujeme, že vaše výsledky se budou lišit vzhledem k náhodné povaze vzorku dat. Zkuste příklad spustit několikrát.

Máme méně vzorků s průměrem 20 než vzorků s průměrem 40, což můžeme vidět na histogramu s větší hustotou vzorků kolem 40 než kolem 20.

Data s touto distribucí záměrně nezapadají do běžné pravděpodobnostní distribuce. Je to dobrý případ pro použití neparametrické metody odhadu hustoty jádra.

Histogram Plot of Data Sample S distribucí pravděpodobnosti Bimodal

Knihovna strojového učení scikit-learn poskytuje třídu KernelDensity, která implementuje odhad hustoty jádra.

Nejprve je třída konstruována s požadovanou šířkou pásma (velikost okna) a argumenty jádra (základní funkce). Je vhodné otestovat na svých datech různé konfigurace. V tomto případě zkusíme šířku pásma 2 a Gaussovo jádro.

Třída se poté vejde na vzorek dat pomocí funkce fit (). Funkce očekává, že data budou mít ve tvaru 2D tvar, proto můžeme náš vzorek dat přetvořit tak, aby měl 1 000 řádků a 1 sloupec.

1
2
3
4
5

# hustota přizpůsobení
model = KernelDensity (šířka pásma = 2, kernel = „gaussian“)
sample = sample.reshape ((len (sample), 1))
model.fit (ukázka)

Poté můžeme vyhodnotit, jak dobře odhad hustoty odpovídá našim datům, výpočtem pravděpodobností pro rozsah obs ervations a porovnání tvaru s histogramem, stejně jako jsme to udělali pro parametrický případ v předchozí části.

Funkce score_samples () na KernelDensity vypočítá pravděpodobnost protokolu pro řadu vzorků. Můžeme vytvořit rozsah vzorků od 1 do 60, o rozsahu naší domény, vypočítat pravděpodobnosti logu, poté invertovat operaci logu výpočtem exponentu nebo exp () a vrátit hodnoty do rozsahu 0-1 pro normální pravděpodobnosti .

Nakonec můžeme vytvořit histogram s normalizovanými frekvencemi a překryvnou čarou hodnot s odhadovanou pravděpodobností.

1
2
3
4
5

# vykreslí histogram a pdf
pyplot.hist (sample, bins = 50, density = True)
pyplot.plot (hodnoty, pravděpodobnosti)
pyplot.show ()

Když to spojíte dohromady, kompletní příklad odhadu hustoty jádra pro bimodální datový vzorek je uveden níže.

Spuštěním příkladu se vytvoří distribuce dat, zapadne do modelu odhadu hustoty jádra a poté se vynese histogram vzorek dat a PDF z modelu KDE.

Upozorňujeme, že vaše výsledky se budou lišit vzhledem k náhodné povaze vzorku dat. Zkuste příklad spustit několikrát.

V tomto případě vidíme, že PDF je pro histogram vhodný. Není příliš plynulý a lze jej ještě vylepšit nastavením argumentu „šířka pásma“ na 3 nebo vyšší. Experimentujte s různými hodnotami šířky pásma a funkcí jádra.

Graf funkce histogramu a hustoty pravděpodobnosti odhadovaný pomocí odhadu hustoty jádra pro vzorek bimodálních dat

Třída KernelDensity je výkonná a nepodporuje odhadování PDF pro vícerozměrná data.

Další čtení

Tato část poskytuje další zdroje k tématu, pokud se chcete dostat hlouběji.

Knihy

  • Rozpoznávání vzorů a strojové učení, 2006.
  • Strojové učení: pravděpodobnostní perspektiva, 2012.
  • Prvky statistického učení: dolování dat, odvození „and Prediction, 2009.

API

  • scipy.stats.gaussian_kde API.
  • Neparametrické metody neparametrické, Statsmodels API.
  • Odhad hustoty jádra Statsmodels Exa mple.
  • Odhad hustoty, Scikit-Learn API.

Články

  • Odhad hustoty, Wikipedia.
  • Histogram, Wikipedia.
  • Odhad hustoty jádra, Wikipedia.
  • Odhad hustoty jádra více proměnných, Wikipedia.
  • Odhad hustoty jádra metodou okna Parzen-Rosenblatt, 2014.
  • Hloubka: Odhad hustoty jádra.

Shrnutí

V tomto výukovém programu jste objevili jemný úvod do odhadu hustoty pravděpodobnosti.

Konkrétně jste se dozvěděli:

  • Grafy histogramu poskytují rychlý a spolehlivý způsob vizualizace hustoty pravděpodobnosti vzorku dat.
  • Parametrická hustota pravděpodobnosti odhad zahrnuje výběr běžné distribuce a odhad parametrů pro funkci hustoty ze vzorku dat.
  • Neparametrický odhad hustoty pravděpodobnosti zahrnuje použití techniky přizpůsobení modelu libovolnému rozdělení dat, jako je odhad hustoty jádra on.

Máte nějaké dotazy?
Zeptejte se na své dotazy v komentářích níže a já se pokusím odpovědět.

Zvládněte pravděpodobnost strojového učení!

Rozvíjejte své chápání pravděpodobnosti

… jen s několika řádky kódu v pythonu

Zjistěte, jak na to v mém novém Ebooku:
Pravděpodobnost pro strojové učení

Poskytuje samostudium výukové programy a end-to-end projekty týkající se: Bayesova věta, Bayesova optimalizace, distribuce, maximální pravděpodobnost, křížová entropie, kalibrace modelů
a mnoho dalšího …

Nakonec využijte nejistotu v Vaše projekty

Přeskočte akademické pracovníky. Jen výsledky. Podívejte se, co je uvnitř

Tweet Sdílet Sdílet

Leave a Reply

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *