Oglądając wiadomości, prawdopodobnie natknąłeś się na prognozy pogody mówiące, że szanse na opady śniegu wynoszą 75%. Czy kiedykolwiek zastanawiałeś się, jak oni to wymyślili? Albo czy wiesz, co one oznaczają? Są to skomplikowane stwierdzenia, szczególnie z perspektywy częstościowej. Możesz mieć trudności z wyjaśnieniem, czy śnieg spadnie, czy nie.
Według Bayesian, takie podejście jest wytłumaczalne i dostarczają oni rozwiązania dla tego typu stwierdzeń. Bayesowskie podejĞcie do prawdopodobieĔstwa wyjaĞnia, Īe moĪna mierzyü prawdopodobieĔstwo na podstawie wiarygodnoĞci zdarzenia. To dlatego Bayesian jest przekonany o prawdopodobieństwie zdarzenia.
W prostych słowach, Bayesianin nie jest całkowicie pewny tego, w co wierzy, ale jest pewny zdarzenia. Jednakże, jako Bayesianin, stajesz się bardziej pewny tego, w co wierzysz po zebraniu danych i zinterpretowaniu związku pomiędzy tymi danymi.

Czym jest PyMC3

PP lub programowanie probabilistyczne pozwala na kodowanie specyfikacji modeli Bayesa. PyMC3 jest open-source’ową i zaktualizowaną wersją PyMC2. PyMC3 jest frameworkiem do programowania probabilistycznego. Za pomocą PyMC3 można opisać swoje modele za pomocą wydajnej, czytelnej i intuicyjnej składni. Składnia ta jest podobna do naturalnej składni statystyków.
Framework ten pozwala na tworzenie algorytmów łańcucha Markowa Monte Carlo. Algorytmy te są narzędziem nowej generacji do próbkowania i segmentacji – na przykład, No-U-Turn Sampler, Hamilton’s self-tuning variant Monte Carlo, itp. Możesz pracować na tych próbnikach ze złożonym posterior i dystrybucją o wysokim wymiarze. Algorytmy te pomagają w pracy ze złożonymi i szczegółowymi modelami bez konieczności posiadania rozległej wiedzy i specjalizacji w skomplikowanych algorytmach.

Sieć bayesowska z PyMC3

Za pomocą modeli probabilistycznych możesz obliczać prawdopodobieństwa zdarzeń i definiować zależności pomiędzy różnymi zmiennymi. Na przykład, jeśli tworzysz model obejmujący wszystkie możliwe przypadki i prawdopodobieństwa, potrzebujesz dużej ilości danych. Sieć uprości założenia poprzez warunkową niezależność i zwiększenie efektywności wszystkich zmiennych losowych. Chociaż kroki są proste, możesz wziąć przykład z Naïve Bayes w tym przypadku.
Możesz stworzyć model, aby zachować warunkową zależność, którą już znasz wśród losowej warunkowej niezależności i zmiennych w różnych przypadkach.
Sieci bayesowskie są modelami dla grafiki probabilistycznej, przechwytując warunkową zależność, którą znasz i kierując wartościami w reprezentacji graficznej. Możesz znaleźć brakujące połączenia za pomocą niezależności warunkowych modelu.
Sieci Bayesian Networks udostępniają przydatne narzędzia, dzięki którym można wygenerować graf domeny i zwizualizować model probabilistyczny. Ponadto, pomaga to w przeglądzie relacji zmiennych losowych. Co więcej, wskazuje powód dla tych prawdopodobieństw z dowodami. Sieć bayesowska ma dwie główne zalety:
– Po pierwsze, sieć bayesowska pozwala zrozumieć, jak można stworzyć i dopasować model zgodnie z wymaganiami. Jednakże, przed wykonaniem tej czynności, należy zrozumieć koncepcję i mechanizm działania modelu.
– Po drugie, można sprawdzić wydajność modelu, gdy mamy już dane wyjściowe. Na przykład, można sprawdzić niepewność i wartości. To pomaga nam zrozumieć dokładność modelu.
Poniżej zrozumiemy, jak Python stymuluje dane za pomocą właściwości, które już posiadamy.

PyMC3 z Pythonem

Używanie Pythona do programowania probabilistycznego daje wiele korzyści. Oto kilka zalet PyMC3 z Pythonem:
– Kompatybilność z wieloma platformami
– Czytelna, czysta i ekspresyjna składnia
– Rozszerzalność o Cython, Fortron, C i C++
– Łatwa integracja z bibliotekami naukowymi
Z pomocą tych cech i jakości PyMC3, możesz łatwo napisać własny rozkład statystyczny, funkcję transformacji i próbki do analizy bayesowskiej.

Przykład zastosowania PyMC3 w Pythonie

Możesz sprawdzić następujący przykład z pomegranate, który jest pakietem Pythona. W tym przykładzie, używamy danych pacjentów COVID i palaczy, aby dowiedzieć się, ile osób wyląduje w szpitalu. Możesz zrozumieć tę koncepcję na podstawie poniższego przykładu:
import pomegranate aspg

smokeD = pg.DiscreteDistribution({“tak”: 0.25, “nie”: 0.75})
covidD = pg.DiscreteDistribution({‘tak’: 0.1, ‘nie’: 0.9})
hospitalD = pg.ConditionalProbabilityTable(
[[‘tak’, ‘tak’, ‘tak’, 0.9], [‘tak’, ‘tak’, ‘nie’, 0.1],
[“yes”, “no”, “yes”, 0.1], [“yes”, “no”, “no”, 0.9],
[“nie”, “tak”, “tak”, 0,9], [“nie”, “tak”, “nie”, 0,1],
[“nie”, “nie”, “tak”, 0,01], [“nie”, “nie”, “nie”, 0,99]],
smokeD, covidD])

smoke = pg.Node(smokeD, name=”smokeD”)
covid = pg.Node(covidD, name=”covidD”)
hospital = pg.Node(hospitalD, name=”hospitalD”)

model = pg.BayesianNetwork(“Covid Collider”)
model.add_states(smoke, covid, hospital)
model.add_edge(smoke, hospital)
model.add_edge(covid, hospital)
model.bake()
Mógłbyś wtedy obliczyć P(covid|smoking, hospital) = 0.5 za pomocą
model.predict_proba({‘smokeD’: ‘tak’, ‘hospitalD’: ‘tak’})
oraz P(covid|¬palenie, szpital)=0,91 z
model.predict_proba({‘smokeD’: ‘no’, ‘hospitalD’: ‘tak’}.

Przyszłość PyMC3

Czeka nas duża transformacja w podejściu PyMC3. Możemy teraz zebrać grafy Theano w JAX i użyć samplera MCMC opartego na JAX. Oznacza to, że możemy zmienić kodowanie backendu na JAX bez żadnych zmian w kodzie PyMC3. Co więcej, możemy wykorzystać błyskawiczne próbkowanie dla ogromnych modeli z pomocą samplerów opartych na JAX.
Niesamowitą częścią tej możliwości jest to, że nie musisz zmieniać istniejącego kodu dla modelu PyMC3, aby uruchomić swoje modele na nowoczesnym sprzęcie, nowoczesnym backendzie i samplerach opartych na JAX. Takie podejście i zmiany zapewnią niesamowitą szybkość bez dodatkowych wydatków.
Wraz z rosnącym naciskiem TF i PyTorch na wykresy dynamiczne, Python nie posiada już odpowiednich bibliotek statycznych. Co więcej, istnieje wiele korzyści z grafów statycznych w stosunku do dynamicznych. Dlatego też uważamy Theano za potężną i dojrzałą bibliotekę na przyszłość. Ten framework będzie zyskiwał coraz większą popularność w przyszłości, ponieważ można uzyskać dostęp i modyfikować wszystkie rodzaje reprezentacji grafów. Możesz wykonać Theano dla wielu nowoczesnych interfejsów backendowych.

Wnioski

PyMC3 pomaga w rozwiązywaniu podstawowych problemów związanych z wnioskowaniem i przewidywaniem statystycznym Bayesian. W tym artykule, rozumiemy PyMC3 i jego zastosowania. Ponadto, rozumiemy jak sieci bayesowskie i Python pomagają w tworzeniu zaawansowanych modeli z PyMC3.