Kaggle Stanford Ribonanza RNA Folding コンペ に挑戦(3)

2023/10/20に公開

こちらのKaggle Stanford Ribonanza RNA Folding コンペ に挑戦
記事の取り組み内容になります。

過去のコンペの解法

過去の関連してそうなコンペの解法を見て、何かヒントを得られないかとの考えから、解法を見てみたいと思います。
そこそこ前にはなりますが、2020年に過去に同じようにRNAを題材にした、OpenVaccine: COVID-19 mRNA Vaccine Degradation Prediction コンペがありますので、こちらのコンペの解法を見てみたいと思います。

参考にした解法

コードを公開してくれているので、こちらの4位の解法を参考に、どのように予想したのか見てみようと思います。
あくまで個人の読み取りなので、理解が間違っているかもしれませんが、ご了承ください。

・目的変数

塩基配列の各塩基の5つの目的変数を予測するコンペで、5つの値の内、reactivity、deg_Mg_pH10、deg_Mg_50Cのみでスコア化されます。

※ 塩基配列は以下のようなAGCUで構成された配列になります
GGAAAAGCUCUAAUAACAGGAGACUAGGACUACGUAUUUCUAGGUAACUGGAAUAACCCAUACCAGCAGUUAGAGUUCGCUCUAACAAAAGAAACAACAACAACAAC

・データセット

学習データは、コンペデータ、拡張データを利用して、エッジデータとノードデータを用意している。

※ エッジデータとノードデータとは?(chat GPT)
機械学習やネットワーク解析の文脈において、"エッジデータ"と"ノードデータ"は、グラフ構造を表現するための基本的な要素です。
以下にそれぞれの概念を説明します。

  • ノードデータ(Node Data):

    • ノードデータは、グラフ内の個々のノードまたはノードと呼ばれる要素に関連する情報を表します。
    • グラフ内のノードは、異なるエンティティ、オブジェクト、または要素を表現するために使用されます。
      例えば、ソーシャルネットワークの場合、ユーザーアカウントやプロフィールが個々のノードを表すことがあります。
    • ノードデータには、ノードの属性、特性、または特徴量が含まれることがあり、これらの情報はノードの性質や属性を表現します。
      例えば、ソーシャルネットワークの場合、ユーザーノードにはユーザー名、年齢、友達リストなどの属性が含まれる可能性があります。
  • エッジデータ(Edge Data):

    • エッジデータは、グラフ内のノード間の関係を表します。エッジはノード間の接続線またはリンクを表し、ノード間の情報のフローを示す役割を果たします。
    • エッジデータには、ノード間の関係性に関する情報が含まれます。
      例えば、ソーシャルネットワークの場合、ユーザー間の友達関係、フォロー/フォロワー関係、またはメッセージの送信などがエッジデータとして表現されます。
    • エッジデータには、エッジの重み、方向、タイプなどの情報が含まれることがあります。
      例えば、ユーザーAがユーザーBをフォローしている場合、エッジには"フォロー"というタイプの情報が含まれ、方向はAからBへ向かうものとして表現されます。

エッジデータとノードデータは、グラフデータベースやネットワーク分析、社会ネットワーク分析、推薦システムなど、さまざまな分野で使用されます。
これらのデータは、ノードの属性とエッジの関係性に関する情報をキャプチャし、機械学習アルゴリズムを使用して異なるタイプの分析や予測を行うために活用されます。

・モデル

目的変数は特定の値が時系列で隣接する値と相関しているので、近くの予測値を考慮するRNN(リカレントニューラルネットワーク)が有用だそうです。
最終的なソリューションは、オートエンコーダの後に、2つのRNNを置いたモデルで、RNNはの4つの組み合わせ(LSTM+LSTM、LSTM+GRU、GRU+LSTM、GRU+GRU)で、それぞれモデルを作成し、アンサンブルしている。
また、Multi-Head Attentionも使用している。

※ LSTM、GRUは、RNNの一種になります。
※ RNNとは?(chat GPT)
リカレントニューラルネットワーク(Recurrent Neural Network、RNN)は、シーケンスデータや時系列データをモデル化するためのディープラーニングアーキテクチャの一種です。
RNNは、シーケンシャルなデータに対する柔軟なモデリング能力を持ち、過去の情報を考慮して未来の出力を予測することができます。

※ オートエンコーダとは?(chat GPT)
Autoencoder(オートエンコーダ)は、教師なし学習の一種で、次元削減(Dimensionality Reduction)や特徴量抽出(Feature Extraction)のために使用されるニューラルネットワークのアーキテクチャです。
オートエンコーダは、データを入力として受け取り、同じデータを出力として生成することを目指します。
その中間にある隠れ層は、データの中から重要な特徴を抽出し、低次元の表現に変換する役割を果たします。
オートエンコーダは、次元削減、データ圧縮、ノイズ除去、特徴量学習、生成モデルなどのタスクに応用できます。

※ Multi-Head Attentionとは?(chat GPT)
複数のattention headを使用して、モデルが異なる部分に同時に注意を払うことができるようにします。
各ヘッドは異なるパラメータを持ち、異なる視点からシーケンス内の関連性を学習します。
その後、ヘッドの出力は結合され、最終的なAttentionの結果が生成されます。

・大まかな流れ

コンペデータと拡張データを利用して、ノードデータとエッジデータを準備して、Multi-Head Attention, AutoEncoder, LSTM, GRUを用いて、アンサンブルしているようです。

・解法を見てみて

LSTM、GRUなどのモデルが、Stanford Ribonanza RNA Folding コンペで利用できるかは分かりませんが、RNAの塩基対の隣接配列データの作成の方法など、コンペに役立ちそうな情報を得られた気はします!

Discussion