kaggle蛋白質比賽分析

一、數據準備

蛋白質數據比賽採用了kaggle官網提供的數據集,以及額外的人類蛋白質圖譜網站的數據集:https://www.proteinatlas.org/

二、數據增強

數據增強目的:

  • 增加訓練的數據量,提高模型的泛化能力。即使擁有大量數據,也需要採用數據增強的方法來提高模型泛化能力。
  • 增加噪聲數據,提升模型的魯棒性。
    採用了AutoAugment:自動數據增強方法
    論文鏈接:
    https://arxiv.org/pdf/1805.09501.pdf

三、損失函數

採用gamma爲2的FocalLoss

四、訓練參數

  • 採用Adam優化器,學習率爲0.0005。
  • 沒有學習率調度。
  • 對於1024x1024圖像的大型圖像,採用每32個圖片來更新一次權重參數,即batch-size爲32。
  • 當出現以下情況則提前停止訓練:
    1. 如果macro F1 score較高, LB scores 較低時
    2. 在分析了每個班級的F1得分後,我發現當宏觀F1得分增加時,高比例班級(如0,1)的F1得分正在下降。由於依靠罕見的課程分數是有風險的,我決定在0級的F1分數下降時停止訓練。

五、閾值設置

由於macro F1 score對閾值設置非常敏感,所以最後採用的方法是使得驗證集中正預測的值與正例值接近。

六、模型

這裏想特別強調的一點是,Kaggle 在計算得分的時候,有Public Leaderboard (LB)和 Private LB 之分。具體而言,參賽選手提交整個測試集的預測結果,Kaggle 使用測試集的一部分計算得分和排名,實時顯示在 Public LB上,用於給選手提供及時的反饋和動態展示比賽的進行情況;測試集的剩餘部分用於計算參賽選手的最終得分和排名,此即爲 Private LB,在比賽結束後會揭曉。用於計算 Public LB 和 Private LB 的數據有不同的劃分方式,具體視比賽和數據的類型而定,一般有隨機劃分,按時間劃分或者按一定規則劃分。

這個過程可以概括如下圖3所示,其目的是避免模型過擬合,以得到泛化能力好的模型。如果不設置 Private LB(即所有的測試數據都用於計算 Public LB),選手不斷地從 Public LB(即測試集)中獲得反饋,進而調整或篩選模型。這種情況下,測試集實際上是作爲驗證集參與到模型的構建和調優中來。Public LB上面的效果並非是在真實未知數據上面的效果,不能可靠地反映模型的效果。劃分 Public LB 和 Private LB 這樣的設置,也在提醒參賽者,我們建模的目標是要獲得一個在未知數據上表現良好的模型,而並非僅僅是在已知數據上效果好。

在這裏插入圖片描述
圖1 數據挖掘比賽基本流程
在這裏插入圖片描述
圖2 劃分 Public LB 和 Private LB的目的

  • 模型1:ResNet34,5 fold ensemble with TTA
    排名分數:Public LB 0.574 / Private LB 0.500
  • 模型2inceptionv3: single fold with TTA:
    模型排名:Public LB 0.583 / Private LB 0.549
  • 模型3:e_resnext50:single fold with TTA
    模型排名:Public LB 0.601 / Private LB 0.531
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章