バイオ医薬品の品質は多くの要因によって左右されます。これらの要因を理解することは、患者に最高品質の製品を提供し、規制要件を遵守するための前提条件となります。JMPはデータ探索に使いやすいツールですが、大規模なデータセット内またはデータセット間の相関関係は複雑な場合が多く、標準のJMP環境では利用できないツールが必要となることがあります。
一方、Pythonの機械学習機能は、データサイエンスに関するほぼすべての疑問に対する解決策を提供します。しかしながら、多くの専門家にとってPythonプログラムコードの使用は難しい場合が少なくありません。そこで、この課題を解決するために、JMP Proの拡張機能の代替手段として、機械学習に関する疑問にPythonをどのように活用できるかをご紹介します。
JMPジャーナルを使用して、ユーザーが機械学習ワークフローをスムーズに進められるようガイドします。データ補間などのデータ可視化手順や、データクレンジングなどの処理はJMPで行います。機械学習アルゴリズムの適用と検証は、Scikit-learnパイプラインを使用したPythonで行います。最後に、結果の可視化もJMPで行い、ユーザーがグラフを簡単にカスタマイズできるようにします。
本稿では、このツールを用いて、特定の出力パラメータに最も大きな影響を与える要因を特定する方法を示す。

本日は、JMPのデータ探索機能とPythonの機械学習機能を活用するために、PythonとJMPを統合する方法についてお話ししたいと思います。しかし、そのためにはまず、なぜそうしたいのかという理由からご説明させていただきます。
私はRentschler Biopharmaに勤務しており、CDMO(医薬品受託開発製造機関)を通じてバイオ医薬品を製造しています。もちろん、私たちの目標は製造プロセスを理解し、改善することです。そのためには、まずプロセスを理解する必要があり、そうすることで初めて最高の品質の製品を提供できるようになります。
典型的な製造工程や工程ステップについて考えてみましょう。左側にクロマトグラフィーカラムがあります。これは、タンパク質を精製する際に行う典型的なステップの1つです。この工程ステップに影響を与える要因はいくつか知られています。例えば、負荷密度、流速、pH、温度などです。
さらに、もちろん、あらゆる製造プロセスは、こうした多くの工程から成り立っています。例えば、バイオリアクター、ろ過、複数のクロマトグラフィー工程、透析ろ過などです。個々の工程は、多くの要因によって影響を受けます。
プロセス特性評価、つまり開発プロジェクトの初期段階では、通常、実験計画法を用います。例えば、流速、pH、負荷密度などを変化させて、それらがどのように相互作用し、単独または複合的に製品品質にどのような影響を与えるかを調べます。これは、PPQキャンペーンを開始したり、商業プロセスを開始したりする上で非常に有効な出発点となります。
しかし、しばらくすると、商業生産から大量のデータが生成されます。これはもちろんランダムなデータですが、100バッチを生成した場合に何が起こるかを少し示しています。製品の品質に関するさまざまなデータが得られるでしょう。あなたの目的は、この製品の品質が、プロセス特性評価で見落としていた要因や影響によってどのように左右されるかを理解することです。そのためには、機械学習が理想的なツールとなります。
しかし、プロセスを理解している専門家である中小企業のほとんどは、機械学習に精通しておらず、必ずしもコードを書くことに抵抗がないわけではありません。一方、情報科学者は生物学的プロセスに精通していないことが多く、その結果、非常に奇妙な予測結果が生じることもあります。
ここでの狙いは、中小企業でも使いやすいJMPを使って、データから最大限の情報を引き出し、誰もその背後にあるコードに気づかないまま機械学習を実行することです。
そのため、私はJMPジャーナルを使用しています。これは使いやすく、後ほどその使い方をお見せします。ワークフローに関しては、いくつかの処理ステップにはJMPを使用し、その他の処理にはバックグラウンドでPythonを使用しますが、ユーザーがPythonを目にすることはありません。
例えばJMPの場合、データの探索、データのクリーンアップ、スケーリング、特徴量の作成など、機械学習研究者の時間の大部分を浪費する典型的な手順をすべて実行します。
その後、このデータは直接Pythonに渡され、モデル選択やハイパーパラメータ調整といった典型的な機械学習タスクが実行されます。そしてデータはJMPに戻され、可視化されます。もちろん、そこからレポートを作成したい場合は、ユーザーが自分で記述する必要なく、Pythonによって簡単に作成できます。
例えば、パラメータのスケーリングについて考える場合、機械学習アルゴリズムはすべてが同じスケールである方が望ましいでしょう。そうでないと、ある特定の因子がモデルを支配してしまう可能性があるからです。もちろん、これは使用するアルゴリズムによって異なります。しかし、基本的な考え方としては、スケーリングによってすべてが比較可能になり、どの因子もモデル上で有利にならないようにできるということです。
そのためには、JMPジャーナルを使用します。今からそのジャーナルをお見せします。ジャーナルはこのような形式です。まず、開始データとして、もちろん製品品質データを使用するか、あるいはランダムなデータのサンプルテーブルを使用します。
よくあるケースとして、すべてのデータ型が正しいとは限らないことが挙げられます。例えば、ここに示されている最初の3列はカテゴリデータです。アルゴリズムによっては、これを数値データに変換する必要があるかもしれません。一方、連続変数として扱われている因子をカテゴリデータに変換したい場合もあるでしょう。こうした変換は非常に簡単に行えます。
また、よくあることですが、データが欠落している場合があります。pH の列を見ると、データが欠落していることがわかります。では、どのように対処すればよいのでしょうか?簡単に埋めることができます。予測値で埋めることもできますが、ここでは値の平均値または中央値で非常に簡単に埋めてみましょう。平均値を使ってみます。自動的に埋められます。
そして最後に、スケーリングのアプローチについて説明します。同じ軸上でこれをスケーリングしたいとします。これは標準化です。ここにこれらの因子があります。これをワンホットエンコーディングに実行したいとします。これもクリックするだけです。さらに、対数的な他の因子があるかもしれません。同じ考え方です。対数正規変換を実行し、スケーリングしたい濃度もいくつか実行します。
最終的には、もちろん結果列と、あらゆるモデルに使用できる変換済み列が多数残ります。その後、それらを確認して、Python に渡すだけです。予測したいものを見つけるだけです。たとえば、Elastic Net がまあまあで、どの回帰が最適かがわかります。違いがあるかどうかを確認したいので、両方使用してみましょう。その後、バックグラウンドでハイパーパラメータチューニングを実行して、パフォーマンスを確認できます。もちろん、これはコンピュータにとって少し手間がかかります。
これら2つのモデルを見ると、どちらも最終的なカラムの予測に影響を与える3つの要因、例えばpH A、時間、あるいは別の時間といった要因を特定していることがわかります。どちらも本質的に同じことをしており、これは非常に素晴らしいことです。したがって、これら3つの要因は、皆さんが関心を持ち、調査したいと思うものかもしれません。最後に、ご清聴ありがとうございました。