Wenn Sie die Nachrichten sehen, haben Sie wahrscheinlich schon Wettervorhersagen gesehen, die besagen, dass die Wahrscheinlichkeit von Schneefall 75% beträgt. Haben Sie sich jemals gefragt, wie sie auf diesen Prozentsatz kommen? Oder wissen Sie, was sie meinen? Das sind komplizierte Aussagen, vor allem aus der Sicht des Frequentisten. Sie können schwer erklären, ob Schnee fallen wird oder nicht.
Laut Bayesianer ist dieser Ansatz erklärbar, und sie bieten eine Lösung für diese Art von Aussagen. Der Ansatz der Bayesianer zur Wahrscheinlichkeit erklärt, dass man die Wahrscheinlichkeit basierend auf der Glaubwürdigkeit eines Ereignisses messen kann. Das ist der Grund, warum Bayesianer von der Wahrscheinlichkeit eines Ereignisses überzeugt sind.
In einfachen Worten, ein Bayesianer ist sich nicht völlig sicher, was er glaubt, aber er ist zuversichtlich, was das Ereignis betrifft. Wie auch immer, als Bayesianer wird man zuversichtlicher über das, was man glaubt, nachdem man die Daten gesammelt und die Verbindung zwischen diesen Daten interpretiert hat.

Was ist PyMC3

PP oder probabilistische Programmierung ermöglicht es Ihnen, die Spezifikation von Bayes’schen Modellen zu codieren. PyMC3 ist eine Open-Source und aktualisierte Version von PyMC2. PyMC3 ist ein Framework für probabilistische Programmierung. Mit Hilfe des PyMC3-Frameworks können Sie Ihre Modelle mit einer leistungsfähigen, lesbaren und intuitiven Syntax beschreiben. Die Syntax ist ähnlich der natürlichen Syntax von Statistikern.
Dieses Framework ermöglicht es Ihnen, Markov-Chain-Monte-Carlo-Algorithmen zu verwenden. Diese Algorithmen sind ein Werkzeug der nächsten Generation für Sampling und Segmentierung – z. B. No-U-Turn Sampler, Hamiltons selbstoptimierende Variante Monte Carlo, usw. Sie können mit diesen Samplern mit dem komplexen Posterior und der hochdimensionalen Verteilung arbeiten. Diese Algorithmen helfen Ihnen bei komplexen und detaillierten Modellen, ohne dass Sie umfangreiche Kenntnisse und Spezialisierung in komplizierten Algorithmen benötigen.

Bayes’sches Netzwerk mit PyMC3

Sie können die Wahrscheinlichkeiten des Ereignisses berechnen und die Beziehung zwischen verschiedenen Variablen mit Hilfe von probabilistischen Modellen definieren. Wenn Sie z.B. ein Modell erstellen, das alle möglichen Fälle und Wahrscheinlichkeiten abdeckt, benötigen Sie große Mengen an Daten. Das Netzwerk wird die Annahmen durch die bedingte Unabhängigkeit und die Erhöhung der Wirksamkeit aller Zufallsvariablen vereinfachen. Obwohl die Schritte einfach sind, können Sie sich in diesem Fall am Beispiel von Naïve Bayes orientieren.
Sie können ein Modell erstellen, um die bereits bekannten bedingten Abhängigkeiten zwischen den Zufallsvariablen und der bedingten Unabhängigkeit in verschiedenen Fällen zu erhalten.
Bayes’sche Netze sind Modelle für probabilistische Grafiken, die die bedingte Abhängigkeit, die Sie kennen, erfassen und die Werte in eine grafische Darstellung lenken. Mit Hilfe der bedingten Abhängigkeiten des Modells können Sie die fehlenden Zusammenhänge finden.
Mit Bayes’schen Netzen stehen Ihnen nützliche Werkzeuge zur Verfügung, mit denen Sie den Graphen der Domäne erzeugen und das probabilistische Modell visualisieren können. Außerdem hilft es Ihnen, die Beziehung Ihrer Zufallsvariablen zu überprüfen. Außerdem gibt es den Grund für diese Wahrscheinlichkeiten mit Beweisen an. Das Bayes’sche Netzwerk hat zwei große Vorteile:
– Erstens ermöglicht Ihnen das Bayes’sche Netzwerk zu verstehen, wie Sie Ihr Modell entsprechend Ihrer Anforderung erstellen und anpassen können. Bevor Sie diese Tätigkeit ausführen, müssen Sie jedoch das Konzept und den Arbeitsmechanismus hinter dem Modell verstehen.
– Zweitens können Sie die Leistung des Modells überprüfen, wenn Sie bereits die Ausgabedaten haben. Zum Beispiel können Sie die Unsicherheit und die Werte überprüfen. Dies hilft uns, die Genauigkeit des Modells zu verstehen.
Im Folgenden werden wir verstehen, wie Python die Daten mit Hilfe von Eigenschaften, die wir bereits haben, anregt.

PyMC3 mit Python

Die Verwendung von Python für probabilistische Programmierung bietet Ihnen zahlreiche Vorteile. Hier sind einige Vorteile von PyMC3 mit Python:
– Kompatibilität mit mehreren Plattformen
– Lesbare, saubere und ausdrucksstarke Syntax
– Erweiterbarkeit mit Cython, Fortron, C, und C++
– Einfache Integration mit wissenschaftlichen Bibliotheken
Mit Hilfe dieser Eigenschaften und der Qualität von PyMC3 können Sie leicht eigene statistische Verteilungen, Transformationsfunktionen und Stichproben für die Bayes’sche Analyse schreiben.

Beispiel von PyMC3 mit Python

Sie können das folgende Beispiel von pomegranate, einem Python-Paket, überprüfen. In diesem Beispiel verwenden wir die Daten von COVID-Patienten und Rauchern, um herauszufinden, wie viele Personen im Krankenhaus landen werden. Sie können das Konzept anhand des folgenden Beispiels verstehen:
import pg.aspg

smokeD = pg.DiscreteDistribution({‘ja’: 0.25, ‘nein’: 0.75})
covidD = pg.DiscreteDistribution({‘yes’: 0.1, ‘no’: 0.9})
hospitalD = pg.ConditionalProbabilityTable(
[[‘ja’, ‘ja’, ‘ja’, 0.9], [‘ja’, ‘ja’, ‘nein’, 0.1],
[‘ja’, ‘nein’, ‘ja’, 0,1], [‘ja’, ‘nein’, ‘nein’, 0,9],
[‘nein’, ‘ja’, ‘ja’, 0,9], [‘nein’, ‘ja’, ‘nein’, 0,1],
[‘nein’, ‘nein’, ‘ja’, 0,01], [‘nein’, ‘nein’, ‘nein’, 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(rauch, covid, krankenhaus)
model.add_edge(rauch, krankenhaus)
model.add_edge(covid, Krankenhaus)
model.bake()
Sie könnten dann P(covid|Rauchen, Krankenhaus) = 0,5 berechnen mit
model.predict_proba({‘rauchenD’: ‘ja’, ‘krankenhausD’: ‘ja’})
und P(covid|¬Rauchen, Krankenhaus)=0,91 mit
model.predict_proba({‘rauchenD’: ‘nein’, ‘krankenhausD’: ‘ja’})

Zukunft von PyMC3

Wir erwarten eine große Veränderung im PyMC3-Ansatz. Wir können nun die Theano-Graphen in JAX sammeln und einen MCMC-Sampler verwenden, der auf JAX basiert. Das bedeutet, dass wir die Backend-Codierung auf JAX umstellen können, ohne irgendwelche Änderungen in den PyMC3-Codes. Außerdem können wir mit Hilfe von JAX-basierten Samplern blitzschnelles Sampling für große Modelle nutzen.
Das Erstaunliche an dieser Möglichkeit ist, dass Sie den bestehenden Code für das PyMC3-Modell nicht ändern müssen, um Ihre Modelle auf moderner Hardware, modernem Backend und JAX-basierten Samplern laufen zu lassen. Diese Herangehensweise und Änderung sorgt für erstaunliche Geschwindigkeit ohne zusätzlichen Aufwand.
Mit dem zunehmenden Fokus von TF und PyTorch auf dynamische Graphen verfügt Python nicht mehr über adäquate statische Bibliotheken. Außerdem gibt es zahlreiche Vorteile von statischen gegenüber dynamischen Graphen. Deshalb halten wir Theano für eine leistungsfähige und ausgereifte Bibliothek für die Zukunft. Dieses Framework wird in Zukunft noch mehr an Zugkraft gewinnen, da Sie auf alle Arten von Graphenrepräsentationen zugreifen und diese verändern können. Sie können Theano für zahlreiche moderne Backend-Schnittstellen einsetzen.

Fazit

PyMC3 hilft Ihnen bei der Lösung grundlegender statistischer Bayes’scher Vorhersagen und Inferenzprobleme. In diesem Artikel haben wir PyMC3 und seine Anwendungen verstanden. Außerdem verstehen wir, wie Bayes’sche Netze und Python Ihnen helfen, ein anspruchsvolles Modell mit PyMC3 zu erstellen.