轉自: https://yq.aliyun.com/articles/129749
對於機器學習入門而言,我們一般都是從手寫體MNIST、CIFAR-10等一些公開的數據集快速上手,復現別人的模型並得到一些好的結果。由於別人給出了相關的模型及步驟,做完這些復現總覺得太簡單而沒有收穫,這是因爲這些數據集及給出的模型都非常的完美。針對自己特定任務和數據集而言,數據集處理起來相當困難或者搭建的模型效果不好,讓初學者不禁陷入沉思,是我們太菜了嗎?
答案是肯定而又殘酷的,但不要灰心,人生如棧,學習也一樣。在懵懂中入棧,接觸這個機器學習行業;每天忙於製作數據集與搭建模型,做着似乎總是重複的事情,出棧而又入棧,爲的只是能搭建一個合適的模型,完成特定的任務;我們總說在哪裏跌倒就在哪裏爬起來,但是當一次次數據集製作與模型的仿真實驗結果不好時,我們就像彈棧找不到返回地址,對自己感到迷茫,對機器學習這份行業感到猶豫。很幸運,你看到這篇文章,將告訴你在一個個棧的外邊,隱藏着一個小平臺,只要我們在製作數據集中多思考,在搭建模型中多嘗試,不斷進取,就能取得成功。這個平臺對於機器學習行業者而言,並不陌生,那就是數據科學競賽的熱門平臺——Kaggle。
Kaggle創辦於2010年,目前已經被Google收購,是全球頂尖的數據科學競賽平臺,最近關於NIPS的生成對抗比賽可以見博主這篇文章《Kaggle首席技術官發佈——(Kaggle)NIPS 2017對抗學習挑戰賽起步指南》,感興趣的同學可以立刻着手準備參加吧。Kaggle提供了一個介於“完美”與真實之間的過渡,問題的定義基本良好,卻夾着或多或少的難點,一般沒有完全成熟的解決方案。但我們也不要將kaggle上的比賽想得那麼簡單,畢竟,一些比賽有超過100萬美元的獎池和數百個競爭對手;另外有些頂尖的團隊擁有數十年的綜合經驗,處理棘手的問題,如改善機場安全或分析衛星數據。
一些初學者對參加Kaggle比賽感到一些擔憂,如:
- 如何開始
- 會跟經驗豐富的博士研究生隊伍對抗嗎?
- 如果沒有真正的獲勝機會,那麼值得競爭嗎?
- 數據科學是什麼?(如果在Kaggle做得不好,我未來會成爲數據科學家嗎?)
- 如何提高排名?
在本指南中,我們將分解一些需要了解的入門知識、提高比賽的技能以及如何在Kaggle比賽中享受的建議。
Kaggle VS. “典型”數據科學
首先,我們需要弄清楚:
Kaggle比賽與“典型”數據科學有重要的差異,但如果以正確的心態接近Kaggle,它仍然會提供寶貴的經驗。
Kaggle比賽
本質上,比賽必須符合以下幾個標準:
- 問題一定很難。 比賽不能在短時間解決,爲了獲得最佳的投資回報,東道主公司一般會提交它們遇到的最大的問題。
- 解決方案必須是新的。 爲了贏得最終的比賽,你通常需要進行擴展研究,自定義算法、訓練高級模型等。
- 表現是相對的。比賽只產生一個冠軍,所以你的解決方案必須打敗對方。
“典型”數據科學
相比之下,典型數據科學不需要符合上述標準。
- 問題可以很容易。事實上,數據科學家們應該嘗試一些可以快速解決的有影響力的項目。
- 解決方案可以是非常成熟的。 最常見的任務(例如探索性分析、數據清洗、A / B測試及經典算法)已經有成熟的框架,只需要應用就好。
- 表現可以是絕對的。 即使只擊敗以前的基準,這個解決方案也可以是有價值的。Kaggle比賽鼓勵參賽者展現出最好的一面,而典型的數據科學則會鼓勵效率並最大化商業影響。
Kaggle值得參加嗎?
儘管Kaggle和典型的數據科學存在差異,但不妨礙其成爲初學者的一個很好的學習平臺。
- 每場比賽都是獨立的。你不需要創建自己的項目和收集數據,這可以讓你專注於其他技能。
- 實踐就是練習。 學習數據科學的最好方法是通過實踐來學習。只要不太看重每次比賽的輸贏,你仍然可以練習有趣的問題。
- 討論和獲獎者採訪是有啓發性的。每個比賽都有自己的討論版塊和獲獎者的心得彙報。從中可以學習有經驗的數據科學家的思想過程。
如何開始Kaggle征途
接下來,將制定一個逐步完成的行動計劃,讓你在Kaggle平臺慢慢提升自己。
步驟1:選擇一種編程語言
首先,建議選擇一種編程語言並堅持使用它。Python和R語言在Kaggle和更廣泛的數據科學界都很受歡迎。如果這兩種編程語言都不熟悉,推薦使用Python。具體對比和學習方法參考以下兩篇文章:
步驟2:瞭解探索數據的基礎知識。
加載、操縱和繪製數據的能力是數據科學的第一步,因爲它會通過模型訓練得到各種決策。
如果選擇了Python語言,那麼建議使用專門爲此而設計的Seaborn庫。它具有繪製許多最常見和有用的圖表的高級功能。
第3步:訓練第一個機器學習模型。
在參加Kaggle比賽之前,建議你在一個更容易、更易於管理的數據集上訓練一個模型。關鍵是要養成良好的習慣,例如將數據集分成單獨的訓練集和測試集,交叉驗證以避免過擬合,並使用適當的性能指標等。對於Python而言,最好的通用機器學習庫是 ScikitLearn。
步驟4:處理“入門”比賽。
現在準備嘗試Kaggle比賽,kaggle比賽分爲幾類,最常見的是:
- 特色 -這些通常由公司、組織甚至政府贊助,有着最大的獎池。
- 研究 -這些都是以研究爲導向,幾乎沒有獎金。
- 招聘 -這些由希望聘請數據科學家的公司贊助,比較少見。
- 入門 -這些和特色比賽類似,但沒有獎池。它們具有更簡單的數據集、大量的教程和滾動提交窗口,因此可以隨時參加這類比賽。
“入門”比賽對於初學者來說是非常適合的,因爲它們提供了低風險的學習環境和許多社區創建的教程的支持
步驟5:爭取最大限度地學習,而不要在乎獎金收入。
在以上基礎上,現在是進入“特色”比賽的時候了。一般來說,這類比賽將花費更多的時間和精力。因此,建議合理地選擇相應的比賽,不要太在意獎金,而是着重發展自己的職業技能。
享受Kaggle的提示
最後,介紹最喜歡的7個提示以充分利用在Kaggle上的時間。
提示#1:設置增量目標。
如果你曾經玩過一個令人上癮的遊戲,你就會知道增量目標的力量。設置的每個目標都足夠大,完成後會獲得成就感。
大多數Kaggle參與者永遠不會贏得一場比賽,這完全是正常的。如果你將這個設定爲你的第一個里程碑,你可能會感到灰心喪氣,經過幾次嘗試後就失去了動力。增量目標使得征途更加愉快。例如:
- 提交一個超越基準的解決方案
- 在一場比賽中排名前50%
- 在一場比賽中排名前25%
- 在三場比賽中排名前25%
- 在一場比賽中排名前10%
- 贏得一次比賽!
這個策略將讓你衡量自己的進步。
提示#2:查看大多數被投票的核心程序。
Kaggle有一個很酷的功能,參與者可以提交“核心程序”,雖然只是展示技術或共享解決方案的簡短腳本,但當你開始一場比賽或者遇到瓶頸時,回顧這些核心程序可以激發更多的想法。
提示#3:在論壇上提問。
不要害怕問“愚蠢”的問題。提問完發生的最糟糕事情就是可能會被忽視,沒有人會嘲笑你。而另一方面,你可能獲得來自更有經驗的數據科學家的建議和指導。
提示#4:獨立開發核心技能。
一開始建議單獨工作。這將迫使你在應用機器學習過程中親自處理每一個步驟,包括探索性分析、數據清洗及模型訓練等。
提示#5:團結起來打破你的界限。
在之後的比賽中組隊可以打破你的界限並向他人學習。許多過去的獲獎者都是團結一致的團隊。另外,掌握機器學習的技能後,你可以與擁有更多領域知識的其他人進行合作,進一步擴大自己的機遇。
提示#6:請記住,Kaggle可以成爲墊腳石。
記住,你不一定要成爲一個長期的Kaggler。如果發現你不喜歡這種形式,那沒有什麼大不了。事實上,許多人在專注自己項目或成爲全職數據科學家之前,都使用Kaggle作爲墊腳石。從長遠來看,最好是專注於比賽提供的相關經驗,而不是追逐那些獎金。
提示#7:不要擔心低排名。
一些初學者不願意開始是因爲擔心自己的個人資料中出現低排名記錄。然而,低排名實際上對自己沒有很大影響,因爲其他人不會評判你,大家都是初學者。如果仍然擔心個人資料中出現低排名,可以創建一個“練習帳戶”來學習,熟練之後再用“主賬戶”開始自己的獎盃之旅。(聲明,這是完全沒必要的!)
結論
在本指南中,分享了Kaggle起步的5個步驟:
- 1. 選擇一種編程語言
- 2. 瞭解探索數據的基礎知識
- 3. 訓練你的第一臺機器學習模型
- 4. 處理“入門”比賽
- 5. 爭取最大限度地學習,而不要在乎獎金收入
最後,分享了在平臺上享受時間的7個提示:
- 設置增量目標
- 回顧大多數投票的核心程序
- 在論壇上提問問題
- 獨立開發核心技能
- 組對打破自身界限
- Kaggle可以成爲踏腳石
- 不要擔心低排名
福利,如果你對這個教程感興趣,可以在社區註冊,你會收到更多的教程及一個免費的7天速成班課程。
來源
EliteDataScience:著名機器學習網站,分享數據科學及機器學習相關。
網址:https://elitedatascience.com/
Facebook: https://www.facebook.com/elitedatascience/
本文由阿里云云棲社區組織翻譯
文章原標題《The Beginner’s Guide to Kaggle》,來源:EliteDataScience,譯者:海棠,審閱:李烽