Kaggle COVID Vaccineコンペをさくっと振り返る

はじめに

この記事では
OpenVaccine: COVID-19 mRNA Vaccine Degradation Predictionコンペについて振り返ります。

コンペの概要

COVIDのワクチン

COVIDー19のワクチンとして多様な種類のワクチンが検討されています。

コンペの背景

今回のコンペは、mRNAワクチンについて扱っています。RNAは自発的に分解される傾向にあることが知られており、mRNAワクチンは不安定であるという課題があります。
そこで、ホストはRNA分解のモデルと設計ルールを開発することを目指してコンペを開催しました。
このコンペでは与えられるRNAに対して、RNAを構成する各塩基がどれだけ不安定であるかを正確に予測するモデルを作成しました。
日本語でコンペの概要について説明したカーネルがあるので、こちらも読むと良いと思います。

データの概要

1つのサンプルが1つのRNAに対応します。

入力

抜粋ですが、下記のような情報が含まれていました。RNAは模擬的に一次元で表されていますが、実際にはRNAは三次元の構造を取っています。
詳しくはこちらのディスカッションを読むと良いでしょう。

1
2
3
"sequence":string"GGAAAAGCUCUAAUAACAGGAGACUAGGACUACGUAUUUCUAGGUAACUGGAAUAACCCAUACCAGCAGUUAGAGUUCGCUCUAACAAAAGAAACAACAACAACAAC"
"structure":string".....((((((.......)))).)).((.....((..((((((....))))))..)).....))....(((((((....)))))))....................."
"predicted_loop_type":string"EEEEESSSSSSHHHHHHHSSSSBSSXSSIIIIISSIISSSSSSHHHHSSSSSSIISSIIIIISSXXXXSSSSSSSHHHHSSSSSSSEEEEEEEEEEEEEEEEEEEEE"
  • sequence: 塩基を表します。
    • RNAなので、アデニン(A)、グアニン(G)、シトシン(C)、ウラシル(U)の4種類です。
  • structure: 括弧付きの塩基は、対応する括弧付きの塩基に対応することを示しています。
  • predicted_loop_type: どのようなループ構造を取っているかを示しています。
    • S: paired “Stem” M: Multiloop I: Internal loop B: Bulge H: Hairpin loop E: dangling End X: eXternal loop

出力

3変数を予測します。

  • reactivity: RNAサンプルの二次構造の可能性を判断するために使用
  • deg_Mg_pH10: 高pH(pH 10)でマグネシウムなしでインキュベートした後の塩基/結合での分解の可能性を判断するために使用
  • deg_ng_50C: マグネシウムなしで高温(50℃)でインキュベートした後の塩基/結合での分解の可能性を判断するために使用

個人的なこのコンペのカギ

データ長

seq_length(RNAの塩基の数)がTrainおよびPublic Testでは107、Private Testでは130でした。つまり、

  • seq_lenが可変なモデルを作る必要がある
  • TrainおよびPublic TestとPrivate Testのデータ分布が異なる
    ということです。

解法

カーネルなどをみると、GNN, Attention, CNN, LSTM, GRUのアンサンブルが用いられていました。上位陣の解法を含め突飛なモデリングはあまり無かったように思います。

上位のソリューション

小ネタ

コンペが延長

リスコアリングに時間がかかりコンペが一日延長されました。

SN_filter問題

実験の値には不確定さがあり、信頼できるサンプルであるかどうかを表すフラグのようなものとして、SN_filterという変数があった。

コンペ中

  1. ホスト「public testのみにfilterを適用する(SN_filter=1を使用する)」
  2. 参加者「private testにもfilterを適用するべき」
  3. ホスト「OK」

    コンペ終了後

  4. LB公表
  5. 参加者「全体的にスコアが悪いし、やっぱりfilterが適用されていないのでは?」
  6. ホスト「ごめんなさい。確かに適用されていなかったので再計算する」
  7. LB大変動

定数倍

https://www.kaggle.com/c/stanford-covid-vaccine/discussion/189182
良い子は真似してはいけない黒魔術的なやつです。Kaggleでは提出全体を単純に定数倍することで、スコアが良くな流ことがあります。

Kaggleおすすめ書籍

Kaggleで勝つデータ分析の技術に比べると、初学者向けの書籍といえます。

オンライン学習サービスUdemyでもKaggleについて学ぶことができます。

【Kaggleで学ぼう】Python と Keras で学ぶディープラーニング開発入門

宣伝

機械学習エンジニアを目指している方向けに、書籍を出しました。
サクッと読める内容ですので是非お手に取ってみてください。

記事情報

  • 投稿日:2020年10月8日
  • 最終更新日:2020年10月8日