Im Bestreben von Novonesis, die Leistungsfähigkeit industrieller Hefeprodukte unter spezifischen Kundenbedingungen zu verstehen, zeichnen sich unsere Anwendungsforschungs- und Entwicklungsgruppen durch die Generierung aussagekräftiger Datensätze für das Screening vielversprechender Hefekandidaten im Kundenmaßstab aus. Wissenschaftler nutzen regelmäßig statistische Methoden, um komplexe Fragestellungen im Zusammenhang mit allgemeinen und spezifischen Kundenszenarien zu beantworten.
Die Integration Bayes'scher Methoden in Python-Bibliotheken hat unsere Möglichkeiten zur Modellberechnung und datenbasierten Entscheidungsfindung auf Basis von Wahrscheinlichkeiten deutlich verbessert, selbst wenn keine statistisch signifikanten Ergebnisse vorliegen. Die neuen Funktionen in JMP 18 ermöglichen zudem die nahtlose Integration mit Python und befähigen unsere Wissenschaftler, große Datensätze zu generieren und kundenspezifische Anfragen direkt in JMP zu bearbeiten. Durch die Nutzung von Anwendungsforschungsdaten, Kundendaten aus Tests und Vorinformationen wollen wir unsere Entscheidungen künftig auf fundierten Daten und Bayes'scher Statistik basieren, anstatt uns auf statistisch nicht signifikante Trends zu stützen. Dieser Ansatz zielt darauf ab, ein umfassenderes Verständnis und eine präzisere Quantifizierung der Leistung zu ermöglichen und letztendlich zu fundierteren Entscheidungen zu führen.
Hallo, mein Name ist Matt Watts. Ich bin leitender Wissenschaftler bei Novonesis und arbeite im Bereich Bioenergie sowie Forschung und Entwicklung. Bioenergie bedeutet hier im Wesentlichen die Umwandlung von Mais in Ethanol. In meiner Funktion bin ich für die Hefen und Skarifizierungsenzyme verantwortlich, die diesen Prozess effizient gestalten und unseren Kunden die höchstmögliche Ausbeute sichern.
Heute freue ich mich, Ihnen etwas darüber zu erzählen, wie wir Bayes'sche Analysen bzw. Statistiken nutzen, um datenbasierte Entscheidungen zu treffen. Wir werden uns zunächst mit den Grundlagen der Bayes'schen Statistik befassen. Sie ist für mich noch relativ neu. Ich habe mich im letzten Jahr intensiv damit auseinandergesetzt. Ich bin zwar kein Experte auf diesem Gebiet, aber ich lerne ständig dazu. Mit JMP18 wurde die Python-Integration nochmals verbessert. Wir werden uns einige Erkenntnisse und Erfahrungen mit dieser Integration ansehen und aufzeigen, wie sie sich verbessert hat, aber auch auf einige Dinge, die anfangs etwas schwierig waren.
Eine Einführung in die Bayes'sche Statistik. Im Kern geht es darum, Wahrscheinlichkeitsaussagen zu formulieren, um bessere datenbasierte Entscheidungen zu treffen. Sie ist besonders nützlich, da man Schätzungen mit Vorwissen durchführen kann. So lassen sich beispielsweise verschiedene Variablen auf Basis von Vorinformationen einschränken, etwa dass der Ethanolgehalt niemals unter null sinken kann. Dies ist besonders wichtig bei der Modellierung und anderen Anwendungen, für die die Bayes'sche Statistik sehr gute Ergebnisse liefert.
Ich habe einen Kurs von Richard McElreath erwähnt. Er heißt „Statistical Rethinking“ und ist unten rechts auf der Folie verlinkt. Der Link ist leider nicht anklickbar, aber ich hoffe, Sie können ihn trotzdem sehen. Er ist recht kurz. Mir hat er sehr geholfen, die Bayes'sche Statistik zu verstehen, und wir werden uns gleich ein Beispiel aus diesem Kurs ansehen, um den Bayes'schen Arbeitsablauf zu veranschaulichen. Das hilft Ihnen, die Vorgehensweise bei der Anwendung der Bayes'schen Methodik besser zu verstehen.
Hier betrachten wir ein Beispiel zur Bestimmung des Anteils der Erdoberfläche, der von Wasser bedeckt ist. Dazu folgen wir einem Bayes'schen Arbeitsablauf, der auf der rechten Seite dargestellt ist. Man kann es sich wie bei einem Künstler vorstellen. Ein Künstler zeichnet nicht einfach von einem leeren Blatt Papier eine fertige Eule. Er durchläuft verschiedene Schritte, um mehr Details hinzuzufügen. Er beginnt mit den Formen, dann folgen die Linien, die Augenstruktur, die Federn und so weiter.
Dies ist besonders wichtig, wenn man den Bayes'schen Workflow betrachtet. Im ersten Schritt wird ein generatives oder kausales Modell zur Auswahl von Land- oder Wasserflächen definiert. Wir können einfach eine Weltkugel nehmen und mehrere Stichproben ziehen, um so Land- oder Wasserflächen zu bestimmen. Im zweiten Schritt wird eine Schätzung definiert. Diese Schätzung gibt an, wie hoch der Anteil der von Wasser bedeckten Erdoberfläche ist. Im dritten Schritt werden wir detailliertere Informationen gewinnen. Dazu entwickeln wir ein statistisches Modell, das anhand mehrerer Land- oder Wasserstichproben eine Schätzung dieses Anteils liefert.
Hier wird es für die Bayes'sche Statistik richtig schwierig, denn man benötigt möglicherweise für jede gewünschte Schätzung ein anderes statistisches Modell. Man muss umfassende Kenntnisse über statistische Modelle besitzen, ihre Aussagekraft verstehen und wissen, wie sie zusammenwirken, um die gewünschten Informationen zu liefern. Ich habe viele hilfreiche Quellen gefunden, auf die ich später noch eingehen werde.
In Schritt drei testen wir im Grunde genommen… Genauer gesagt, in Schritt vier. In Schritt vier fügen wir nun weitere Details hinzu. Wir testen das statistische Modell mithilfe unseres generativen Modells. Das ist im Prinzip das, was wir zu Beginn gemacht haben, indem wir einfach die Weltkugel ausgewählt haben. Wir geben diese Stichproben in das statistische Modell ein und prüfen, ob wir denselben Anteil der mit Wasser bedeckten Weltkugel erhalten. Wenn das funktioniert und plausibel ist, können wir das statistische Modell beliebig oft testen.
Normalerweise wiederholen wir diesen Vorgang 10.000 Mal über mehrere Ketten hinweg, wodurch wir eine A-posteriori-Verteilung erhalten. Diese A-posteriori-Verteilung hilft uns, die Wahrscheinlichkeit für den Anteil der Erdoberfläche zu bestimmen, der mit Wasser bedeckt ist. In dieser Grafik sehen wir, dass die höchste Wahrscheinlichkeit darauf hindeutet, dass die Erde zu 75 % mit Wasser bedeckt ist – eine beeindruckende visuelle Darstellung des Modells. Bei diesen Arbeitsschritten ist es entscheidend, die Testverfahren zu verstehen. Sie müssen Ihre Arbeit dokumentieren, um Fehler zu reduzieren, die Reproduzierbarkeit zu gewährleisten und anderen die Arbeit verständlich zu machen.
Wir haben kurz das Konzept der A-posteriori-Verteilungen besprochen, aber was genau ist das? Eine A-posteriori-Verteilung ist die Verteilung der A-posteriori-Wahrscheinlichkeiten. Hier komme ich wieder auf die Bayes'sche Statistik zurück, wenn es um Wahrscheinlichkeiten geht. Diese werden berechnet, indem man die Likelihood mit den A-priori-Wahrscheinlichkeiten multipliziert, also die Vorinformationen durch die tatsächlichen Daten oder Messwerte aus dem Experiment teilt.
Die rot markierte Verteilung verdeutlicht, dass die Erde mit hoher Wahrscheinlichkeit zu 75 % von Wasser bedeckt ist. Diese Wahrscheinlichkeitsaussagen, die ich eingangs erwähnte, helfen uns, datenbasierte Entscheidungen zu treffen. Das war ein kurzer Einblick in die Bayes'sche Statistik. Ich möchte hier aber auf einen Lernprozess eingehen, den ich bei der Integration von JMP und Python erlebt habe. Es gab einige steile Anstiege und Täler, einige Schwierigkeiten und Herausforderungen, aber letztendlich habe ich viele Vorteile in der Verwendung von Python in JMP gefunden, insbesondere beim Zusammenführen von JSL- und Python-Skripten.
Ich habe leider keine Zeit, die gesamte Folie durchzugehen, aber ich wollte unbedingt PyMC empfehlen. Diese Python-Bibliothek war nicht nur für den Code der Bayes'schen Analyse unerlässlich, sondern die Website bietet auch hervorragende Beispiele für statistische Modelle, die sich für vielfältige Tests und Anwendungen nutzen lassen. Außerdem führt sie zu einer weiteren Visualisierungssoftware, auf die wir später noch eingehen werden. Diese Software hilft Ihnen, Ihr Modell gründlich zu testen, bevor Sie überhaupt einen Algorithmus implementieren oder Ähnliches, um das Endergebnis zu ermitteln.
PyMC ist speziell für Jupyter Notebooks entwickelt worden. Komplett. Deshalb werde ich oft gefragt: „Warum nutzt ihr dafür den Python-Interpreter von JMP?“ Der Grund war, den Einstieg für meine Kollegen zu vereinfachen. Unser Unternehmen nutzt JMP standardmäßig. Wenn wir in JMP eine einfache Klick-Funktion implementieren können, deren Backend Python ist, steht meinen Kollegen ein neues Werkzeug zur Verfügung, das sie bei zukünftigen Entscheidungen unterstützt. Genau deshalb haben wir diesen Weg eingeschlagen.
Programmieren mit Python in JMP. Visualisierungen gehören zu den Dingen, die ich an JMP liebe. Man kann Dinge sehen, man kann Daten erkunden. Ich würde sagen, das ist einer der umständlichsten Aspekte, denn Python bietet zwar native Bibliotheken für Visualisierungen und ähnliches, diese funktionieren aber nicht in JMP. Man muss im Grunde nur ein Bild ausgeben. Wir haben hier Code geschrieben, um Datentabellen aus den Informationen dieser Bibliotheken zu erstellen, die die Datenexploration etwas erleichtern. Aber auch das war etwas mühsam.
Andererseits erleichtert JMP die Benutzereingaben erheblich, beispielsweise beim Erstellen von Spaltenlisten oder beim Prüfen, ob der Benutzer mit dem Skript fortfahren möchte. Es handelt sich dabei um interaktive Pop-up-Fenster, mit denen der Benutzer interagieren kann, anstatt mühsam herausfinden zu müssen, wo er den Code für seine Spaltennamen eingeben und wie er diese benennen soll.
Und schließlich, wo ich den größten Nutzen darin sah, wie ich bereits erwähnte, wie man JSL in das Python-Skript integrieren kann. Jetzt können wir Panels mit dem Bild anzeigen lassen und darunter Beschreibungen einfügen, um dem Benutzer zu helfen, den Inhalt zu verstehen. Das waren meiner Meinung nach enorme Fortschritte.
Nun kommen wir zum Kern des heutigen Vortrags: dem Skript. Wir beginnen mit der Auswahl einiger Faktoren, die unser beobachtetes Ergebnis beeinflussen werden. Unser beobachtetes Ergebnis ist hier die Ethanolproduktion. Wir verwenden hierfür einen Beispieldatensatz für einen Fermentationsprozess aus JMP; dieser kann also von jedem, der das Skript erhält, verwendet werden.
Zunächst einmal gilt beim Bayes'schen Ansatz wieder: Testen, testen, testen. Wir vergleichen simulierte Daten mit unseren beobachteten Daten, um zu prüfen, ob das gewählte statistische Modell funktioniert. Wir sehen, dass es funktioniert. Es deckt sich gut mit unseren beobachteten Daten, ohne zu große Abweichungen auf den Achsen zu verursachen.
Dann können wir das Modell testen. Wir können die univariaten Parameter innerhalb des Modells betrachten, um zu sehen, wie sich die Dichten zueinander verhalten. Wenn sie übereinander liegen, ist das ein sehr gutes Zeichen dafür, dass das Modell funktioniert. Hierfür können wir Trace-Plots verwenden, die mit der Python-Bibliothek `rvs` erstellt werden.
Der letzte Test, den wir durchgeführt haben, war ein Energiediagramm. Dabei haben wir uns den No-U-Turn-Sampler angesehen. Dies ist der Hauptalgorithmus, der das Ergebnis liefert. Wir haben erneut darauf geachtet, dass diese Kurven bzw. Verteilungen übereinander liegen, und das taten sie auch.
Nun kommen wir zum letzten Abschnitt. Dies ist der finale Datensatz. Dieser ist besonders wichtig, da ich zeigen wollte, wie JMP mit dem angepassten Modell arbeitet. Die Standardmethode der kleinsten Quadrate zeigt, dass sowohl der Tankfüllstand als auch der Luftgehalt einen signifikanten Einfluss auf die Ethanolproduktion haben. Auch die Bayes'sche Methode bestätigt dieses Ergebnis: Tankfüllstand und Luftgehalt sind signifikant. Sie weisen den größtmöglichen Einfluss auf die Ethanolproduktion auf.
Das Tolle an der Bayes'schen Statistik ist, dass sie uns einen besseren Einblick in die Zusammenhänge gibt: Wir können positive oder negative Effekte erkennen. Da der Tankfüllstand hier einen großen negativen Wert hat, bedeutet das, dass der Ethanolanteil umso geringer ist, je höher der Füllstand ist. Da die Luftmenge einen großen positiven Wert hat, bedeutet das, dass der Ethanolanteil umso höher ist, je höher der Luftanteil ist.
Als Fermentationswissenschaftler bin ich mir nicht sicher, ob ich mit dieser Schlussfolgerung am Ende einverstanden bin. Es handelt sich natürlich um einen Beispieldatensatz, aber es ist wirklich interessant, dass wir mit beiden Methoden zum gleichen Ergebnis gekommen sind und die Bayes'sche Analyse uns zusätzliche Informationen für zukünftige Entscheidungen liefert. Wie mein Titel schon sagt, treffen wir hier bei Novozymes bzw. Novonesis Entscheidungen im Bereich Hefe.
Wir haben uns für eine fiktive Figur als Produktnamen entschieden: Clint Yeastwood. Mithilfe der Bayes'schen Analyse konnten wir Wahrscheinlichkeitsaussagen treffen, die uns bei unseren Entscheidungen helfen. Laut dieser Analyse erreicht Clint Yeastwood in 78 % der Fälle einen um 1,1 % höheren Ethanolgehalt als BadFerm. Dies ist eine entscheidende Information, die wir für die Weiterentwicklung unserer Produkte nutzen können.
Zusammenfassend haben wir heute über die Python-Integration in JMP und die Erkundung Bayes'scher Methoden gesprochen. Hoffentlich konnten wir bei allen Anwesenden Anregungen für weitere Erkundungen und neue Denkansätze geben. Dabei sollten wir aber stets bedenken, dass Testen, Testen, Testen unerlässlich ist. Bayes'sche Methoden erfordern Tests und eine sorgfältige Dokumentation, damit nicht nur Sie selbst, sondern auch Ihre Kollegen und alle anderen Beteiligten Ihre Vorgehensweise verstehen.
Und schließlich geht es um Entscheidungsfindung. Ich hoffe, Sie können mithilfe dieser Informationen datengestützte Entscheidungen treffen und wir konnten Ihnen neue Perspektiven eröffnen. Vielen Dank fürs Zuhören. Ich hoffe, es war hilfreich. Besuchen Sie bitte die Website. Dort finden Sie das gesamte Skript und weitere Informationen. Sollten Sie dennoch Fragen haben, kontaktieren Sie mich bitte. Vielen Dank.