丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能 正文
發(fā)私信給AI研習(xí)社-譯站
發(fā)送

0

如何開始 Kaggle 比賽之旅

本文作者: AI研習(xí)社-譯站 2019-05-21 10:25
導(dǎo)語:如果剛剛完成你的第一個機器學(xué)習(xí)課程,不確定如何開始使用新學(xué)的知識。

如何開始 Kaggle 比賽之旅

本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 :

How to Start Competing on Kaggle

作者 | Chirag Chadha

翻譯 | IinIh      編輯 | 鄧普斯?杰弗、王立魚

原文鏈接:

https://towardsdatascience.com/how-to-begin-competing-on-kaggle-bd9b5f32dbbc

如何開始 Kaggle 比賽之旅

如果剛剛完成你的第一個機器學(xué)習(xí)課程,不確定如何開始使用新學(xué)的知識。那你應(yīng)該從簡單的Iris數(shù)據(jù)集開始,或者是練習(xí)下Titanic的數(shù)據(jù)(這可能是最先應(yīng)該做的事)。但是有什么更有趣的,能直接上手,和網(wǎng)絡(luò)上的陌生人一起比賽并獲得獎金呢?

如果你正在讀這篇文章,你應(yīng)該已經(jīng)知道Kaggle是一個數(shù)據(jù)科學(xué)的比賽平臺,在這里大家可以使用結(jié)構(gòu)化(數(shù)值或者類別的表格化數(shù)據(jù))和非結(jié)構(gòu)化數(shù)據(jù)(比如文字,圖像,音頻),參與到大量機器學(xué)習(xí)話題的比賽中,并且?guī)е@取獎金和人人向往的Kaggle金牌的目標(biāo)。盡管你可能會說和別人一起比賽會有所膽怯,但是最重要的是學(xué)習(xí)到更多的知識,而不是關(guān)注比賽結(jié)果。帶著這樣的心態(tài),你會發(fā)現(xiàn)比賽會變得有趣,收獲滿滿,甚至上癮。

  第一步選擇一個比賽

找到一個有興趣的比賽

在你開始一個新的比賽的時候,這是要考慮的最重要的事。你需要給自己大約兩個月的時間來解決一個問題,并真正熟悉數(shù)據(jù)的來龍去脈。這需要花費大量的時間。選擇了一個你沒有很大興趣的比賽,只會讓你變得更加沒有興趣,在加入比賽的幾個星期之后就放棄了。在比賽時間軸的早期加入,會給你更多的時候去了解背景知識,在與社區(qū)成員一起解決問題的各個階段提高學(xué)習(xí)質(zhì)量。

聚焦在學(xué)習(xí)上

如果你發(fā)現(xiàn)對比賽感到沮喪并認(rèn)為這太困難了,那么就要盡可能地集中精力學(xué)習(xí)并持續(xù)向前。專注于學(xué)習(xí)材料中,這樣你可以學(xué)習(xí)更多。當(dāng)你不在擔(dān)心在排行榜上的排名時,也許你就能找到一個突破口。

嘗試去理解分?jǐn)?shù)排名最高的kernels的每一行代碼。

問問自己是否有淺顯的方法能夠提高他們的結(jié)果。比如說,你是否可以創(chuàng)建新的特征來提升模型的分?jǐn)?shù)?是否可以稍微調(diào)整他們使用的學(xué)習(xí)率來獲得更好的性能?去尋找一些垂下來的水果,而不要嘗試重新發(fā)明輪子。這種心態(tài)能極大加速你的學(xué)習(xí),同時確保你不會變得沮喪。

檢查規(guī)則中奇怪的規(guī)定

這一點沒有和其他內(nèi)容那么重要,盡管如此還是要注意下。最近的一個比賽中包含了下面這樣一條規(guī)則:

[ 你的提交] 中不能包含機密信息和商業(yè)秘密,不能是已注冊的專利或者是正在提交申請專利的應(yīng)用.

一個用戶在論壇中說到,這個對規(guī)定會使得使用dropout變成違法的,這個技術(shù)已經(jīng)由Google申請了專利。

  Kernels和討論

在整個比賽過程中你需要常常去查看下Kernels和討論區(qū)。

從查看一些EDAs(Exploratory Data Analyses?, Exploratory Data Analysis’s?, Exploratory Data Analysii?)開始,來判斷你在這個領(lǐng)域和話題的興趣程度。在你瀏覽別人的成果時,一邊思考適合這個模型的數(shù)據(jù)的新想法,比如說特征工程等等。

在討論區(qū)中“歡迎”的帖子中提供了非常好的背景知識。

獲取在這個比賽領(lǐng)域中的知識一定是有好處的,這能夠幫助你深入理解你的模型怎樣工作,能極大地幫助到你的特征工程。我通常在比賽開始之前會花費一周或者兩周的時間去閱讀盡可能多的材料理解這個問題。為了幫助到大家,大部分的比賽組織者會在論壇中創(chuàng)建入門的帖子,并給出這個領(lǐng)域中重要的論文/文章的鏈接。他們也許還會提供如何解決大數(shù)據(jù)集的提示,和數(shù)據(jù)的基本見解。當(dāng)您獲得有關(guān)手頭問題的更多信息時,這些流程總是值得檢查并回顧。

  探索數(shù)據(jù)分析

你應(yīng)該關(guān)注什么?

最初對于數(shù)據(jù)集的分析,針對你分析的數(shù)據(jù)類型的不同差別很大。但是,這些概念通常在各個領(lǐng)域都是相似的,下面的內(nèi)容可以根據(jù)你研究的特定領(lǐng)域進行調(diào)整。為了簡單起見,我們假設(shè)這里是結(jié)構(gòu)化的數(shù)據(jù)。這里是一些在進行數(shù)據(jù)分析前基礎(chǔ)的問題。

  1. 目標(biāo)數(shù)據(jù)是怎樣分布的?

  2. 在不同的特征之前是否有顯著的相關(guān)性?

  3. 數(shù)據(jù)中共是否有缺失值?

  4. 訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)多相似?

目標(biāo)數(shù)據(jù)是怎樣分布的?

第一件事你應(yīng)該做的是看下數(shù)據(jù)集中各個類別的分布。如果存在類不平衡,你需要快速找到,因為這會對模型產(chǎn)生重大影響。特別是在訓(xùn)練中一個類別會淹沒到其他類別的信息。這里有一些解決不平衡類別的技術(shù)(比如,SMOTE,ADASYN,手動移除樣本,模型的參數(shù)來解決不平衡的數(shù)據(jù)集),但是首先我們需要確定數(shù)據(jù)中的類別是否均勻。一個快速檢查的方法就通過繪制庫,seaborn,基于流行的matplotlib庫。

如何開始 Kaggle 比賽之旅

如何開始 Kaggle 比賽之旅

多類別的不平衡目標(biāo)

我們可以看到,類別90在數(shù)據(jù)中被過分表示。前面提到的SMOTE和其他技術(shù)可以創(chuàng)建一個更加平衡的數(shù)據(jù)集。繼而,可以使得模型更好地推廣到從沒見過的,不存在平衡問題的數(shù)據(jù)中。

特征之間是否存在顯著的相關(guān)性?

計算特征之間的皮爾遜相關(guān)系數(shù)(Pearson correlation coefficient)能夠獲得特征中極有用的信息。知道特征是否相關(guān)能夠幫助我們做特征工程,或者是去除不需要的數(shù)據(jù)列。比如說,在下面展示的熱圖中,EXT_SOURCE_1是外部來源提供的對一個貸款申請者的信用評級。DAYS_BIRTH,申請者按天的方式計算的年齡,和EXT_SOURCE_1是負(fù)相關(guān)的。這可能意味著EXT_SOURCE_1的計算中包含了申請者的年齡。通常來說,我們想要避免包含一個能夠被其他特征線性組合得到的特征(稱之為線性相關(guān)),它為模型提供了冗余的信息。

如何開始 Kaggle 比賽之旅

如何開始 Kaggle 比賽之旅

顯示數(shù)值特征之間的Pearson相關(guān)系數(shù)正值和負(fù)值的熱圖

數(shù)據(jù)中是否有缺失值?

你總是想要確保得到一個完整的數(shù)據(jù)集,包含盡可能少的缺失值。例如,如果模型發(fā)現(xiàn)一個非常重要的特征,但卻發(fā)現(xiàn)該特征中的大量行是缺失值,則可以通過輸入缺失值來大大提高模型的性能。這可以通過不包含NaN的類似行推斷特征的值來完成。另外一個方式(稱為backfill)是用下一個非空的值來填充缺失值。特征中非空數(shù)據(jù)的均值,中值或模式有時也用于估算缺失值。pandas.DataFrame.fillna()的方法提供了一些不同的選項來處理缺失值問題,這個Kaggle Kernel也是有幫助值得一讀的資源。

但是,缺失值并不總是意味著沒有記錄數(shù)據(jù)。有時候,一個特征中包含NaN是有意義的,那上述的方法就不適用于這個數(shù)據(jù)行。例如,一個包含二元目標(biāo)的貸款申請數(shù)據(jù)集中(是否批準(zhǔn)申請者的申請)包含一個申請者是否擁有一輛車的特征。如果某個人沒有汽車,那么另一個關(guān)于汽車登記日期的特征會包含NaN值,因為這里沒有可填寫的信息。

訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)有多少相似?

pandas的DataFrame對象包含了pandas.Dataframe.describe() 方法能夠提供特征在數(shù)據(jù)集中的統(tǒng)計信息,比如說最大值,平均值,標(biāo)準(zhǔn)差,第50百分位值等等。這個方法會返回另外一個DataFrame,這樣你就可以添加額外你想要的信息。比如說,你可以添加一行來檢查每一列中缺失值的數(shù)量,實現(xiàn)的函數(shù)如下:

如何開始 Kaggle 比賽之旅

這是一個非常有用的方法,可以讓你快速地檢查訓(xùn)練集和測試集中特征的相似性。但是如果是想要有一個單一數(shù)值就可以很好地了解訓(xùn)練集和測試集的相識度呢?那就要用到對抗驗證(adversarial validation)方法了。這個詞匯可能聽起來有點嚇人,但是一旦理解了這個技術(shù),那它就非常的簡單。對抗驗證包含下面的步驟:

  1. 將訓(xùn)練和測試數(shù)據(jù)集結(jié)合起來組成一個大的數(shù)據(jù)集

  2. 將所有的訓(xùn)練行中目標(biāo)特征都設(shè)置為0

  3. 在所有的測試行中目標(biāo)特征都填充1(等下你就會知道這在做什么)

  4. 從數(shù)據(jù)中創(chuàng)建分層折疊(可以直接使用sklearn中的實現(xiàn))

  5. 將LightGBM模型,或者其他模型,擬合到訓(xùn)練折疊并驗證驗證折疊

  6. 在整個數(shù)據(jù)集上做驗證預(yù)測,并計算ROC曲線(area under the receiver operating characteristic curve)。我使用的是這個實現(xiàn)來計算這個面積。

  7. ROC曲線下面積為0.5表示模型無法區(qū)分列訓(xùn)練和測試行,因此兩個數(shù)據(jù)集相似。 如果面積大于0.5,那么模型可以看到訓(xùn)練和測試集之間存在一些差異,因此值得您深入挖掘數(shù)據(jù)以確保您的模型能夠在測試中做好預(yù)測。

我找到下面的兩個kernel能幫助你掌握這個技術(shù):

  • https://www.kaggle.com/tunguz/adversarial-santander

  • https://www.kaggle.com/pnussbaum/adversarial-cnn-of-ptp-for-vsb-power-v12

  為什么從基于樹的模型開始?

開始時確定正確的模型是很重要的,當(dāng)你剛開始參加比賽時可能會非常困惑。假設(shè)說你現(xiàn)在處理的是結(jié)構(gòu)化數(shù)據(jù),你想要在進入構(gòu)建模型之前先獲取數(shù)據(jù)的內(nèi)在信息。在你進入一個新的比賽時,非常適合將數(shù)據(jù)扔給LightGBM或者XGBoost模型。他們都是基于樹的提升模型,并且具有很好的可解釋性,很容易理解。兩者都提供了繪制其分割的功能,這個功能很有用,創(chuàng)建最大深度= 3左右的樹,可以從一開始就準(zhǔn)確查看模型分割的所利用的特征。

lightgbm.Booster.feature_importance()方法給出了對于模型而言最重要的特征,這是從模型在特定的特征上做了多少次分割(重要類型=“分割”)或者是在特定特征上的每次分割獲得了多少的信息(重要類型=“獲得”)的角度上來說的。查看特征重要性在匿名數(shù)據(jù)集中特別有用,在這些數(shù)據(jù)集中,可以獲取前5個特征并推斷出特征可能是什么,并了解它們對模型的重要性。 這可以極大地幫助特征工程。

即使不使用GPU,你也會發(fā)現(xiàn)LightGBM的訓(xùn)練速度是非??斓摹W詈?,對于這兩個模型都有著非常優(yōu)秀的文檔,初學(xué)者學(xué)習(xí)他們應(yīng)該沒有任何問題。

  評估

在不知道如何使用可靠的模型評估方法時,你沒有辦法在比賽中得到性能最好的模型。在參與比賽之前了解官方評估指標(biāo)是至關(guān)重要的。一旦確切了解你的提交是如何評估,就應(yīng)該確保在訓(xùn)練和驗證中使用官方評估指標(biāo)(如果沒有合適的實現(xiàn)方案,則使用自己的版本)。將評估指標(biāo)與可靠的驗證集相結(jié)合,可以避免在提交上反復(fù),并能夠快速且經(jīng)常地進行測試和驗證。雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)

此外,如果你想要在最后用單一的數(shù)值來設(shè)置模型的評估。查看訓(xùn)練損失與驗證損失或一系列指標(biāo),包括精確度,召回率,F(xiàn)1得分,AUROC等,這些對于實際產(chǎn)品中非常有幫助,但在比賽中,你想要的是能夠快速看到一個數(shù)字并說出 “這個模型比我之前的更好”。再次強調(diào),這個數(shù)值需要是官方的指標(biāo)。如果不是的話,你應(yīng)該有充分的理由不這樣做。

如果你遵循上述建議,在經(jīng)常的實驗中,你需要一種可靠的方法來跟蹤結(jié)果。我喜歡用一個跑在Docker容器上的MongoDB實例,在每次執(zhí)行我的評估腳本之后,將模型和參數(shù)和驗證分?jǐn)?shù)發(fā)給這個實例。我為每個模型分別保存了一個表格(或者是在MongoDB中稱為collection)。當(dāng)我執(zhí)行完成了幾次實驗之后,我將記錄作為一個MongoDB.archive文件和csv文件,下載到我電腦的本地目錄中,以便于快速瀏覽。代碼在原文。

在這里說明下,關(guān)于如何處理記錄結(jié)果有不同的思想流派,這是我的首選方法,但我很想知道其他數(shù)據(jù)科學(xué)家如何處理它!

Chirag Chadha 是一名在愛爾蘭都柏林 UnitedHealth Group/Optum.的數(shù)據(jù)科學(xué)家。你可以使用這個郵箱與之聯(lián)系(chadhac@tcd.ie), 他的LinkedIn, 或者在Kaggle 和GitHub關(guān)注他。

要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻?

點擊如何開始 kaggle 比賽之旅即可訪問:

https://ai.yanxishe.com/page/TextTranslation/1698

社長今日推薦:AI入門、大數(shù)據(jù)、機器學(xué)習(xí)免費教程

35本世界頂級原本教程限時開放,這類書單由知名數(shù)據(jù)科學(xué)網(wǎng)站 KDnuggets 的副主編,同時也是資深的數(shù)據(jù)科學(xué)家、深度學(xué)習(xí)技術(shù)愛好者的Matthew Mayo推薦,他在機器學(xué)習(xí)和數(shù)據(jù)科學(xué)領(lǐng)域具有豐富的科研和從業(yè)經(jīng)驗。

點擊鏈接即可獲?。?a target="_blank" rel=nofollow>https://ai.yanxishe.com/page/resourceDetail/417


雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

如何開始 Kaggle 比賽之旅

分享:
相關(guān)文章

知情人士

AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學(xué)習(xí)知識的門檻。(原雷鋒字幕組)
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說