La qualité des produits biopharmaceutiques est influencée par de nombreux facteurs. Comprendre ces facteurs est indispensable pour fournir des produits de la plus haute qualité aux patients et pour se conformer aux exigences réglementaires. JMP est simple d'utilisation pour l'exploration des données. Cependant, les corrélations au sein ou entre de grands ensembles de données sont souvent complexes et nécessitent des outils non disponibles dans l'environnement JMP standard.
D'un autre côté, les capacités d'apprentissage automatique de Python offrent des solutions à presque toutes les problématiques de science des données. Malheureusement, la programmation en Python s'avère souvent complexe pour de nombreux experts du domaine. Afin de pallier cette difficulté, nous présentons une méthode d'intégration de Python pour les problématiques d'apprentissage automatique, en alternative aux fonctionnalités étendues de JMP Pro.
Nous utilisons JMP pour guider l'utilisateur tout au long d'un flux de travail d'apprentissage automatique. Les étapes de visualisation des données, telles que l'interpolation et le nettoyage des données, sont réalisées avec JMP. L'application des algorithmes d'apprentissage automatique et la validation sont effectuées avec Python à l'aide des pipelines Scikit-learn. Enfin, la visualisation des résultats est à nouveau réalisée avec JMP afin de permettre à l'utilisateur d'adapter facilement les graphiques.
Nous montrons comment cet outil peut être utilisé pour identifier les facteurs ayant le plus grand impact sur un paramètre de sortie donné.
J'aimerais aujourd'hui vous parler de l'intégration de Python et JMP afin d'exploiter les capacités d'exploration de données de JMP et les capacités d'apprentissage automatique de Python. Mais avant cela, je vais vous expliquer pourquoi nous souhaitons procéder ainsi.
Je travaille chez Rentschler Biopharma, où nous produisons des produits biopharmaceutiques par le biais d'une CDMO (Contract Development and Manufacturing Organization). Notre objectif est bien sûr de comprendre et d'améliorer les procédés de production. Mais pour ce faire, nous devons maîtriser ces procédés afin de garantir la meilleure qualité possible.
Lorsqu'on considère un processus de production typique, ou une étape de traitement, on voit ici à gauche une colonne de chromatographie. C'est une étape courante pour purifier les protéines. Plusieurs facteurs influencent cette étape, comme la densité de charge, le débit, le pH ou la température.
De plus, bien sûr, tout processus de production comprend de nombreuses étapes de ce type. Prenons l'exemple d'un bioréacteur, d'une filtration, de plusieurs étapes de chromatographie ou d'une diafiltration. Chaque étape du processus est influencée par de nombreux facteurs.
Lors de la caractérisation des procédés, c'est-à-dire au début de tout projet de développement, nous utilisons généralement une approche de plans d'expériences. Nous faisons varier, par exemple, la vitesse d'écoulement, le pH et la densité de charge afin d'observer leurs interactions et leur impact, combiné ou individuel, sur la qualité du produit. Cette démarche constitue un excellent point de départ pour une campagne de qualification des procédés (PPQ) ou pour le lancement d'un procédé industriel.
Cependant, au bout d'un certain temps, vous aurez généré une grande quantité de données issues d'une production industrielle. Bien sûr, il ne s'agit que de données aléatoires, mais elles illustrent quelque peu ce qui se produirait si vous produisiez seulement 100 lots : vous obtiendriez ainsi une variété de données sur la qualité de vos produits. Votre objectif serait de comprendre comment cette qualité est affectée par un facteur ou un élément que vous auriez pu négliger lors de la caractérisation du processus. Pour cela, l'apprentissage automatique est un outil idéal.
Cependant, la plupart des PME, pourtant expertes en la matière, ne maîtrisent pas l'apprentissage automatique et ne sont pas forcément à l'aise avec la programmation. Par ailleurs, les informaticiens connaissent rarement les processus biologiques, ce qui peut donner lieu à des prédictions parfois surprenantes.
L'idée est d'utiliser JMP, facile à utiliser pour les PME, afin de tirer le meilleur parti des données et d'utiliser l'apprentissage automatique sans que personne ne remarque le code sous-jacent.
Pour cela, j'utilise un journal JMP, facile d'utilisation et que je vous présenterai dans quelques minutes. Concernant le flux de travail, nous utilisons JMP pour certaines étapes, et Python en arrière-plan pour d'autres, mais l'utilisateur ne verra jamais de code Python.
Avec JMP, par exemple, il faudrait explorer les données, les nettoyer, les mettre à l'échelle ou créer des caractéristiques, toutes ces étapes typiques qui représentent également la plus grande perte de temps pour tout chercheur en apprentissage automatique.
Ces données sont ensuite directement transmises à Python, où sont effectuées des tâches classiques d'apprentissage automatique, telles que la sélection de modèles ou l'optimisation des hyperparamètres. Elles sont ensuite renvoyées à JMP pour visualisation. Enfin, si l'utilisateur souhaite générer un rapport, Python peut le faire facilement, sans intervention de sa part.
Par exemple, lorsqu'on pense à la mise à l'échelle des paramètres, un algorithme d'apprentissage automatique préférerait que tous les paramètres soient à la même échelle, sinon un facteur pourrait dominer le modèle. Bien sûr, cela dépend de l'algorithme utilisé. Mais l'idée générale est que la mise à l'échelle est bénéfique : elle permet de rendre tous les paramètres comparables et d'éviter qu'un facteur ne prenne l'ascendant sur le modèle.
Pour cela, nous utilisons le journal JMP, que je vais vous montrer. Voici à quoi il ressemble. Nous partons de données initiales, soit des données de qualité produit, soit un tableau de données aléatoires.
Il arrive fréquemment que certains types de données ne soient pas adaptés. Par exemple, ici, les trois premières colonnes contiennent des données catégorielles. Vous pourriez souhaiter les convertir en données numériques pour votre algorithme. À l'inverse, vous avez peut-être des facteurs actuellement continus, mais vous préféreriez les convertir en données catégorielles. Là encore, c'est très simple.
Il arrive fréquemment qu'il manque des données. Ici, dans la colonne pH, vous constatez que certaines données sont manquantes. Vous vous demandez alors comment y remédier. Il est facile de les compléter. Vous pouvez utiliser des prédictions, mais prenons l'exemple de la moyenne ou de la médiane. La moyenne est automatiquement renseignée.
Enfin, nous arrivons à la mise à l'échelle. Voyons voir, vous souhaitez normaliser ces données sur le même axe. Il s'agit de la standardisation. Vous avez ces facteurs ici. Vous souhaitez les encoder en one-hot. Il vous suffit de cliquer. Vous avez peut-être d'autres facteurs logarithmiques. Même principe. Vous effectuez une transformation lognormale et, éventuellement, vous souhaitez également les mettre à l'échelle.
Au final, vous disposez toujours de la colonne de résultats et de nombreuses colonnes transformées, utilisables pour n'importe quel modèle. Il vous suffit ensuite de les traiter et de les transmettre à Python. Vous déterminez ainsi ce que vous souhaitez prédire. Par exemple, si Elastic Net est performant, quelle régression est la plus adaptée. Testez les deux pour comparer leurs résultats. Vous pouvez ensuite optimiser les hyperparamètres en arrière-plan et observer leurs performances. Cette opération est évidemment plus gourmande en ressources informatiques.
Avec ces deux modèles, vous pouvez constater qu'ils ont tous deux identifié trois facteurs influençant la prédiction de la colonne finale : le pH, le temps ou un autre facteur. Ils aboutissent essentiellement au même résultat, ce qui est très intéressant. Ce sont donc les trois facteurs qui pourraient vous intéresser et que vous souhaiteriez étudier. Je vous remercie de votre attention.