Porovnání Gaussova procesního softwaru - Comparison of Gaussian process software
Toto je srovnání softwaru pro statistickou analýzu, které umožňuje odvodit z Gaussovské procesy často pomocí aproximace.
Tento článek je psán z pohledu Bayesovské statistiky, které mohou používat terminologii odlišnou od terminologie běžně používané v kriging. Následující část by měla vyjasnit matematicko-výpočetní význam informací uvedených v tabulce nezávisle na kontextové terminologii.
Popis sloupců
Tato část podrobně popisuje význam sloupců v tabulce níže.
Řešitelé
Tyto sloupce jsou o algoritmech použitých k řešení lineární systém definováno předchozí kovarianční matice, tj. matice vytvořená na základě vyhodnocení jádra.
- Přesný: zda obecný jsou implementovány přesné algoritmy. Tyto algoritmy jsou obvykle vhodné pouze do několika tisíc datových bodů.
- Specializované: zda specializované přesný jsou implementovány algoritmy pro konkrétní třídy problémů. Podporované specializované algoritmy lze označit jako:
- Kronecker: algoritmy pro oddělitelná jádra na datech mřížky.[1]
- Toeplitz: algoritmy pro stacionární jádra na jednotně rozmístěných datech.[2]
- Polokoule.: algoritmy pro semiseparable kovarianční matice.[3]
- Řídké: algoritmy optimalizované pro řídký kovarianční matice.
- Blok: algoritmy optimalizované pro úhlopříčka bloku kovarianční matice.
- Přibližný: zda obecné nebo specializované jsou implementovány přibližné algoritmy. Podporované přibližné algoritmy lze označit jako:
- Řídké: algoritmy založené na výběru sady „indukujících bodů“ ve vstupním prostoru.[4]
- Hierarchický: algoritmy, které aproximují kovarianční matici pomocí a hierarchická matice.[5]
Vstup
Tyto sloupce jsou o bodech, ve kterých je Gaussův proces vyhodnocován, tj. pokud je proces .
- ND: zda je podporován vícerozměrný vstup. Pokud ano, vícerozměrný výstup je vždy možný přidáním dimenze ke vstupu, a to i bez přímé podpory.
- Nereálné: zda libovolné ne-nemovitý vstup je podporován (například text nebo komplexní čísla ).
Výstup
Tyto sloupce jsou o hodnotách získaných procesem a o tom, jak jsou spojeny s daty použitými ve fitku.
- Pravděpodobnost: zda libovolné ne-Gaussian pravděpodobnosti jsou podporovány.
- Chyby: zda jsou pro Gaussovu pravděpodobnost podporovány libovolné nejednotné korelované chyby na datových bodech. Chyby lze řešit ručně přidáním komponenty jádra, tento sloupec je o možnosti manipulovat s nimi samostatně. Podpora částečných chyb může být označena jako:
- iid: datové body musí být nezávislé a identicky distribuované.
- Nesouvisí: datové body musí být nezávislé, ale mohou mít různé distribuce.
- Stacionární: datové body lze korelovat, ale kovarianční matice musí být a Toeplitzova matice To zejména znamená, že odchylky musí být jednotné.
Hyperparametry
Tyto sloupce jsou o hledání hodnot proměnných, které nějakým způsobem vstupují do definice konkrétního problému, ale které nelze odvodit z Gaussova procesu, například parametry ve vzorci jádra.
- Prior: zda specifikovat libovolně hyperprioři na hyperparametry je podporován.
- Zadní: zda je odhad zadních stran podporován dále bodový odhad, případně ve spojení s jiným softwarem.
Pokud buňky „Prior“ i „Posterior“ obsahují „Manually“, software poskytuje rozhraní pro výpočet mezní věrohodnosti a jejích gradientů hyperparametrů w.r.t, které lze přenést do algoritmu optimalizace / vzorkování, např. klesání nebo Markovský řetězec Monte Carlo.
Lineární transformace
Tyto sloupce pojednávají o možnosti současného přizpůsobení datových bodů procesu a jeho lineární transformaci.
- Deriv.: zda je možné u libovolného rozlišitelného jádra přijmout libovolný počet derivátů až do maxima povoleného plynulostí jádra. Příkladem dílčích specifikací může být maximální odvozitelnost nebo implementace pouze pro některá jádra. Integrály lze získat nepřímo z derivátů.
- Konečný: zda konečný libovolný lineární transformace jsou povoleny na zadaných datových bodech.
- Součet: zda je možné sčítat různá jádra a přistupovat samostatně k procesům odpovídajícím každému dodatku. Jedná se o konkrétní případ konečné lineární transformace, ale je uveden samostatně, protože se jedná o společný znak.
Srovnávací tabulka
název | Licence | Jazyk | Řešitelé | Vstup | Výstup | Hyperparametry | Lineární transformace | název | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Přesný | Specializované | Přibližný | ND | Nereálné | Pravděpodobnost | Chyby | Prior | Zadní | Deriv. | Konečný | Součet | ||||
PyMC3 | Apache | Krajta | Ano | Kronecker | Řídké | ND | Ne | Žádný | Souvisí | Ano | Ano | Ne | Ano | Ano | PyMC3 |
GPvecchia | GNU GPL | R | Ano | Ne | Řídké, hierarchické | Ne | Ne | Exponenciální rodina | Souvisí | Ne | Ne | Ne | Ano | Ano | GPvecchia |
GpGp | MIT | R | Ne | Ne | Řídké | ND | Ne | Gaussian | Souvisí | Ano | Ano | Ne | Ano | Ano | GpGp |
GPy[6] | BSD | Krajta | Ano | Ne | Řídké | ND | Ne | Mnoho | Nesouvisí | Ano | Ano | Ne | Ne | Ne | GPy |
pyGPs[7] | BSD | Krajta | Ano | Ne | Řídké | ND | Grafy, ručně | Bernoulli | iid | Ručně | Ručně | Ne | Ne | Ne | pyGPs |
Stan | BSD, GPL | Zvyk | Ano | Ne | Ne | ND | Ne | Žádný | Souvisí | Ano | Ano | Ne | Ano | Ano | Stan |
GPyTorch[8] | MIT | Krajta | Ano | Ne | Řídké | ND | Ne | Bernoulli | Ne | První RBF | GPyTorch | ||||
GPML[9][10] | BSD | MATLAB | Ano | Ne | Řídké | ND | Ne | Mnoho | iid | Ručně | Ručně | Ne | Ne | Ne | GPML |
fbm[10] | Volný, uvolnit | C | Ano | Ne | Ne | ND | Ne | Bernoulli, Poisson | Nekorelované, stacionární | Mnoho | Ano | Ne | fbm | ||
gptk | BSD | R | Ano | Blok? | Řídké | ND | Ne | Gaussian | Ne | Ručně | Ručně | Ne | Ne | Ne | gptk |
SuperGauss | GNU GPL | R, C ++ | Ne | Toeplitz[A] | Ne | 1D | Ne | Gaussian | Ne | Ručně | Ručně | Ne | Ne | Ne | SuperGauss |
celerit[3] | MIT | Krajta, Julie, C ++ | Ne | Polokoule.[b] | Ne | 1D | Ne | Gaussian | Nesouvisí | Ručně | Ručně | Ne | Ne | celerit | |
Jiří | MIT | Krajta, C ++ | Ano | Ne | Hierarchický | ND | Ne | Gaussian | Nesouvisí | Ručně | Ručně | Ne | Ne | Ručně | Jiří |
neurální tečny[11][C] | Apache | Krajta | Ano | Blokovat, Kronecker | Ne | Ne | Gaussian | Ne | Ne | Ne | Ne | Ne | Ne | neurální tečny | |
STK | GNU GPL | MATLAB | Ano | Ne | Ne | ND | Ne | Gaussian | Nesouvisí | Ručně | Ručně | Ne | Ne | Ručně | STK |
UQLab[12] | Proprietární | MATLAB | UQLab | ||||||||||||
ooDACE[13] | Proprietární | MATLAB | ND | Ne | ooDACE | ||||||||||
GPstuff[10] | GNU GPL | MATLAB, R | Ano | Ne | Řídké | ND | Ne | Mnoho | Mnoho | Ano | První RBF | GPstuff | |||
GSTools | GNU LGPL | Krajta | Ano | Ne | Ne | ND | Ne | Gaussian | Ne | Ne | Ne | Ne | Ne | Ne | GSTools |
GPR | Apache | C ++ | Ano | Ne | Řídké | ND | Ne | Gaussian | iid | Někteří, ručně | Ručně | za prvé | Ne | Ne | GPR |
scikit-učit se | BSD | Krajta | Ano | Ne | Ne | 1D | Ne | Bernoulli | scikit-učit se | ||||||
PyKrige | BSD | Krajta | 2D, 3D | Ne | PyKrige | ||||||||||
GPflow[6] | Apache | Krajta | Ano | Ne | Řídké | Mnoho | Ano | Ano | GPflow | ||||||
název | Licence | Jazyk | Přesný | Specializované | Přibližný | ND | Nereálné | Pravděpodobnost | Chyby | Prior | Zadní | Deriv. | Konečný | Součet | název |
Řešitelé | Vstup | Výstup | Hyperparametry | Lineární transformace |
Poznámky
- ^ SuperGauss implementuje superrychlou Řešič Toeplitz s výpočetní složitostí .
- ^ celerite implementuje pouze specifickou subalgebru jader, kterou lze vyřešit v .[3]
- ^ neurální tangenty je specializovaný balíček pro nekonečně široké neurální sítě.
Reference
- ^ P. Cunningham, John; Gilboa, Elad; Saatçi, Yunus (únor 2015). "Škálování vícerozměrného závěru pro strukturované gaussovské procesy". Transakce IEEE na analýze vzorů a strojové inteligenci. 37 (2): 424–436. doi:10.1109 / TPAMI.2013.192. PMID 26353252. S2CID 6878550.
- ^ Leith, D. J .; Zhang, Yunong; Leithead, W. E. (2005). „Časová řada Gaussovy regrese procesů na základě Toeplitzova výpočtu operací O (N2) a úložiště na úrovni O (N)“. Sborník 44. konference IEEE o rozhodování a kontrole: 3711–3716. doi:10.1109 / CDC.2005.1582739. S2CID 13627455.
- ^ A b C Foreman-Mackey, Daniel; Angus, Ruth; Agol, Eric; Ambikasaran, Sivaram (9. listopadu 2017). "Rychlé a škálovatelné Gaussovské modelování procesů s aplikacemi pro astronomické časové řady". Astronomický deník. 154 (6): 220. arXiv:1703.09710. Bibcode:2017AJ .... 154..220F. doi:10,3847 / 1538-3881 / aa9332. S2CID 88521913.
- ^ Quiñonero-Candela, Joaquin; Rasmussen, Carl Edward (5. prosince 2005). „Sjednocující pohled na řídkou přibližnou regresi Gaussova procesu“. Journal of Machine Learning Research. 6: 1939–1959. Citováno 23. května 2020.
- ^ Ambikasaran, S .; Foreman-Mackey, D .; Greengard, L .; Hogg, D. W .; O’Neil, M. (1. února 2016). "Rychlé přímé metody pro gaussovské procesy". Transakce IEEE na analýze vzorů a strojové inteligenci. 38 (2): 252–265. arXiv:1403.6015. doi:10.1109 / TPAMI.2015.2448083. PMID 26761732. S2CID 15206293.
- ^ A b Matthews, Alexander G. de G .; van der Wilk, Mark; Nickson, Tom; Fujii, Keisuke; Boukouvalas, Alexis; León-Villagrá, Pablo; Ghahramani, Zoubin; Hensman, James (duben 2017). „GPflow: Gaussova procesní knihovna využívající TensorFlow“. Journal of Machine Learning Research. 18 (40): 1–6. arXiv:1610.08733. Citováno 6. července 2020.
- ^ Neumann, Marion; Huang, Shan; E. Marthaler, Daniel; Kersting, Kristian (2015). „pyGPs - knihovna v Pythonu pro regresi a klasifikaci gaussovských procesů“. Journal of Machine Learning Research. 16: 2611–2616.
- ^ Gardner, Jacob R; Pleiss, Geoff; Bindel, David; Weinberger, Kilian Q; Wilson, Andrew Gordon (2018). „GPyTorch: Blackbox Matrix-Matrix Gaussian Process Inference with GPU Acceleration“ (PDF). Pokroky v systémech zpracování neurálních informací. 31: 7576–7586. arXiv:1809.11165. Citováno 23. května 2020.
- ^ Rasmussen, Carl Edward; Nickisch, Hannes (listopad 2010). Msgstr "Gaussovské procesy pro strojové učení (GPML), sada nástrojů". Journal of Machine Learning Research. 11 (2): 3011–3015. doi:10.1016/0002-9610(74)90157-3. PMID 4204594.
- ^ A b C Vanhatalo, Jarno; Riihimäki, Jaakko; Hartikainen, Jouni; Jylänki, Pasi; Tolvanen, Ville; Vehtari, Aki (duben 2013). „GPstuff: Bayesian Modeling with Gaussian Processes“. Journal of Machine Learning Research. 14: 1175−1179. Citováno 23. května 2020.
- ^ Novak, Roman; Xiao, Lechao; Hron, Jiří; Lee, Jaehoon; Alemi, Alexander A .; Sohl-Dickstein, Jascha; Schoenholz, Samuel S. (2020). „Neural Tangents: Fast and Easy Infinite Neural Networks in Python“. Mezinárodní konference o vzdělávacích reprezentacích. arXiv:1912.02803.
- ^ Marelli, Stefano; Sudret, Bruno (2014). „UQLab: rámec pro kvantifikaci nejistoty v MATLABu“ (PDF). Zranitelnost, nejistota a riziko. Kvantifikace, zmírnění a správa: 2554–2563. doi:10,3929 / ethz-a-010238238. Citováno 28. května 2020.
- ^ Couckuyt, Ivo; Dhaene, Tom; Demeester, Piet (2014). „ooDACE sada nástrojů: flexibilní objektově orientovaná implementace Krigingu“ (PDF). Journal of Machine Learning Research. 15: 3183–3186. Citováno 8. července 2020.