0
雷鋒網 AI 研習社按:相信玩過 Kaggle 比賽的人都知道 bestfitting,他在加入 Kaggle 社群短短兩年之內,就以黑馬之姿成功占領比賽排行榜榜首。近日,Kaggle 對他進行了一次專訪,在專訪中,我們可以看到關于比賽的滿滿干貨。
bestfitting 真名為 Shubin Dai,生活在長沙,他的朋友們喜歡稱他為 Bingo。他目前是一名數據科學家和工程經理,創立了一家專為銀行提供軟件解決方案的公司。在工作空閑時,除了參加 Kaggle 競賽,他還是一名狂熱的山地車手,并表示自己喜歡在大自然中度過時光。
雷鋒網 AI 研習社將訪談內容整理如下,各位 Kaggler 速來看看大神是如何煉成的吧。

1. 你的背景和研究經歷是什么?
我的主修專業是計算機科學,在軟件開發方面擁有超過 10 年的經驗。至于工作,我目前創立了一個專為銀行提供數據處理和分析解決方案的團隊。
從上大學開始,我就一直對使用數學來創建能夠解決問題的程序很感興趣。這期間我不斷閱讀各種計算機科學書籍和論文,然后也很幸運,能夠在過去十年中一直關注著機器學習與深度學習的發展。

2. 你是如何開啟 Kaggle 征程的?
正如我之前所說,我一直在大量閱讀著與機器學習和深度學習有關的書籍和論文,但是在這個過程中我也發現,要將我所學到的算法應用于那些可以隨時獲取的小型數據集中是很困難的。然后我就發現 Kaggle 是一個很棒的平臺,這里有各種各樣有趣的數據集、kernel 和精彩的討論,所以我迫不及待的想要試一試。我參加的第一項競賽是「預測紅帽商業價值(Predicting Red Hat Business Value)」。
3. 你參加 Kaggle 比賽的套路是什么樣的?
1)首先是仔細閱讀比賽概述和數據描述;
2)查找類似的 Kaggle 競賽。作為一名相對較新的 Kaggler,我收集了 Kaggle 上所有往期競賽,然后做了基本分析;
3)閱讀類似競賽的解決方案;
4)閱讀相關論文,以確保自己不會錯過該領域的任何新進展;
5)分析數據并建立一個穩定的交叉驗證集;
6)數據預處理、特征工程、模型訓練;
7)結果分析,例如預測分布、錯誤分析、特定樣本分析;
8)根據分析結果改進模型或者重新設計全新模型;
9)基于數據分析和結果分析,設計模型來增加多樣性或者用于針對某些特定樣本;
10)集成學習;
11)在必要時返回步驟 1。
4. 哪個機器學習算法你最喜歡?
我會逐個選擇算法,但我更喜歡在模型集成時使用那些簡單的算法,比如嶺回歸(Ridge regression)。此外,在深度學習競賽中,我通常喜歡從 resnet-50 開始改進模型或者直接設計一個類似結構的模型。
5. 你最喜歡的機器學習工具是什么?
我非常喜歡在計算機視覺競賽中使用 PyTorch 框架,而在自然語言處理(NLP)或者時間序列競賽中采用 TensorFlow 或 Keras。當我在做數據分析時,我會使用 seaborn 庫以及 scipy 家族中的那些工具。此外,scikit-learn 和 XGB 也是非常有效的工具。
6. 你對超參數的調優方式是什么?
我會嘗試根據對數據和算法的理論理解來調整參數,如果我無法解釋為什么結果會更好或者更差,那么我會感到不安。在深度學習競賽中,我會經常檢索相關論文,并試圖找出這些作者們在相似的情形下是怎么做的。而且,我會比較參數更改前后的結果,例如預測分布、受影響的樣本等等。
7. 你采用什么方法來使得交叉驗證與最終提交能盡可能穩定?
一個好的交叉驗證集是成功的一半。如果我找不到評估模型的好方法,我是不會繼續下一步的。
為了建立一個穩定的交叉驗證集,你必須很好地理解數據集和將面臨的挑戰。我還會檢驗并確保驗證集具有與訓練集類似的分布,我會盡力確保我的模型在我的本地交叉驗證集和公共排行榜上都能獲得提升。
在某些時間序列比賽中,我會將 aside data 作為驗證集保留一段時間。
我經常以保守的方式選擇最終提交結果,我總是選擇對我的安全模型(Safe model)的進行加權平均集成,并傾向于相對冒險的那一個(在我看來,更多的參數等于更多風險)。但是,我從來不選擇我無法解釋的結果進行提交,即便這個結果有可能在公共排行榜上得到更高的分數。
8. 簡單總結一下,哪些特質幫助你贏得了競賽?
好的交叉驗證集,從其它競賽中獲取經驗,閱讀相關論文,講究紀律和堅韌不舍。
9. 哪類 Kaggle 競賽你最喜歡,為什么?
自然保護和醫療相關的比賽是我最喜歡的,我覺得我應該做點什么來讓我們生活的地球變得更加美好。
10. 機器學習中最令你興奮的領域是什么?
我對深度學習的各種進展都很感興趣。我想用深度學習解決除了計算機視覺以及自然語言處理之外的問題,所以我會嘗試在我參加的比賽和我的工作中使用它們。
11. 在解決數據科學問題時,你的領域專業知識發揮了多大的作用?
實話實說,我不認為我的專業領域知識發揮了極大作用,原因如下:
1)Kaggle 官方會非常細致地準備數據集,這對于所有人都是公平的;
2)想要簡單地通過使用成熟的方法贏得比賽非常困難,特別是在深度學習比賽中,因此我們需要更多創造性的解決方案;
3)數據更加重要,我們可能需要閱讀一些相關的材料。
但是有一些例外。在 Planet Amazon competition 中,我確實從自己之前的熱帶雨林經驗中獲得了一些想法,但這些經驗在技術上而言,不能稱為領域專業知識。
12. 你認為自己最有創意的技巧、發現或者方法是什么?
在最開始的時候一定要準備好解決方案文檔。我會強迫自己寫一份清單,里面包括目前所面臨的挑戰,我應該閱讀的解決方案和論文,以及可能遇到的風險,所有可能有效的交叉驗證策略,可能有用的數據增強策略。而且,我會不斷更新文檔。大部分的文件最終都成為了我的獲勝策略。
13. 你在現在的工作中是如何使用數據科學的,在 Kaggle 上的競賽經驗是否對此有幫助?
我們嘗試使用機器學習來解決各種銀行業務問題:預測銀行網點的訪客數量,預測 ATM 應該準備的現金,產品推薦,操作風險控制等等。
在 Kaggle 中的競賽也改變了我的工作方式,當我想找到解決問題的方案時,我會嘗試去尋找類似的 Kaggle 競賽,因為它們是寶貴的資源,并且我還建議我的同事們研究類似的獲獎解決方案,說不定可以從中獲得靈感。
14. 你對權衡模型復雜度和訓練測試時間有何看法?
我的看法是:
1)當正確率最重要時,不應該過度關注模型的復雜性。我們必須充分利用經過數月的努力才獲得的訓練數據。
2)現在如果只使用多個弱模型的集成是很難去贏得比賽的。如果你想成為第一名,通常需要有非常好的單一模型。當我想在比賽中獲得第一名的時候,我經常強迫自己設計不同的模型,這些模型可以在公共排行榜上取得前 10 名甚至是前 3 的成績。
3)以我自己的經驗,我可以在競賽中設計多個模型來探索這個問題的上限,然后選擇一個簡單的模型使其在實際情況下可行。我總是盡最大努力為競賽組織者提供一個簡單的例子,然后在獲勝者采訪電話中與他們進行討論。我發現一些組織者甚至使用我們的解決方案和思想來解決他們面臨的一些其他問題。
4)可以發現,當訓練、測試運行時間很重要時,Kaggle 有很多機制來確保性能:kernel 競爭、團隊規模限制、添加更多在打分時沒有計算的數據等。我相信 Kaggle 也會根據挑戰的目標而改進規則。
15. 你是如何在 Kaggle 競賽中越來越領先的?
有趣的競賽和 Kaggle 中強大的競爭對手是我變得越來越強的原因。
在這里有這么多優秀的對手,想要贏得比賽非常困難,他們把我推到了極限。我去年曾試圖獨自完成盡可能多的比賽,然后我必須猜測出其他競爭對手會怎么做。要做到這一點,我必須閱讀大量材料并且構建多功能模型。在比賽之后,我還會閱讀來自其他競爭對手的所有解決方案。
16. 最近你最關注哪些機器學習研究?
我期待今年可以參與一項深度強化學習競賽。
17. 你僅僅花了 15 個月就占領排行榜榜首,這是如何做到的?
首先,第一名是衡量我在 Kaggle 上學到了多少東西以及運氣好壞的標準。
我在前幾次競賽中,試圖將近年來學到的理論轉化為技巧,并且從其他人那里學到很多東西。
在我對 Kaggle 競賽有了一定了解之后,我開始思考如何以系統化的方式進行比賽,因為我在軟件工程方面有許多年的經驗。
就這樣大約半年后,我首次拿到第一名,變得更加自信。我想我可能在半年內成為一名特級大師。在 Planet Amazon competition 比賽中,我以第一名作為目標。
然后我覺得我應該繼續使用之前提到的策略和方法,并且取得了更多的成功。在贏得 Cdiscount 競賽后,我到達用戶排名榜前列。
受益于 Kaggle 平臺,我從其他人那里學到了很多東西,Kaggle 的排名系統也在我的進步中發揮了重要作用。同時我也感到非常幸運,因為我從未想過我可以連續獲得 6 個獎項,在許多比賽中我的目標都是前 10 名或者前 1%。我不認為我可以再次復現這樣的高光時刻。
但是,我來參加競賽的目的并不是為了一個好排名,我把每場比賽都視為學習的機會,我會嘗試從我不太熟悉的領域挑選比賽,這樣做的結果就是我在去年強迫自己閱讀了數百篇論文。
18. 你之前提到了自己喜歡閱讀往期比賽中高分團隊的解決方案。你還有沒有什么想特別強調的?
我尊重所有的贏家和精彩解決方案的貢獻者,我知道他們付出了多少努力。我總是以敬佩的態度閱讀這些解決方案。
這里有一些來自 Data Science Bowl 2017 的令人難忘的洞見:PyTorch、醫學圖像的 3D 分割、來自 Web 流量時間序列預測的解決方案,它使用來自自然語言處理的序列模型來解決時間序列問題,另外還有 Tom (https://www.kaggle.com/tvdwiele)和 Heng (https://www.kaggle.com/hengck23)的優秀解決方案。
via:blog.kaggle.com,雷鋒網 AI 研習社編譯整理。
雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。