【PDF下載】如何寫一篇牛逼的機器學習論文?17頁實操指南

↑↑↑點擊上方藍字,回覆資料,10個G的驚喜

豐色 發自 凹非寺 量子位 報道 | 公衆號 QbitAI

還在學師階段的研究生以及從業新手們,想在機器學習研究中少走彎路嗎?

或許下面這篇論文可以幫到你:

《如何避免機器學習研究中的陷阱?一本給學術研究人員的指南》

文末下載

作者是英國赫瑞-瓦特大學數學與計算機科學學院的副教授,同時也是愛丁堡機器人中心的成員,博士畢業已經十多年,這篇17頁的論文主要介紹了機器學習學術研究中的一些常犯錯誤,以及如何避免。

指南共涵蓋了機器學習過程的五大方面:建模前如何準備,如何建出可靠的模型,如何穩健地評估模型,如何公平地比較模型以及如何報告結果。

一位已經從業的機器學習研究員稱讚該論文很有價值,因爲文中提到的所有錯誤他在博士學習和工作期間中都遇到很多次。他準備讓後面所有新入職的工程師都好好看看。

不少人則認爲該指南的意見可能並不受歡迎,因爲很多都是研究人員本該知道的基本常識,比如多次重複實驗並報告平均值和方差進行嚴格比較,但他們就是爲了方便或者讓數據更好看而選擇性忽視

下面就詳細看看作者都提了哪些常見錯誤。

建模前的準備

爲了得到符合預期用途的模型、可以順利發表論文的結果,建模之前你需要做好以下6點準備:

1、確保花時間研究你要用的數據集,來源可靠、質量有保證。

2、但不要查看測試數據,防止先入爲主做出某些假設導致最終模型通用性差

3、保證數據量足夠大,當然保證不了也是常有的事兒,解決辦法:

比如評估模型時交叉驗證數據、採用數據擴充技術(數據集中某類數據不夠時也可採用)

但總的來說,數據不夠模型就不能設計得太複雜,不然分分鐘給你過擬合。

4、要和相關領域專家談談,防止研究脫離實際,並且他們也可以幫助你向最合適的期刊/受衆發表。

5、搜遍相關文獻,雖然發現別人已經研究過了很沮喪,但是寫論文時你該怎麼解釋爲什麼要覆蓋相同的領域

6、一定要提前考慮模型部署的問題:大部分學術研究最終都是要落地吧?好好考慮落地場景的資源、時間限制等問題來設計模型。

如何建出可靠的模型

1、不要讓測試數據參與到訓練過程中(這點前面也已強調過)

2、嘗試不同的ML模型,別套用,具體問題具體分析找出最適合解決你的問題的那個。

“湊合”的例子包括將期望分類特徵的模型應用於由數字特徵組成的數據集、將假定變量之間沒有依賴關係的模型應用於時間序列數據,或者只相信最新的模型(舊的不一定不合適)

3、一定要優化模型的超參數。使用某種超參數優化策略比較好,這樣在寫論文時也好整。除了數據挖掘實踐之外,可以使用AutoML技術優化模型及其超參數的配置。

4、在執行超參數優化和特徵選擇要小心:防止測試集“泄漏”,不要在模型訓練開始之前對整個數據集進行特徵選擇。理想情況下應使用與訓練模型所用數據完全相同的數據。

實現這一點的常用技術是嵌套交叉驗證(也稱爲雙交叉驗證)

如何穩健地評估模型

對模型進行不公平的評估,很容易讓學術研究的水變渾濁

作者一共提了5點:

1、一個模型在訓練集上的表現幾乎毫無意義,保證測試集與訓練集之間的獨立

2、在連續迭代多個模型,用前面的數據指導下一個的配置時使用驗證集,千萬不要讓測試集參與進來。可以根據驗證集對模型進行測量:當分數開始下降時,停止訓練,因爲這表明模型開始過擬合。

3、對模型多次評估,防止低估/高估性能。十次交叉驗證是最標準的做法,對很小的數據類進行層化也很重要;需要報告多個評估的平均值和標準偏差;也建議保留單個分數記錄,以防以後使用統計測試來比較模型。

4、保留一些測試數據以無偏評估最終的模型實例

5、不要對不平衡的數據集使用準確度(accuracy)指標。這個指標常用於分類模型,不平衡數據集應採用kappa係數或馬修斯相關係數(MCC)指標。

如何公平地比較模型

這是非常重要的一環,但很驚訝的是很多人都比不對,作者表示一定要確保在同一環境中評估不同的模型,探索多個視角,並正確使用統計測試。

1、一個更大的數字不意味着一個更好的模型。應將每個模型優化到同等程度,進行多次評估,然後使用統計測試確定性能差異是否顯著。

2、要想讓人相信你的模型好,一定要做統計測試

3、進行多重比較時進行校正:如果你以95%的置信水平做20個成對測試,其中一個可能會給你錯誤的答案。這被稱爲多重性效應。最常見的解決方法是Bonferroni校正

4、不要總是相信公共基準測試的結果

使用基準數據集來評估新的ML模型已變得司空見慣,你以爲這會讓結果更透明,實際上:

如果測試集的訪問不受限,你沒法確保別人沒有在訓練過程中使用它;被多次使用的公共測試集上的許多模型可能會與之過度匹配;最終都會導致結果樂觀。

5、考慮組合模型。

如何報告結果

學術研究的目的不是自我膨脹,而是一個貢獻知識的機會。爲了有效地貢獻你的想法,你需要提供研究的全貌,包括哪些有效哪些無效。

1、保持你所做所發現的成果透明,這會方便其他人更容易地在你的工作基礎上擴展。共享你的代碼也會讓你在coding的時候更認真。

2、提供多個測試集上的報告,爲每個數據集報告多個度量指標(如果你報告F值,請明確這是F1得分還是精度和召回率之間的其他平衡;如果報告AUC,請指出這是ROC曲線下的面積還是PR下的)

3、不要在結果之外泛化,不要誇大,意識到數據的侷限性。

4、報告統計顯著性時一定要小心:統計人員越來越多地認爲,最好不要使用閾值,而只報告p值,讓讀者來解釋這些值。

除了統計意義之外,另一件需要考慮的事是兩個模型之間的差異是否真正重要。

5、最後,再回過頭完整的看一眼你的模型,除了報告性能指標,看看它能解決多少實際問題。

以上就是所有的內容,作者表示,部分意見可能有爭議,內文也並非詳盡無遺,因此提供了很多參考鏈接供大家進一步參考。

另外理論總是落後於實踐,我們今天認爲正確的東西明天可能不正確,因此大家都要以開放的心態面對機器學習,緊跟最新技術進展,謙虛地接受新知識。

指南地址:
https://arxiv.org/abs/2108.02497

參考鏈接:
https://www.reddit.com/r/MachineLearning/comments/ozuphh/r_how_to_avoid_machine_learning_pitfalls_a_guide/

《如何避免機器學習研究中的陷阱?一本給學術研究人員的指南》

PDF及配套代碼下載


   
   
   

1、 關注「機器學習算法與Python實戰
 
    
    
    

2、回覆「機器學習論文」(建議複製)即可獲取





   
   
   

推薦閱讀

(點擊標題可跳轉閱讀)

我的深度學習之路

一位數學天才的遭遇

測評:《機器學習中的數學》

6行代碼!用Python將PDF轉爲word

Tensorflow是系統派,Pytorch是算法派

老鐵,三連支持一下,好嗎?↓↓

本文分享自微信公衆號 - 機器學習算法與Python實戰(tjxj666)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章