Die Qualität von Biopharmazeutika wird von vielen Faktoren beeinflusst. Das Verständnis dieser Faktoren ist Voraussetzung für die Bereitstellung von Produkten höchster Qualität für Patienten und die Einhaltung regulatorischer Anforderungen. JMP ist für die Datenexploration einfach zu bedienen. Korrelationen innerhalb oder zwischen größeren Datensätzen sind jedoch häufig komplex und erfordern Werkzeuge, die in der Standardumgebung von JMP nicht verfügbar sind.
Andererseits bietet Python mit seinen Machine-Learning-Funktionen Lösungen für nahezu jede Fragestellung im Bereich Data Science. Leider stellt die Verwendung von Python-Programmcode für viele Experten oft eine Herausforderung dar. Um diese Schwierigkeit zu überwinden, zeigen wir, wie Python für Machine-Learning-Fragen als Alternative zu den erweiterten Funktionen von JMP Pro eingesetzt werden kann.
Wir verwenden JMP-Journale, um den Benutzer durch einen Machine-Learning-Workflow zu führen. Schritte der Datenvisualisierung, wie Dateninterpolation und andere Maßnahmen zur Datenbereinigung, werden mit JMP durchgeführt. Die Anwendung von Machine-Learning-Algorithmen und die Validierung erfolgen mit Python mithilfe von Scikit-learn-Pipelines. Abschließend wird die Visualisierung der Ergebnisse erneut mit JMP durchgeführt, um dem Benutzer eine einfache Anpassung der Diagramme zu ermöglichen.
Wir zeigen, wie dieses Werkzeug genutzt werden kann, um die Faktoren zu identifizieren, die den größten Einfluss auf einen bestimmten Ausgabeparameter haben.
Ich möchte heute die Gelegenheit nutzen, mit Ihnen über die Integration von Python und JMP zu sprechen, um die Datenexplorationsfunktionen von JMP und die Machine-Learning-Funktionen von Python zu nutzen. Zuvor möchte ich Ihnen jedoch erläutern, warum wir das anstreben.
Ich arbeite für Rentschler Biopharma, wo wir Biopharmazeutika im Rahmen eines CDMO-Prozesses herstellen. Unser Ziel ist es natürlich, die Produktionsprozesse zu verstehen und zu optimieren. Dafür müssen wir den Prozess jedoch zunächst verstehen, um die bestmögliche Qualität liefern zu können.
Wenn man an einen typischen Produktionsprozess oder einen Prozessschritt denkt, sieht man hier links eine Chromatographiesäule. Das ist ein typischer Schritt zur Reinigung von Proteinen. Wir kennen einige Faktoren, die diesen Prozessschritt beeinflussen, beispielsweise die Beladungsdichte, die Flussgeschwindigkeit, den pH-Wert oder die Temperatur.
Darüber hinaus besteht natürlich jeder Produktionsprozess aus einer Vielzahl solcher Schritte. Beispielsweise aus einem Bioreaktor, einer Filtration, mehreren Chromatographieschritten oder einer Diafiltration. Jeder einzelne Prozessschritt wird von zahlreichen Faktoren beeinflusst.
Bei der Prozesscharakterisierung, also zu Beginn jedes Entwicklungsprojekts, verwenden wir üblicherweise die Versuchsplanung. Wir variieren beispielsweise Durchflussgeschwindigkeit, pH-Wert und Beladungsdichte, um deren Wechselwirkungen und deren Auswirkungen auf die Produktqualität – einzeln oder gemeinsam – zu untersuchen. Dies ist ein idealer Ausgangspunkt für eine PPQ-Kampagne oder die Einführung eines kommerziellen Prozesses.
Nach einiger Zeit werden Sie jedoch eine große Menge an Daten aus der kommerziellen Fertigung generiert haben. Diese Daten sind natürlich nur zufällig, veranschaulichen aber, was passiert, wenn Sie beispielsweise 100 Chargen produzieren und dabei vielfältige Daten zur Produktqualität erhalten. Ihr Ziel wäre es, zu verstehen, wie diese Produktqualität durch einen bestimmten Effekt beeinflusst wird oder ob Sie bei der Prozesscharakterisierung etwas übersehen haben. Hierfür ist maschinelles Lernen ein ideales Werkzeug.
Die meisten KMU, also die Experten, die den Prozess verstehen, sind jedoch mit maschinellem Lernen nicht vertraut und fühlen sich beim Programmieren nicht unbedingt wohl. Informatiker wiederum kennen sich häufig nicht mit biologischen Prozessen aus, was ebenfalls zu sehr kuriosen Vorhersagen führen kann.
Die Idee hierbei ist, JMP zu verwenden, das für KMU einfach zu bedienen ist, um das Beste aus den Daten herauszuholen und maschinelles Lernen einzusetzen, ohne dass jemand den dahinterliegenden Code bemerkt.
Dafür nutze ich ein JMP-Journal, das einfach zu bedienen ist und das ich Ihnen gleich zeigen werde. Was den Workflow angeht: Für einige Prozessschritte verwenden wir JMP, während im Hintergrund für andere Prozesse Python läuft. Der Benutzer wird jedoch nie etwas von dem Python-Code sehen.
Bei JMP beispielsweise würden Sie die Daten untersuchen, die Daten bereinigen, sie skalieren oder Merkmale erstellen – alles typische Schritte, die auch den größten Teil der Zeit eines jeden Wissenschaftlers im Bereich maschinelles Lernen in Anspruch nehmen.
Diese Daten werden anschließend direkt an Python übergeben, wo typische Machine-Learning-Aufgaben wie Modellauswahl oder Hyperparameter-Optimierung durchgeführt werden. Danach fließen die Daten zurück in JMP, wo sie visualisiert werden. Selbstverständlich kann anschließend auch ein Bericht daraus erstellt werden – ganz einfach mit Python, ohne dass der Benutzer ihn selbst programmieren muss.
Eine Möglichkeit wäre beispielsweise die Parameterskalierung: Ein Algorithmus für maschinelles Lernen bevorzugt es, wenn alle Parameter auf derselben Skala liegen, da sonst ein einzelner Faktor das Modell dominieren könnte. Das hängt natürlich vom verwendeten Algorithmus ab. Grundsätzlich ist die Skalierung jedoch hilfreich, da sie die Vergleichbarkeit aller Parameter gewährleistet und verhindert, dass ein Faktor im Modell einen Vorteil erlangt.
Dazu verwenden wir das JMP-Journal, das ich Ihnen jetzt zeigen möchte. Dieses Journal sieht folgendermaßen aus. Wir beginnen mit Ausgangsdaten, entweder natürlich mit Produktqualitätsdaten oder wir verwenden einfach eine Beispieltabelle mit zufälligen Daten.
Sie werden häufig feststellen, dass nicht alle Datentypen korrekt sind. Beispielsweise enthalten die ersten drei Spalten kategoriale Daten. Für Ihren Algorithmus möchten Sie diese möglicherweise in numerische Daten umwandeln. Andererseits gibt es vielleicht Faktoren, die derzeit als kontinuierlich vorliegen, die Sie aber gerne als kategoriale Daten behandeln würden. Auch das lässt sich ganz einfach bewerkstelligen.
Dann kommt es vor, dass Daten fehlen. Wie Sie hier in der pH-Spalte sehen, fehlen einige Daten. Man fragt sich dann, wie man damit umgeht. Man kann sie ganz einfach ergänzen. Man könnte Vorhersagen verwenden, aber nehmen wir an, wir füllen sie ganz einfach mit dem Mittelwert oder Median unserer Werte. Nehmen wir den Mittelwert. Er wird automatisch eingetragen.
Schließlich kommen wir zum Skalierungsansatz. Wir möchten die Daten auf derselben Achse skalieren. Es geht um die Standardisierung. Hier haben Sie diese Faktoren. Diese möchten Sie in One-Hot-Encoding umwandeln. Klicken Sie einfach. Dann haben Sie möglicherweise weitere Faktoren, die logarithmisch sind. Gleiches Prinzip. Sie führen einfach eine logarithmische Normaltransformation durch und skalieren gegebenenfalls auch Konzentrationen.
Am Ende bleiben Ihnen natürlich die Ergebnisspalte und zahlreiche transformierte Spalten, die Sie für jedes beliebige Modell verwenden können. Anschließend können Sie die Daten an Python übergeben. Dort finden Sie die gewünschten Vorhersagen. Beispielsweise könnte Elastic Net brauchbar sein, aber welche Regression ist die beste? Wir verwenden beide, um mögliche Unterschiede zu erkennen. Im Hintergrund können Sie dann Hyperparameter-Optimierung durchführen und die Leistung der Modelle überprüfen. Dies ist natürlich etwas rechenintensiver für den Computer.
Anhand dieser beiden Modelle lässt sich erkennen, dass beide drei Faktoren identifizieren, die bei der Vorhersage der Endsäule eine Rolle spielen, wie beispielsweise pH-Wert, Zeit oder ein anderer Zeitpunkt. Beide Modelle liefern im Wesentlichen die gleichen Ergebnisse, was sehr erfreulich ist. Dies wären also die drei Faktoren, die für Sie von Interesse sein könnten und die Sie untersuchen möchten. An dieser Stelle möchte ich mich für Ihre Aufmerksamkeit bedanken.