Novonesisでは、特定の顧客環境における工業用酵母製品の性能を理解するために、アプリケーション研究開発グループが、顧客規模で有望な酵母候補を選別するための洞察力に富んだデータセットを生成することに長けています。科学者たちは、広範な顧客シナリオと特定の顧客シナリオの両方に関連する複雑な問題に対処するために、統計学を日常的に活用しています。
Pythonライブラリにベイズ法が導入されたことで、従来の統計的に有意な結果が得られない場合でも、確率に基づいたモデル計算とデータに基づく意思決定を促進する能力が大幅に向上しました。さらに、JMP 18の新機能によりPythonとのシームレスな統合が可能になり、当社の研究者はJMPから離れることなく大規模なデータセットを生成し、顧客固有の問い合わせに対応できるようになりました。アプリケーション研究データ、顧客トライアルデータ、および過去の情報を活用することで、統計的に有意でない傾向に頼るのではなく、情報に基づいたデータとベイズ統計に基づいて意思決定を特徴づける取り組みを進めています。このアプローチは、パフォーマンスのより包括的な理解と定量化を提供し、最終的にはより情報に基づいた意思決定につながることを目指しています。
こんにちは、マット・ワッツと申します。ノボネシスでバイオエネルギーと研究開発を担当する上級研究員です。ここで言うバイオエネルギーとは、トウモロコシからエタノールを製造することです。私の役割は、そのプロセスを効率化し、お客様に最大限の収量を提供するための酵母とスカーリフィケーション酵素を担当することです。
今日は、データに基づいた意思決定を行うために、ベイズ分析やベイズ統計をどのように活用してきたかについて少しお話しできることを光栄に思います。まず、ベイズ統計とは何かについて少し背景をご説明します。私にとってベイズ統計は比較的新しいもので、この1年間かけて学んできました。決してこの分野の専門家ではありませんが、学び続ける旅を続けています。JMP18では、Pythonとの統合がさらに強化されています。この統合によって得られた学びや発見、実際にどのように改善されたか、そして最初は少し難しかった点などについて見ていきましょう。
ベイズ統計学入門。これは、より良いデータ駆動型意思決定を行うための確率的記述を得ることを目的としています。また、事前知識に基づいて推定を行うことができる点も非常に優れています。例えば、エタノール濃度はゼロを下回らないといった事前情報に基づいて、さまざまな変数に制約を設けることができます。これは、モデルを作成する際に非常に重要であり、ベイズ統計学はこうした作業に非常に有効です。
リチャード・マケルリース氏の講座を参考にしました。「統計的再考」という講座です。スライドの右下にあります。リンクはクリックできませんが、ご覧いただけると思います。とても短い講座です。この講座はベイズ統計を理解する上で非常に役立ちました。実際にこの講座から例を取り上げて、ベイズ統計のワークフローを解説していきます。そうすることで、ベイズ統計手法を用いる際に何が起こるのか、その考え方をより深く理解できるでしょう。
ここでは、地球上の水で覆われている部分の割合を求める例を見ていきます。ベイズ統計のワークフローに従う必要があります。右側に表示されています。アーティストを例に考えてみてください。アーティストは、真っ白な紙からいきなりフクロウの絵を完成させるわけではありません。詳細を描き込み、要素を追加していくために、さまざまなステップを踏みます。まず形を描き、次に線を描き、次に目の構造、羽毛などを描き込んでいきます。
ベイズワークフローを考える際には、これが非常に重要です。ステップ1は、陸地または水域を選択する生成モデルまたは因果モデルを定義することです。地球儀を用意し、複数のサンプルを選択することで、基本的にそれが陸地または水域になります。ワークフローの2番目のステップは、推定値を定義することです。ここでは、地球儀のどのくらいの割合が水で覆われているかを推定します。ステップ3は、もう少し詳細を得ることです。複数の陸地または水域のサンプルを適用して、その割合の推定値を生成する統計モデルを開発します。
ベイズ統計学では、推定値ごとに異なる統計モデルが必要になる場合があるため、ここが本当に難しいところです。統計モデルとその意味、そしてそれらがどのように連携して情報を提供するのかについて、深い知識が求められます。私はその過程で多くの情報源を参考にしましたが、それらについては後ほど詳しく説明します。
ステップ3では、基本的に…いや、ステップ4でテストします。ステップ4では、さらに詳細を追加します。生成モデルを使用して統計モデルをテストします。これは基本的に、最初に地球儀を選択することで行ったことと同じです。これらのサンプルを統計モデルに入力し、地球儀の水で覆われる割合が同じになるかどうかを確認します。それがうまくいき、理にかなうのであれば、統計モデルを何度もサンプリングできます。
通常、これを複数のチェーンで 10,000 回実行し、事後分布を得ます。この事後分布は、地球が水で覆われている割合の確率を求めるのに役立ちます。このグラフを見ると、最も高い確率から地球が 75% の水で覆われていると考えることができます。これは非常に素晴らしいことで、モデルを視覚的に表現できます。これらのワークフロー手順では、テストを理解することが非常に重要です。作業内容を文書化する必要があります。これにより、エラーが減るだけでなく、再現性が向上し、他の人が作業内容を理解できるようになります。
事後分布の概念について簡単に説明しましたが、それは一体何でしょうか?事後分布とは、事後確率の分布のことです。ここで、確率に関するベイズ統計学の話に戻ります。事後分布は、尤度と事前確率を掛け合わせ、実験で測定した実際の証拠や指標で割ることによって計算されます。
赤色で示されているように、この分布は地球の75%が水で覆われている可能性が高いことを理解するのに役立ちます。これらは、データに基づいた意思決定を行うのに役立つ、冒頭で述べた確率に関する記述です。これがベイズ統計学の簡単な背景説明です。しかし、ここではJMPとPythonの統合に関して私が感じた学習曲線について強調したいと思います。急な上り坂もあれば谷もあり、苦労する点や困難もありましたが、最終的には、特にJSLとPythonスクリプトを統合する場合、JMPでPythonを使用することで多くのメリットが得られることがわかりました。
このスライド全体を説明する時間はありませんが、PyMCについてぜひご紹介したいと思います。このPythonライブラリは、ベイズ分析のコードにおいて非常に重要な役割を果たしただけでなく、ウェブサイトでは様々なテストなどに使える統計モデルの例が豊富に掲載されています。さらに、後ほどご紹介する別の可視化ソフトウェアにもアクセスできます。このソフトウェアを使えば、アルゴリズムを作成する前にモデルをテストし、最終的な結果を把握することができます。
PyMCは、Jupyter Notebookのために作られたツールです。完全にJupyter Notebook専用です。そのため、人々は私に「なぜJMPのPythonインタープリタを使っているのですか?」と尋ねます。その理由は、同僚の負担を軽減するためです。これは当社が使用しているツールです。当社はJMPを徹底的に活用しています。バックエンドがPythonであるJMP内でクリック操作ができるようになれば、同僚は今後の意思決定に役立つ新しいツールを利用できるようになります。これが、私たちがこの取り組みを始めた基本的な理由です。
JMP での Python コーディング。視覚化は、私が JMP で気に入っている点の 1 つです。物事を見たり、データを探索したりできます。Python には視覚化などを支援するネイティブライブラリがありますが、JMP では動作しないため、これが最も扱いにくい点の 1 つです。基本的には、画像を報告するしかありません。ここでは、これらのライブラリから提供される情報からデータ テーブルを出力するコードをいくつか作成し、データを少し探索できるようにしましたが、これは少し苦労した点です。
逆に、JMPはユーザー入力の処理に非常に役立ちます。例えば、列のリストを指定したり、ユーザーがスクリプトの実行を続行するかどうかを判断したりといったことです。これらは、ユーザーが操作できるポップアップウィンドウが表示されるだけで、列名を入力するコードの位置や名前の付け方などを自分で考える必要がありません。
最後に、私が本当にメリットを感じたのは、先ほども述べたように、JSLをPythonスクリプトに統合できる点です。今では、画像を表示するパネルボックスを作成できるだけでなく、画像の下に説明文を表示して、ユーザーが何を見ているのかを理解できるようにすることもできます。少なくとも私にとっては、これらは驚くべき進歩でした。
さて、本日の講演の本題であるスクリプトについて説明しましょう。まず、観測結果に影響を与える要因をいくつか選択します。ここで観測する結果はエタノール生産量です。これはJMPのサンプルデータセットである発酵プロセスを使用しているだけなので、スクリプトを入手した方はどなたでもご利用いただけます。
まず、ベイズワークフローでは、やはりテスト、テスト、テストが重要になります。シミュレーションデータと観測データを比較して、選択した統計モデルが機能するかどうかを確認します。結果は良好です。軸上で大きく広がりすぎることなく、観測データとよく重なっています。
次に、モデルをテストします。モデル内の単変量パラメータを調べて、それらの密度が互いにどのように見えるかを確認できます。それらが互いに重なり合っている場合は、モデルが正しく機能していることを示す非常に良い兆候です。ここでは、rvs という別の Python ライブラリであるトレースプロットを使用して、これを実現できます。
最後に行ったテストは、このUターンなしサンプラーのエネルギープロット図でした。これが答えを得る主要なアルゴリズムです。ここでも、これらの曲線、これらの分布が互いに重なっていることを確認しましたが、実際に重なっていました。
そして最後の部分に移ります。これが最終データセットです。これは非常に重要です。なぜなら、JMPが適合モデルで何をするかを示したかったからです。標準最小二乗法では、タンクレベルと空気の両方がエタノール生産に非常に大きな影響を与えることがわかります。ベイズ法を見ても同じ結果が得られます。タンク、レベル、空気は有意です。これらは、ゼロから最も遠い値です。
しかし、ベイズ統計の素晴らしい点は、より具体的な傾向を把握できることです。つまり、正または負の影響を視覚的に確認できるのです。ここでは、タンクレベルが大きく負の値なので、充填量が多いほどエタノール濃度が低いことを意味します。空気が大きく正の値なので、空気レベルが高いほどエタノール濃度が高いことを意味します。
発酵科学者として、最後の結論に完全に同意できるかどうかは分かりません。もちろんこれはサンプルデータセットですが、両方から同じ結果が得られたのは素晴らしいことですし、ベイズ統計から得られる追加情報によって今後の意思決定に役立てることができます。しかし、タイトルにもあるように、私たちはノボザイムズ、つまりノボネシスで酵母に関する意思決定を行っているのです。
製品名には架空のキャラクターの名前を選びました。それが「クリント・イーストウッド」です。ベイズ分析を用いることで、意思決定に役立つ確率的な記述を作成することができました。このベイズ分析では、「クリント・イーストウッド」は「バッドファーム」よりも78%の確率でエタノール含有量が1.1%高くなります。これは、製品開発を推進する上で非常に重要な情報です。
まとめると、今日はJMPにおけるPythonの統合とベイズ法の探求についてお話ししました。皆さんが新たな探求心を持ち、新しい考え方を模索するきっかけになれば幸いです。ただし、常にテスト、テスト、テストを心がけてください。ベイズ法では、テストを行い、ドキュメントを作成することが不可欠です。そうすることで、自分自身だけでなく、同僚や関係者など、この情報を共有するすべての人が、自分のやっていることを理解できるようになります。
そして最後に、すべては意思決定にかかっています。これを通して、データに基づいた意思決定ができるようになり、新たな可能性に目を向けていただければ幸いです。本日はお聞きいただき、本当にありがとうございました。お役に立てたなら幸いです。ぜひウェブサイトをご覧ください。スクリプトや情報がすべて掲載されています。もしご覧になれない場合は、お気軽にご連絡ください。ありがとうございました。