「このQSARモデル、予測精度99%って書いてあります!」
瀬名が興奮気味に報告した。
リナが冷静に尋ねた。「訓練セットでの精度?それともテストセット?」
「えっと…訓練セットです」
「なら、信用できない」リナがきっぱり言った。
「どうしてですか?99%ですよ」
朗が説明を始めた。「過学習の可能性が高い。モデルが訓練データを丸暗記しているだけかもしれない」
「丸暗記…?」
リナが画面を見せた。「これを見て。訓練セットでは完璧に当たるが、新しいデータでは精度が50%」
「全然ダメじゃないですか…」
「これが過学習だ」朗が続ける。「データの本質的なパターンじゃなく、ノイズまで学習している」
瀬名がメモを取る。「じゃあ、どうすれば良いモデルか分かるんですか?」
「交差検証」リナが答えた。「データを分割して、一部で訓練し、残りでテストする。それを繰り返す」
「外部検証セットも重要だ」朗が付け加えた。「全く見たことのないデータで、どれだけ当たるか」
瀬名が考え込んだ。「でも、QSARって統計的な手法ですよね。必ず誤差はありますよね?」
「その通り」リナが認めた。「だから、予測値を絶対視してはいけない」
朗が例を示した。「このモデル、R²が0.8だ。まあまあの精度」
「80%の分散を説明できる…」
「でも、個々の予測には誤差がある。信頼区間を見てほしい」
画面には、予測値の周りにエラーバーが表示されていた。
「結構幅がありますね…」
「特に、訓練データの範囲外では誤差が大きくなる」リナが指摘する。
「外挿の危険性だ」朗が説明した。「モデルは、学習した範囲内でしか信頼できない」
瀬名が尋ねた。「じゃあ、全く新しい構造には使えないんですか?」
「慎重に使うべきだ」リナが答えた。「参考程度に留めて、実験で確認する」
朗が別の問題を指摘した。「記述子の選択も重要だ。何を入力として使うか」
「分子量、logP、水素結合ドナー数…」瀬名が挙げる。
「それは物理化学的記述子」リナが分類した。「他にも、トポロジカル記述子、フィンガープリント、3D記述子…様々ある」
「どれを選ぶかで、モデルの性能が変わる」朗が続ける。
「多ければ多いほど良い…ですか?」
「いや、逆だ」リナがきっぱり言った。「記述子が多すぎると、過学習しやすくなる」
「次元の呪いというやつだ」朗が補足する。「データ数に対して、変数が多すぎる状態」
瀬名が混乱してきた。「じゃあ、どうバランスを取るんですか?」
「特徴選択やPCAで次元削減する」リナが答えた。「重要な記述子だけを残す」
「そして、モデルの複雑さを制御する」朗が付け加えた。「正則化やアーリーストッピング」
瀬名がメモを取る。「QSARって、思ったより難しいんですね…」
「簡単に見えて、落とし穴が多い」リナが言った。
朗が別の観点を示した。「解釈可能性も重要だ。なぜその予測になったのか、説明できるか」
「ブラックボックスじゃダメなんですか?」
「予測だけなら良いかもしれない」リナが答える。「でも、創薬では理解が必要だ」
「どう改善すれば良いか、分からなければ意味がない」朗が続ける。
「だから、線形モデルやツリーモデルが今も使われる」リナが説明した。「ディープラーニングより精度は劣るが、解釈しやすい」
瀬名が尋ねた。「じゃあ、ディープラーニングは使わないんですか?」
「使う」リナが認めた。「でも、注意深く。SHAP値やLIMEで解釈を試みる」
「モデルの説明可能性は、最近のホットトピックだ」朗が付け加えた。
瀬名が総括しようとした。「QSARは便利だけど、盲信してはいけない…」
「その通り」リナが微笑んだ。「道具として賢く使う。それがプロのやり方」
朗が付け加えた。「そして、常に実験で検証する。計算は仮説を生むが、真実は実験が決める」
「計算と実験の両輪…」
「そう。どちらか一方では、効率的な創薬はできない」
窓の外で、夕暮れが迫っている。モデルは真実を語るか。いや、真実の一面を映すに過ぎない。でもその不完全な鏡を、賢く使えば、見えない未来が少しだけ見えてくる。
「次は、ベイズ最適化について学んでみよう」リナが提案した。
「実験と計算を組み合わせる手法ですか?」
「そう。少ない実験で、効率的に最適化する。QSARの進化形みたいなものよ」
瀬名は期待に胸を膨らませた。予測の世界は、まだまだ奥が深そうだった。