バーチャルスクリーニング (3)
予測値(スコア)が出力された後は、その値を実際のラベルと照合して、
予測性能を評価することになります。
バーチャルスクリーニングの分野では、
「エンリッチメント(enrichment)」という概念に則って評価することが度々あります。
これは、「スコア上位の化合物セットは、ランダム選択セットより何倍多く活性化合物を含むと期待できるか」
というシンプルな考え方に基づいています。
そして、閾値となるスコア順位を漸増しながら、活性化合物数をプロットしたものが、
「エンリッチメント曲線 (enrichment curve)」と呼ばれます。
それでは、統計ソフトRを用いて、エンリッチメント曲線を描いてみましょう。
僭越ながら、私が投稿したenrichvsパッケージを使います。
library(enrichvs)
data(dud_egfr)
plot_enrichment_curve(-dud_egfr$energy, dud_egfr$label)
1つ目の引数にスコア(値が大きいほど良いと仮定)の配列を、
2つ目の引数に対応するラベル(1=活性, 0=不活性)の配列を入れます。
すると、こんな図が出ます。
化合物を高スコア側から順にいくらか選んだとき(横軸)に
活性化合物がどのくらい網羅されている(縦軸)か、
直感的に理解できるプロットです。
波線が理想曲線、点線がランダム曲線、実線がスコア順位によるエンリッチメント曲線にそれぞれ対応しています。
実線プロットが理想曲線に近づくほど、良いスコア付けといえます。
実用上は、スコア上位の化合物しか興味がないので、
曲線の立ち上がり(つまり左端)を注意深く観察することになります。
そのために、横軸を対数軸にすることもしばしばです。
plot_enrichment_curve_xlog(-dud_egfr$energy, dud_egfr$label)
ここで表示される図はちょうど、Huangらのベンチマーク論文*1のfigure 3と同じ形です。というのも、サンプルデータdud_egfrは、この論文のデータセットに由来しているからです。