Kaggle Mechanisms of Action (MoA) Prediction 振り返り

Posted on
この記事は、最終更新日から 4 年以上経過しています。 情報が古い可能性があります。

2020/9/4から2020/12/1までKaggleで Mechanisms of Action (MoA) Prediction コンペが開催されました。 参加された皆様、お疲れさまでした。

私は、日頃はインフラエンジニアでインフラの自動化やビッグデータ基盤の検討、設計、構築などを しています。 のですが、基盤の上で動く機械学習にも興味を持ち、半年ほど基礎勉強?をして、今回、このコンペに 参加しました。

機械学習の実力的には、自分で道を切り開いていけるほどではないので、Public NotebookやDiscussionの 内容を噛み砕いて、自分のNotebookに取り込んで、改良していくスタイルで取り組みました。

コンペ序盤に、オーバーフィッティングで、金メダル圏内まで行ったのですが、 中盤で drug_id が明らかにされてからは、いかに汎化性能を上げられるのかを調べながら望みました。

それでは、(Public Notebookで公開されているものが中心になりますが、、)今回のコンペで 私がトライしてみたことを中心に振り返ってみます。

Table of Contents generated with DocToc

Overview

目的

Mechanisms of Action (MoA) 作用機序(薬の働き)の予測します。 MoA予測アルゴリズムの改善を通じて医薬品開発を前進させることを目標としています。

データ

遺伝子発現データや細胞生存率データなどの様々なインプットを与えられた異なるサンプル(sig_id)の 作用機序(MoA)応答の複数のターゲットを予測します。

評価

sig_id について、サンプルが各MoAターゲットに対して正の応答を持っている確率を予測します。 N個の sig_id 行とM個のMoAターゲットについて、N×Mの予測を行います。提出物は対数損失で採点されます。

コード要件

提出は、Jupyter Notebook形式で、実行時間が GPUなら2時間、CPUなら9時間 以内に実行できる必要があります。

データ概観

データ数

Public テストデータの 206 ラベルを予測するnotebook を提出します。 提出すると、Public テストデータが、Private テストデータに置き換えられた状態でnotebook が実行され、 Privateテストデータの予測結果が評価されます。Privateテストデータは Publicテストデータの3倍程度あります。

学習データに対応する 402 のラベルが与えられており、自由に学習に使用できます。

データが不均衡

Preprocessing

Rank Gauss

RankGaussは数値変数を正規分布に変換する方法です。

変換方法

PCA

Variance Threshold

Deep Insight

DeepInsight: A methodology to transform a non-image data to an image for convolution neural network architecture

非画像データにCNNを適用するためのテクニックです。

特徴マップ画像の解像度は、特徴の重複の割合(同じ位置にマッピングされた特徴が平均化される)に影響を与えます。

Deep Insight

Model

Multi Input ResNet

今回のコンペではNeural Networkの有効性が指摘されていました。 下記のような入力が2つあるResNetも、Publicノートブックで多く使用されていました。

Multi Input ResNet

NODE (Neural Oblivious Decision Ensembles)

Neural Oblivious Decision Ensembles for Deep Learning on Tabular Data

NODE

TabNet

TabNet : Attentive Interpretable Tabular Learning

TabNet

Training

Group Multi Label Stratified KFold

Group KFold

Group KFold

Stratified KFold

Stratified KFold

Cross-validation: evaluating estimator performance

Pre Training

私が行った学習法です。

Pre Training

Training

Main Training

その他

Some tips to avoid overfitting

Discussion: Some tips to avoid overfitting

過学習を避けるためのTipsを紹介いただいたディスカッションです。

などが提案されています。

Kaggle on Google Colab

私は今回のコンペにGoogle Colabも使用しました。Google Colabでコンペをやりやすくするために以下を行いました。

Google Colab Pro 早く日本にも来てほしいですね。

Notebook の構成

結果と感想

結果は、539th でした。コンペの楽しさを感じるとともに、データ分析の難しさも感じました。 また、トライして、Kaggle Expert を目指していきたいと思います。

今回はソロでチャレンジしたのですが、今後、チームでもやってみたいと思います。ありがとうございました。