時間とともに変化する曲線を異なるカテゴリに分類する必要があることがよくあります。例えば、細胞増殖曲線は、細胞の成長挙動を特徴付ける様々な形状タイプ(例えば、ジオーキシック成長)を持つ場合があります。これらの異なる曲線タイプは、曲線から特徴的なパラメータ(例えば、成長開始までの時間差、成長速度、最終的な成長レベルなど)を自動的かつ正確に抽出することを困難にします。
JMP Proの機能データエクスプローラ(FDE)を使用すると、これらの曲線を特定の種類に分類できます。分類が完了すると、FDEは曲線からノイズを除去し、重要な成長パラメータの評価を大幅に簡素化します。
こんにちは。Jerry Fishです。この講演へようこそ。同僚のKyle Probstと私が、Functional Data Explorerを使った曲線の形状の分類についてお話しします。私はJMPの社員です。JMPに入社して7年になりますが、中西部のお客様をサポートしてきました。もし中西部にお住まいでしたら、ぜひご連絡ください。JMPに関するあらゆるご要望にお応えいたします。
これは、私たちが特性評価について議論している典型的な曲線です。今日はカイルがこれについてもう少し詳しく説明します。私たちが話しているのは細胞増殖曲線です。増殖曲線とは、例えば細胞に特定の栄養を与えたときに、特定の細胞がどれだけ速く増殖できるかに関係しています。例えば、このような曲線を描くことがあります。最初は全く増殖していませんが、突然細胞が増殖し始め、最後にはこのように成長が停滞します。これが典型的な曲線です。カイルが、ここで注目すべき重要なパラメータについて少し説明します。
問題は、分類すべき曲線の種類が異なることです。左上にあるのは、先ほどお見せした曲線です。これを単相性曲線と呼びます。これは単一の成長パターンを持ち、その後もそれが維持されるため、細胞はここで生き残り続けます。右上のこの曲線も単相性曲線です。遷移は1つだけですが、最後にここで死滅する傾向があり、細胞は死に始めます。おそらくこれは重要であり、あるいはあなたのビジネスにおいては、あなたが関心を持つ重要な特性かもしれません。
これは2つの成長領域を持つ「ジオーキシック」と呼んでいます。最初の領域では成長が停滞し、次に2番目の成長領域があります。そして最後に、成長が全く見られない状況もあり、もちろんそれらにも興味があります。
これらのデータは数百ものテストで得られる可能性があり、それらを一つ一つ確認するのは避けたいものです。それぞれの曲線がどのようなものか分かっていれば、例えばこの曲線はJMPの「曲線の近似」機能でモデル化できます。この曲線とこのジオーキシック曲線は、より柔軟に曲線を表現できる非線形プラットフォームでモデル化した方がよいかもしれません。すべての曲線を一つ一つ確認して、どの曲線に適用するかを決めるのは避けたいものです。できれば、このシステムを自動化したいと思っています。
では、カイルにバトンタッチして、自己紹介とこの曲線について、そしてこれがなぜ重要なのか、そして私たちが何をしているのかという背景について少しお話ししてもらいます。カイルさん、いかがですか?
ジェリー、ありがとう。素晴らしい紹介ですね。ジェリーが触れたように、ケリーでは製薬細胞栄養事業において、微生物の増殖を評価するための研究を数多く行っています。少しだけ私の経歴をお話ししましょう。カイル・プロブストと申します。ウィスコンシン州ベロイトにある北米本社を拠点とするケリーのシニアサイエンティストです。私は細胞栄養分野を担当しており、微生物や哺乳類細胞、その他の細胞にタンパク質加水分解物や酵母エキスなどの形で栄養を与える事業に携わっています。これらの栄養分の多くは、バイオ医薬品業界で命を救う医薬品の製造に利用されています。
ジェリーがここで使用しているデータは、私たちが研究室でよく行う特定のアッセイから得られたものです。これはよりハイスループットなスクリーニングから得たもので、マイクロタイタープレートリーダーを用いて微生物の増殖曲線を測定しています。彼がここで示しているのもその例です。私たちが測定した増殖は、通常、600ナノメートルにおける光学密度(OD600)を用いて測定されます。つまり、これは基本的に増殖と相関関係にあります。濁度を測定するだけなので測定は簡単で、業界では微生物の増殖を定量化するために標準的な指標として使用されています。
私たちは、成長曲線から得られる特定の主要業績評価指標(KPI)に基づいて、最適な原料を比較・選定するためにこれを使用しています。成長曲線から測定・定量化したい主要なKPIには、成長率、遅延時間、最終細胞密度など、他にも多くのものがあります。ジェリーがここで取り組んでいるのは、これらの曲線から得られたこれらの定量的な値を自動的に抽出することです。これにより、一つ一つ確認する手間が省け、適切な適合性も得られます。
標準的なプロセスを用いてこれを行う際に、これが最大の課題の一つでした。必ずしも良好なフィッティングが得られるとは限らず、曲線の形状にも左右されます。残念ながら、このデモで示しているように、すべてが完全な単相性というわけではありません。そのため、Jerry は、この作業の一部を手伝うことに興味を持ってくれました。
ところで、ここでご覧いただいている曲線についてご説明しますが、ここで私たちがよく関心を持つKPIは遅延時間です。遅延時間とは、細胞が成長を始める前に休眠状態にある時間です。これは理解しておくことが重要です。変曲点到達時間、つまり細胞が最大成長率に達するまでの時間です。そして変曲点における傾き、これが最大成長率です。これも私たちが測定する重要なパラメーターです。そして最後の漸近線は最終的な細胞密度、つまり達成される細胞密度で、これはすべての微生物の成長に関係しています。
この作業を行う前に、生データを処理して、実際に曲線を作成できる形式にする必要があります。視覚的な比較や、ジェリーがここで示しているような曲線を実際に定量化することで、比較を容易にします。実は、生データをどのように処理し、JMPの便利なツールをどのように活用しているかを示した別の論文も発表しました。
私のようなスクリプト初心者でも、時間と労力を大幅に節約できるアプローチをいくつか構築することができました。その方法は「微生物増殖特性評価の自動化のためのJMPアドインビルダー」です。ぜひチェックしてみてください。
ジェリー、君に返そう。もう十分話した気がする。君よりずっとたくさん話したと思う。
それは最高です。
ありがとう、ジェリー。
カイル、完璧です。背景を説明していただきありがとうございます。カイルの筆頭著者である論文を調べて、この形式のデータにどのような前処理を施したのか調べてみることをお勧めします。例えば、全てを上にシフトして常に0から開始し、ここでは30時間で切り捨てるなど、恣意的にそのようにしています。カイル、ありがとう。
カイルとケリーは、このデータセットで分析用に約330本の曲線を提供してくれました。私はそれらを調べ、目視で分類し、曲線がどのようにグループ化されるかを確認しようとしました。ここにある曲線はすべて「単相性持続」と呼び、曲線が上昇して漸近値に達するものです。一方、こちらは「単相性死」と呼び、曲線が上昇してピークに達し、その後死滅する傾向があります。死滅の程度は重度のものもあれば、それほど重度ではないものもあり、データに多少の変動が見られるものもあります。奇妙な挙動ですが、これらはすべて「単相性死」に分類しました。
これらは二相性に分類しました。すべての曲線には、成長期、漸近線があり、その後に別の成長期が続きます。微妙な変化かもしれませんし、大きな変化かもしれません。いずれにせよ、これがまさにその曲線です。そしてもちろん、こちらは成長のない曲線です。
では、データを見て、データについて何かわかることがあるか、そしてFDE(Functional Data Explorer)がどのように役立つかを見てみましょう。FDEはJMP Proの機能です。これから説明するツールは、主にJMP Proのツールです。データ自体には、テスト番号の列があります。テスト番号は1_1です。これが時間です。ここから30時間まで進むと、OD600列にデータが収集されています。この最初の列は、私が個人的に無増殖データセットと特定したものです。
これが実際に起こることです。テスト1_1があり、続いて1_2、というように続きます。このデータセットには約330種類のテストを含む約40,000行が含まれています。
こちらには「検証」という列があります。JMP Proでは、モデルを検証するオプションがあります。FDEにおける「検証」の意味は、JMPの他のプラットフォームとは少し異なります。これについては後ほど詳しく説明しますが、この検証列の設定方法を簡単にお見せしたいと思います。「分析」→「予測モデリング」→「検証列の作成」にあります。
まず、JMPにグループ化列があることを伝えます。1_1データはすべて、トレーニング用と検証用のどちらかにグループ化します。特定のテスト内でトレーニング用と検証用のデータが混在することは避けたいので、テスト番号をグループ化列として指定します。次に、トレーニングセットと検証セットのそれぞれにおいて、無成長曲線、単相性枯死曲線、単相性持続曲線、および二相性曲線の数または割合が等しくなるようにします。これは層別化と呼ばれます。必要なタイプを選択して層別化に入力するだけで、あとはこれで完了です。
ここで指定します。実行の60%をトレーニングセットで、残りの40%を検証セットで実行することにしました。「Go」と押すと、この列が表示されます。これは、約60%の試行をトレーニングセット、残りの40%を検証セットとして含むはずです。
さて、今作った列を削除します。この列は、トレーニングと検証を各実行にランダムに割り当てるもので、添付の論文に示されている分析で行った実行と同じものになっていることを確認したいのです。今作った列を削除しますが、これがこの列の取得方法です。
機能データを開いて探索する準備ができました。分析、特殊化、FDEです。ここで、JMPに各列の意味を記述する必要があります。テスト番号はIDです。時間はX変数です。OD(細胞増殖の測定値)はY出力です。タイプは補助変数として追加します。今回の分析では使用しません。これは後のステップで追加します。今はそのまま進めます。そして、検証をここに入力して、OKです。
こちらはFunctional Data Explorerのウィンドウです。上のグラフは、すべての曲線を重ね合わせたものです。これを展開すると、下のグラフに個々の曲線がすべて表示されます。Functional Data Explorerでまず最初に行うべきことは、これらのデータ曲線それぞれに関数をフィッティングすることです。これは赤いホットスポットモデルの下で行われます。次に、Bスプライン、Pスプライン、フーリエ、ウェーブレットといった様々なオプションから選択できます。
Bスプラインを使ってみます。理解するのはかなり簡単です。でも、Pスプラインでも同じようにできたはずです。もしここにある各信号に繰り返しの特徴があれば、フーリエ基底を使うことになります。ウェーブレットは、このデータや、鋭いピークを持つスペクトルデータをフィッティングする方法として、非常に人気があり、さらに普及しつつあります。ウェーブレットはそういった用途に非常に適しています。しかし、今日はBスプラインについてのみ説明します。
JMPは2つのことを行います。まず、すべてのデータをソートし、2つのパラメータを選択します。そのパラメータの1つは次数です。次数はステップ関数、つまり一連の線分(線形、二次、三次)のいずれかで、この信号をスプラインに分割するために使用されます。
スプラインは、ノットと呼ばれるものの間に収まります。JMPが決定するもう一つの要素は、ノットの数と位置です。これらの関数すべてに最もよく適合するように、JMPはノットの数と位置を決定します。この場合、JMPは17個のノットを持つ3次スプラインフィッティングを選択しました。これは調整可能です。必要に応じて変更することもできます。私はさらに良い適合度を得るために、JMPが自動的に提示したこの値を使用します。
JMPはそれで何を行うのでしょうか?まず、全体の平均曲線を求めます。これは、先ほど見たすべての曲線の全体の平均です。これらは形状関数です。固有関数とも呼ばれます。例えば、高い方の関数1に係数を掛けるとします。この係数はプラス2です。そして、マイナス1の別の係数を形状関数2に掛けます。形状関数3に掛け、これを半分に、形状関数4に掛け、これを5倍にします。そして、これらをすべて合計し、係数と各関数の積を平均関数に加えると、上のような曲線が得られます。
問題は、これらの曲線を再構成するために、各関数の前に置かれる係数は何かということです。各曲線は異なるため、異なる係数、つまり機能主成分(FPC、1、2、3、4)が得られます。この場合、JMPは「各曲線を特徴付けるには4つの機能主成分が必要です」と表示します。
ちょっと長いですが、要するに、ここにある4つの係数がこの曲線を特徴づけているということです。この4つの係数と、3次スプライン近似とスプラインの分割における17ノットという知識を組み合わせます。これらをすべて理解していれば、曲線1は成長曲線ではないことがわかります。しかし、曲線2、曲線2_1を見てみましょう。
少し大きくしてお見せしますが、ここに生データとフィッティングデータを表示しています。生データは黒で表示されています。少しだけ見えますね。赤いデータはフィッティングデータ、スプラインフィッティングです。すべての曲線を非常にうまくフィッティングできているのがお分かりいただけると思います。
モデリングを続けるには、これらの機能的主成分が必要なので、赤いホットスポットに移動して「サマリーを保存」を選択します。すると、各テストごとに1行ずつの新規データテーブルが作成されます。これが1_1、テスト番号1_1です。これは無成長と判定したので、タイプは補足変数として保持します。これが最終的な結果です。私の目から見て、これは無成長曲線です。これはトレーニングセットに含まれており、検証セットには含まれていませんでした。これが、このテストの最初の4つの主成分です。
他にもたくさんのデータがあります。それぞれの曲線の平均値、標準偏差、中央値などです。これらは役に立つかもしれませんが、今日の講演では気にしません。これらはすべて削除します。残るのはこの4人だけです。
各テストごとにこのような列があり、それぞれの評価を目視で確認しています。そして、ここに「トレーニング」という列があります。さらに下の方まで進むと、検証用の行もいくつかあります。
さて、問題は「今決定したこれらのFPCを使って型を予測するモデルを作れるか?」ということです。もしそれができれば素晴らしいです。必要なのは、新しい曲線について「FPCとは何か?」を知ることだけです。それをこの魔法の公式に当てはめれば、型が何であるかを予測できるのです。
JMP ProでFDEを使用しているので、JMP Proにアクセスしてモデルスクリーニングを行うことができます。ここで、Y応答は型になります。型を予測できるかどうかを知りたいのです。ここで検証を使用します。では、FPCをX入力として使用します。モデルスクリーニングツールを使用すると、JMP Proはこれらの異なるモデルをすべて実行し、それらを比較して、どのモデルが最も予測に優れているかを判断します。
さて、追加します…モデルの中には2元配置交互作用と2次関数が可能なものもあるので、それらを追加します。また、結果が論文の内容と一致するように、ランダムシードを2、3、4、5に設定します。通常は設定しません。JMPに任意のシード値で解かせます。「OK」をクリックします。
JMPはこの時点で各モデルを実行し、比較を行います。ここでは、実行したすべてのモデルを平均二乗誤差(RAR)の順に比較しています。RARが最小となるのはニューラルブーストモデルで、偶然にもJMP Proモデルでもあります。決定木や名義ロジスティックスなどはJMPの標準モデルですが、ニューラルブーストモデルは優れたモデルです。また、誤分類率は5%と表示されています。これは、今回使用したすべてのモデルの中で最良の結果です。これについては後ほど詳しく説明します。
ニューラルブーストモデルを実行して、結果がどのようになるか確認してみましょう。これがその結果です。混同行列について説明しました。左側がトレーニングデータ、右側が検証データです。検証データを見てみましょう。
ある試行が二相性であると実際に予測したとき、ニューラルブーストモデルは二相性であると8回予測しました。また、単相性が持続すると1回予測しました。合計9回のうち、そのうち1回を間違えました。これが混同行列で行っていることです。主対角線に沿ってこれらの数値をすべて表示するのが望ましいことがわかります。必要な値とは少し異なる数値もいくつかあります。モデルは完璧ではありませんが、かなり良いものです。成功率は95%です。
カウントではなく割合で見たい方は、この表をご覧ください。そして、皆さんご存知の受信者動作特性曲線もここにあります。興味深いですが、いくつか間違いがあります。さて、その間違いとは…少しお待ちください。どの数字についてお話しすればよいか分かるように、数字が必要です。
戻ってみましょう。単相性の死を予測したのですが、私のアルゴリズム、ニューラルネットワークを活用したアルゴリズムは3回、二相性だと予測しました。39回は正しく予測し、3回は二相性だと予測しました。この3つの試験を見てみましょう。
メインデータセットに戻ると、グラフビルダーを起動するスクリプトがあります。ここに様々な曲線がすべて重ねて表示されています。特に、124_2、144_2、176_2の曲線を表示したいです。これらの3つの曲線は、最初に確認した際に、単相性だと目視で判断しました。ピークを迎えた後、徐々に減少していくのです。少しだけ減少しています。それほど大きく減少しているわけではありませんが、単相性の減少と特徴付けました。
ルーチンは「いいえ、この3つの曲線はジオーキシック曲線です」と言いました。よく見てみましょう。ここに緑色の曲線が表示されていますが、確かにそこに少し揺れがあります。私は目で見て見逃していましたが、JMPは「これはジオーキシック曲線だと思います」と表示しています。これは重要なのでしょうか?分かりません。カイルの業界の人が教えてくれるはずです。しかし、JMPはこの曲線を選び出し、「いいえ、これはジオーキシック曲線だと思います」と言いました。
この2つの曲線をずっと後ろの方まで見てみると、すぐに成長が見られ、停滞期を経て、2つ目の大きな成長曲線が現れているように見えます。もしかしたら、これらは二相性曲線かもしれません。JMPは、私の目視による判断よりも実際に良い結果を出しているのかもしれません。
もう一つの曲線があります。60_2番です。どこにあるでしょうか?あそこにあります。この曲線は、先ほど言ったように単相性の死滅曲線です。確かに、上昇して、ここで下降します。成長し始めて、そして止まります。機器の解像度にまで達して、非常に階段状になっていることにお気づきだと思います。つまり、ここはスケールがかなり低いということです。この曲線は実際にはまだ始まっていません。JMPは「いいえ、これは成長曲線ではありません」と表示しています。これはかなり良い結果です。この曲線は検出されませんでしたが、あまりにも小さいため、実用的ではありませんでした。興味深い結果だと思いました。
モデルができました。グラフビルダーを閉じられますね。ニューラルネットワークでブーストされたモデルができました。これで誤分類率を確認できます。では、新しいデータがあったらどうすればいいのでしょうか?先ほどお話ししていなかったのですが、元のデータセットの190行目にあります。191行目ですね。これは非表示にして除外するつもりでしたが、大丈夫です。除外されたデータです。
191_2 実行に含まれるこれらのデータは新規データだとしましょう。これらは前回の実行、つまり前回の分析には含まれていませんでした。「一致するセル」を選択して、それをクリアします。見てみましょう。できました。では、基本的にこのプロセスを繰り返します。これはアルゴリズム上、新規データになりました。いずれにせよ、これは単相性の眼球死です。JMP がこれをどう処理するか見てみましょう。どうやってこれを取得するのでしょうか?同じことを繰り返します。
一つ注意しておきたいのは、全てのトレーニング行が元の状態のまま残っていることを確認することです。これは、これから特殊モデリングFDEを行うためです。ここで「リコール」をクリックします。設定はすべて同じです。「OK」をクリックして、同じBスプラインのフィッティングを実行します。実行すると、こちらと全く同じ結果が得られます。つまり、フィッティングはトレーニング実行のみに基づいているということです。
さて、そこから取り出したいのは、これらの機能サマリー、つまりFPCです。これを…どこに行ったっけ?ああ、ずっと下の方にある。191_2。必要なのはこれらの機能主成分です。これらがわかれば、ニューラルネットワークの式に代入して予測値を出力できます。これをコピー&ペーストするよりも、もう一度「サマリーを保存」を実行しましょう。
次に、一番下の191_2、つまりここにある行まで移動します。この4つの数字が必要です。これらは、この新しい試験の機能主成分です。Ctrl+Cでコピーします。ああ、そうだ、何か忘れていた。手順を一つ省いていた。このモデルができたら、そのモデルも保存する必要がある。数式をデータテーブルに保存し直す。データテーブルには、どこに保存したにせよ、たくさんの列が追加されている。
これが最初に用意した4つのFPCです。そして、右側に列が追加されました。ここにはニューラルネットワークの式が含まれています。各列には小さな計算式があり、ここで集計され、グループ化されて各曲線の確率が算出されます。そして最終的に、最も可能性の高い曲線がここに表示されます。
191_2の数値をコピーして、このデータセットに戻ってください。一番下まで来てください。これが191_2です。これは新しいデータセットなので、通常は何なのか分かりません。これらの数値をここに貼り付けるだけで、JMPが様々な列を計算して評価し、最終的にこれが単相性の死のデータセットであると表示します。実際、その通りでした。私の目視でそう評価したのです。おそらく、必要なだけ新しいデータセットを取得して、機能主成分を取得できるでしょう。それらをここに入力すれば完了です。
ジャーナルに戻ってまとめましょう。私たちの要約は、Functional Data ExplorerをJMP Proの他のモデリングツールと組み合わせることで、曲線の特性を分析できるということです。95%の精度を達成できましたが、さらに向上できる可能性があります。得られたモデリングプロセスは、これらの新しい曲線の種類を予測するために使用でき、時間を節約し、エラーを防ぐことができます。その手順はすべて付属論文に記載されています。
それぞれのモデルは… いや、すみません、スライドがいくつか順番が違っていました。今後の作業として、無増殖のデータについて事前にスクリーニングすることをお勧めします。OD600が0.05を超えない場合は、明らかに無増殖です。そのようなデータは除外します。考慮する必要すらありません。
様々な種類のスプライン、様々な複雑さ、様々なノット数を試してみて、これらのステップをすべて自動化するスクリプトを作成してみてください。私たちも同じようにできる可能性は十分にあります。そうすれば、処理速度を大幅に向上させることができます。
さて、これらの曲線が得られたら、もし最初の曲線のような単相性の持続曲線であれば、JMPの「曲線の近似」プラットフォームを使って同様の計算を行うことができます。得られる式はこれです。そこから、A、B、Cパラメータの遅延時間、最大成長率、漸近線を導き出します。
二相性曲線があれば、このように計算できます。これは実際には単相性曲線を2つ足し合わせただけです。JMPの非線形プラットフォームを使えば、この問題を解決できます。先ほど言ったように、増殖なしとは、単に限界値を設定するだけです。実験中のすべての時点でOD600が0.05未満であれば、増殖なしと判定します。
単相性の死については、おそらくいくつかの方法があると思います。私が行った方法の一つは、漸近線に近づく元の単相性持続曲線に、時間の関数である下降する線形関数を掛け合わせるというものです。こうすることで、後に傾きが生じる傾向があります。ここでも、非線形ソルバーを使ってMとA、B、Cについて解いてください。
これで番組は終了です。先ほどもお伝えした通り、全ての手順をまとめたPDFファイルを添付いたします。お役に立てれば幸いです。共同司会のカイルさん、ありがとうございました。また次回お会いしましょう。JMPy、これからもよろしくお願いします。