Tijdens het kijken naar het nieuws bent u vast wel eens weersvoorspellingen tegengekomen waarin staat dat de kans op sneeuwval 75% is. Heb je je ooit afgevraagd hoe ze aan dit percentage komen? Of weet u wat ze bedoelen? Dit zijn ingewikkelde uitspraken, vooral vanuit het perspectief van frequentisten. Je vindt het misschien moeilijk om uit te leggen of er al dan niet sneeuw zal vallen.
Volgens Bayesianen is deze benadering verklaarbaar, en zij bieden een oplossing voor dit soort uitspraken. De Bayesiaanse benadering van kansberekening legt uit dat je kansberekening kunt baseren op de geloofwaardigheid van een gebeurtenis. Daarom zijn Bayesianen zeker over de waarschijnlijkheid van een gebeurtenis.
In eenvoudige woorden: een Bayesiaan is niet helemaal zeker van wat hij gelooft, maar hij heeft wel vertrouwen in de gebeurtenis. Als Bayesiaan krijg je echter meer vertrouwen in wat je gelooft na het verzamelen van de gegevens en het interpreteren van het verband tussen die gegevens.

Wat is PyMC3

Met PP of probabilistisch programmeren kun je de specificatie van Bayesiaanse modellen coderen. PyMC3 is een open-source en bijgewerkte versie van PyMC2. PyMC3 is een raamwerk voor probabilistisch programmeren. Met behulp van het PyMC3 framework kunt u uw modellen beschrijven met een krachtige, leesbare en intuïtieve syntaxis. De syntaxis is vergelijkbaar met de natuurlijke syntaxis van statistici.
Met dit raamwerk kunt u Markov chain Monte Carlo algoritmen uitvoeren. Deze algoritmen zijn een instrument van de volgende generatie voor bemonstering en segmentatie-bijvoorbeeld No-U-Turn Sampler, Hamilton’s zelf-afstemmende variant Monte Carlo, enz. U kunt met deze samplers werken met de complexe posterior en hoogdimensionale verdeling. Deze algoritmen helpen u met complexe en gedetailleerde modellen zonder de noodzaak van uitgebreide kennis en specialisatie in ingewikkelde algoritmen.

Bayesiaans Netwerk met PyMC3

U kunt de waarschijnlijkheden van een gebeurtenis berekenen en de relatie tussen verschillende variabelen definiëren met behulp van probabilistische modellen. Als u bijvoorbeeld een model maakt dat alle mogelijke gevallen en waarschijnlijkheden omvat, hebt u grote hoeveelheden gegevens nodig. Het netwerk zal de veronderstellingen vereenvoudigen door voorwaardelijke onafhankelijkheid en de effectiviteit van alle willekeurige variabelen te vergroten. Hoewel de stappen eenvoudig zijn, kunt u in dit geval het voorbeeld van Naïve Bayes nemen.
U kunt een model maken om de voorwaardelijke afhankelijkheid die u al kent tussen willekeurige voorwaardelijke onafhankelijkheid en variabelen in verschillende gevallen te behouden.
Bayesiaanse netwerken zijn modellen voor probabilistische grafieken, waarin de voorwaardelijke afhankelijkheid die u kent wordt vastgelegd en de waarden in een grafische voorstelling worden gestuurd. U kunt de ontbrekende verbanden vinden met behulp van de voorwaardelijke afhankelijkheden van het model.
Bayesiaanse Netwerken stellen u in staat om met nuttige hulpmiddelen de grafiek van het domein te genereren en het probabilistische model te visualiseren. Bovendien helpt het u om de relatie van uw willekeurige variabelen te herzien. Bovendien geeft het de reden voor deze waarschijnlijkheden aan met bewijzen. Het Bayesiaans netwerk heeft twee grote voordelen:
– Ten eerste stelt het Bayesiaans netwerk u in staat te begrijpen hoe u uw model kunt opstellen en inpassen volgens uw vereiste. Alvorens deze activiteit uit te voeren, moet u echter het concept en het werkingsmechanisme achter het model begrijpen.
– Ten tweede kunt u de prestaties van het model controleren wanneer u al over de uitvoergegevens beschikt. U kunt bijvoorbeeld de onzekerheid en de waarden controleren. Dit helpt ons de nauwkeurigheid van het model te begrijpen.
Hieronder zullen we begrijpen hoe Python uw gegevens stimuleert met behulp van eigenschappen die we al hebben.

PyMC3 met Python

Het gebruik van Python voor Probabilistisch programmeren geeft u tal van voordelen. Hier zijn enkele voordelen van PyMC3 met Python:
– Compatibiliteit met meerdere platformen
– Leesbare, schone en expressieve syntaxis
– Uitbreidbaarheid met Cython, Fortron, C, en C++
– Eenvoudige integratie met wetenschappelijke bibliotheken
Met behulp van deze eigenschappen en de kwaliteit van PyMC3, kunt u gemakkelijk aangepaste statistische verdelingen, transformatiefuncties en steekproeven schrijven voor Bayesiaanse analyse.

Voorbeeld van PyMC3 met Python

U kunt het volgende voorbeeld bekijken van pomegranate, wat een Python pakket is. In dit voorbeeld gebruiken we de gegevens van COVID-patiënten en rokers om uit te zoeken hoeveel mensen in het ziekenhuis zullen belanden. U kunt het concept begrijpen uit het volgende voorbeeld:
import pomegranate aspg

smokeD = pg.DiscreteDistributie({‘ja’: 0.25, ‘nee’: 0.75})
covidD = pg.DiscreteDistribution({‘ja’: 0.1, ‘neen’: 0.9})
hospitalD = pg.ConditionalProbabilityTable(
[‘ja’, ‘ja’, ‘ja’, 0.9], [‘ja’, ‘ja’, ‘nee’, 0.1],
[‘ja’, ‘nee’, ‘ja’, 0.1], [‘ja’, ‘nee’, ‘nee’, 0.9],
[‘nee’, ‘ja’, ‘ja’, 0.9], [‘nee’, ‘ja’, ‘nee’, 0.1],
[‘nee’, ‘nee’, ‘ja’, 0.01], [‘nee’, ‘nee’, ‘nee’, 0.99],
[smokeD, covidD])

smoke = pg.Node(smokeD, name=”smokeD”)
covid = pg.Node(covidD, name=”covidD”)
ziekenhuis = pg.Node(ziekenhuisD, name=”ziekenhuisD”)

model = pg.BayesiaansNetwerk(“Covid Collider”)
model.add_states(smoke, covid, ziekenhuis)
model.add_edge(smoke, ziekenhuis)
model.add_edge(covid, ziekenhuis)
model.bakken()
U zou dan P(covid|roken, ziekenhuis) = 0.5 kunnen berekenen met
model.predict_proba({‘smokeD’: ‘ja’, ‘hospitalD’: ‘ja’})
en P(covid|roken, ziekenhuis)=0.91 met
model.predict_proba({‘smokeD’: ‘nee’, ‘ziekenhuisD’: ‘ja’}

Toekomst van PyMC3

We wachten op een grote transformatie in de PyMC3 aanpak. We kunnen nu de Theano-grafieken verzamelen in JAX en een MCMC-sampler gebruiken die gebaseerd is op JAX. Dit betekent dat we de backend codering kunnen veranderen in JAX zonder enige verandering in PyMC3 codes. Bovendien kunnen we bliksemsnelle sampling gebruiken voor enorme modellen met de hulp van JAX-gebaseerde samplers.
Het verbazingwekkende aan deze mogelijkheid is dat je de bestaande code voor het PyMC3 model niet hoeft te veranderen om je modellen te laten draaien op moderne hardware, moderne backend, en op JAX gebaseerde samplers. Deze aanpak en verandering zal een verbazingwekkende snelheid opleveren zonder extra kosten.
Met de toenemende focus van TF en PyTorch op dynamische grafieken, heeft Python niet langer adequate statische bibliotheken. Bovendien zijn er talrijke voordelen van statische boven dynamische grafieken. Daarom beschouwen wij Theano als een krachtige en volwassen bibliotheek voor de toekomst. Dit framework zal in de toekomst meer tractie krijgen omdat je allerlei soorten grafiekrepresentaties kunt benaderen en wijzigen. Je kunt Theano uitvoeren voor tal van moderne backend interfaces.

Conclusie

PyMC3 helpt u bij het oplossen van Bayesiaanse statistische voorspellingen en inferentie problemen. In dit artikel begrijpen we PyMC3 en het gebruik ervan. Verder begrijpen we hoe Bayesiaanse netwerken en Python u helpen om een verfijnd model te maken met PyMC3.