手把手教你用Kaggle開啟機器學習之旅
我經常被朋友和大學生問到“如何入門機器學習或資料科學”。
所以,這是我的答案……
前言
早些時候,我不太確定。我會說類似“學這門課”或“讀這本教程”或“先學Python(這是我做過的事情)”。但是現在,隨著我越來越深入這個領域,我開始意識到我採取的措施的缺點。
所以,事後看來,我認為“入門” 機器學習或資料科學的最佳途徑可能是通過Kaggle。
在這篇文章中,我將告訴您為什麼我這麼認為,以及 如果我的推理令您信服,您將如何做到這一點。
注意:我是一名學生。我不是專業的資料科學家或機器學習工程師。我絕對不是Kaggle的專家。所以,請有保留地採納我的意見和觀點。 :-)
但首先,請允許我介紹一下Kaggle並澄清一些關於它的誤解。
你可能聽說過Kaggle作為一個網站,為機器學習比賽頒發令人難以置信的現金獎勵。
Kaggle舉辦的比賽獲得最高獎金
(是的,這些是百萬美元以上的獎金!)
正是這種名氣也引起了很多關於平臺的誤解,讓新手們入門比原來更加猶豫不決。
如果你之前從未聽說過Kaggle,也不要擔心,因此,不要在意下面提到的任何誤解。這篇文章仍然完全有道理。對待下一部分就當我向你介紹Kaggle一樣。
誤解
1. “Kaggle是一個舉辦機器學習競賽的網站”
這是對“Kaggle是什麼”的不完整描述!我認為競賽(以及它們豐厚的現金獎勵)並不是Kaggle的真諦。看看他們網站的標題——
競賽僅僅是Kaggle的一部分
除了舉辦競賽,(它目前已經舉辦過大概300場比賽),Kaggle還主持了3項非常重要的內容:
● Datasets
https://www.kaggle.com/datasets
即使是與任何競賽都無關的那些:與僅僅300個競賽(在撰寫本文時)相比,它包含9500多個數據集。因此,您可以通過選擇任何您感興趣的資料集來提高您的技能。
我覺得最有趣的一些資料集
● Kernels:
https://www.kaggle.com/kernels
它們只是Kaggle的Jupyter筆記本版本,反過來,它只是一種非常有效和酷炫的共享程式碼方式,以及大量的視覺化,輸出和解釋。“核心”選項卡將您帶到一個公共核心列表,人們用它來展示一些新工具或分享他們對某些特定資料集的專業知識或見解。
● Learn:
https://www.kaggle.com/learn/overview
此選項卡包含免費且實用的實踐課程, 這些課程涵蓋了快速入門所需的最低前置課程。他們最好的地方是什麼?——一切都是使用Kaggle的核心完成的(如上所述)。這意味著您可以互動和學習……通過數小時的學習材料不再被動閱讀!
所有這些共同使Kaggle不僅僅是一個舉辦比賽的網站。現在,它已成為一個完整的基於專案的資料科學學習環境。在本節之後,我將詳細討論Kaggle的這個方面。
2. “只有專家(具有多年經驗的博士或經驗豐富的機器學習從業者)才能參加並贏得Kaggle比賽”
如果您這麼認為,我懇請您閱讀下面這篇文章:
高中生自學成為AI大神——如果你深入到人工智慧的世界,你肯定知道谷歌雲擁有的平臺Kaggle:
https://mashable.com/2017/07/28/16-year-old-ai-genius/
覺得文章太長不想看的,可以瀏覽下面的文章摘要:
一個高中的孩子僅因為好奇並投入比賽就(或者不那麼簡單,或許?)成為了Kaggle比賽大神。用他自己的話說:
“我不知道演算法背後的所有數學原理,但就實際使用演算法而言,我認為對其 運作方式 有一個合理的瞭解更為重要。”
3. “在參加Kaggle比賽之前,我應該再參加一些課程並學習先進的機器學習概念,這樣我的勝算更大”
機器學習中最重要的部分是探索資料分析(或EDA)和特徵工程,而不是模型擬合。事實上,許多Kaggle大神認為,新人會很快掉進複雜的模型的坑裡,而事實上簡單的模型就可以讓你走得很遠。
愛因斯坦曾經說過:
“任何一個有智力的笨蛋都可以把事情搞得更大,更復雜。往相反的方向前進則需要天分,以及很大的勇氣。”
此外,許多挑戰都有結構化資料,這意味著所有資料都存在於整齊的行和列中。沒有複雜的文字或影象資料。因此,簡單的演算法(沒有花裡胡哨的神經網路)通常是這種資料集的獲勝演算法。在這種情況下,EDA可能是獲勝解決方案與其他解決方案的區別所在。
現在,讓我們繼續討論為什麼你應該使用Kaggle來入門機器學習或資料科學。
你為什麼要從Kaggle開始?
理由1:準確瞭解入門必備內容
關於Kaggle Learn的機器學習課程不會教你機器學習演算法背後的理論和數學。相反,它專注於僅教授在分析和建模資料集時絕對必要的事物。類似地,那裡的Python課程不會讓你成為Python的專家,但它將確保你瞭解足夠知識以進入下一個級別。
關於Kaggle Learn的機器學習課程:
https://www.kaggle.com/learn/machine-learning
Python課程:
https://www.kaggle.com/learn/python
這樣可以最大限度地減少您在被動學習中花費的時間,並確保您已準備好儘快應對有趣的挑戰。
理由2:體現了注重實踐的精神
我相信做專案是最有效的方式,完成一個專案,你就學會了整個過程。我的意思是說,不是在你學到東西之後搜尋相關的專案,而是從專案開始並學習使專案變為現實所需的一切可能更好。
正如惠特尼約翰遜在Masters of Scale podcast中所說:
“基本上,你,我,每個人,我們都想學習,跳躍,然後重複。”
Masters of Scale podcast:
https://mastersofscale.com/stacy-brown-philpot-keep-humans-in-the-equation/
我相信學習這種方式更令人興奮和有效。
幾周前我寫了一篇關於上述方法的文章。名為——“ 零基礎如何(和為什麼)開始構建有用的,現實世界的軟體 ”。所以,如果你沒有看過可以看一下:
https://medium.freecodecamp.org/how-and-why-to-start-building-useful-real-world-software-with-no-experience-46f265eaf38
我花了一番時間才承認只讀一本書不是學習而是娛樂,我相信課程和教程也是如此
但是當你沒有一個專案可以實踐一波時,這個想法完全沒用。做一個有趣的專案很難,因為:
a. 很難找到一個有趣的想法
由於需要有合適的資料集,因此實現資料科學專案的想法似乎更加困難。
b. 我不知道該怎麼處理我的知識中的漏洞
有時當我開始某個專案時,感覺就像有很多東西我仍然不知道。我覺得我甚至不知道學習前置課程去構建這個東西的先決條件。我觸及到知識盲區了嗎?我如何去學習我不知道的東西?
那就是所有的動力開始消失的時候。
c. 我經常被“卡住”
似乎在構建過程中我在消除一個又一個路障。如果能有一群人一起學並知道如何解決這個問題,那就太好了。
以下是Kaggle如何為所有問題提供解決方案:
解決方案a:Datasets和Competitions :
https://www.kaggle.com/datasets
https://www.kaggle.com/competitions
大約有300個競賽挑戰,全部附帶公共資料集,總共9500多個數據集(並且不斷增加)這個地方就像是資料科學/機器學習專案的創意寶庫。
解決方案b:Kernels和Learn :
https://www.kaggle.com/kernels
https://www.kaggle.com/learn/overview
讓我告訴你Kernels是如何使用的。
所有資料集都有一個公共的Kernels選項卡,人們可以在這裡釋出他們的分析,以造福整個社群。因此,只要您不知道下一步該做什麼,您就可以通過檢視這些Kernels帖子來獲得一些想法。此外,很多Kernels帖都是專為幫助初學者而編寫的。
解決方案c:Kernels和Discussion :
https://www.kaggle.com/kernels
https://www.kaggle.com/discussion
除了我剛才描述的公共的Kernel之外,每個競賽和每個資料集也都有自己的討論論壇。所以,你總能找個一個提問的地方。
除此之外,在比賽期間,許多參與者撰寫了有趣的問題,凸顯了資料集的特徵和怪癖,一些參與者甚至在論壇上釋出了程式碼效能良好的基準。比賽結束後,獲獎者分享他們的獲獎方案是很常見的。
就像下面這篇文章寫的“向最好的學習”:
http://blog.kaggle.com/2014/08/01/learning-from-the-best/
理由3:解決真實問題的真實資料=>真正的動機
Kaggle上的挑戰是由為解決現實問題的公司舉辦的。他們提供的資料集是真實的。所有獎金都是真實的。這意味著您可以通過解決實際問題來學習資料科學/機器學習並練習您的技能。
如果您以前嘗試過競爭性程式設計,那麼當我說這些網站上承載的問題有時太不現實時,您可能會與我聯絡。我的意思是為什麼我要編寫一個程式來找出陣列中畢達哥拉斯三元組的數量?那要實現什麼!?
我並不想斷言這些問題很容易;我發現它們非常困難。我也沒想要降低託管此類問題的網站的重要性;它們是測試和改進資料結構和演算法知識的好方法。
我只是說這對我來說太虛無縹緲了。 當您嘗試解決的問題是真實的時,您將始終希望努力改進您的解決方案。 這將提供學習和成長的動力。這就是參加Kaggle挑戰所能獲得的。
爭論的另一面:“機器學習不是Kaggle競賽”
我將不再提及本次辯論的另一面,它認為機器學習不是Kaggle比賽,而且Kaggle比賽只代表了實際資料科學工作的“旅遊觀光”。
好吧,也許這是真的。也許真正的資料科學工作與Kaggle競賽中的方法不同。我沒有以專業的身份工作,所以我不知道如何評論。
但我所做的,很多時候,是使用教程和課程來學習一些東西。每一次,我覺得教程/課程與學習動機之間存在脫節。我會學到一些東西,因為它在教程/課程中存在,並希望它可以在一些遙遠的,神祕的未來中使用。
另一方面,當我正在進行Kaggle挑戰時,我確實需要不斷學習。曾經有一個階段,我會立即應用我學到的東西,看看它的效果。這給了我學習所有知識的動力和凝聚力。
如何開始?
Kaggle擁有所有那些有野心的現實世界的問題有一個缺點,它可能是初學者進入的一個令人生畏的地方。我理解這種感覺,因為我最近開始在Kaggle上入門。但是,一旦我克服了最初的障礙,我對它的社群以及它給我的學習機會感到非常景仰。
所以,在這裡我試著說明如何開始:
第1步:掌握必要的基礎知識
選擇一種語言:Python或R語言。
完成後,請前往Kaggle Learn快速瞭解該語言的基礎知識,機器學習和資料視覺化技術。
Kaggle Learn:
https://www.kaggle.com/learn/overview
關於Kaggle Learn的課程
第2步:找到一個有趣的挑戰/資料集
我建議您在開始時選擇一個playground比賽或一個比較受歡迎的比賽。通過這種方式,您可以確保找到至少一些旨在幫助新手的公共Kernel帖子。
記住你的目標不是贏得比賽。它是學習和提高您的資料科學/機器學習的知識。
如果您仍不確定,請任選其中一個
第3步:探索公共核心
它們將幫助您瞭解該領域的一般工作流程以及其他人為此競賽所採取的特定方法。
通常,這些核心會告訴您機器學習/資料科學中您不知道的內容。當你遇到一個不熟悉的術語時,不要感到沮喪。
瞭解您需要知道的是知識的第一步。
它們只是您需要學習以幫助您成長的東西。但在你這樣做之前……
第4步:開發自己的Kernel
繼續自己的分析工作。利用您當前的知識儘可能多地構建。將你在先前步驟中學到的所有內容應用到你自己的Kernel中。
第5步:瞭解您的需求並返回第4步
現在,你學習了。有時,它只是一篇短文,而在其他時候它可能是一個乾貨滿滿的教程/課程。請記住,您需要回到第3步並使用您在Kernel中學到的知識。這樣您就可以建立所需的迴圈——“學習,跨越和重複”!
第6步:返回第3步以完善分析
一旦構建了完整的預測模型,就可以實現此步驟。所以,祝賀你!
現在您可能希望完善分析。要做到這一點,你可以回到第3步,看看其他人做了什麼。這可以為您提供有關改進模型的想法。或者,如果你覺得你已經嘗試了所有東西,但碰壁了,那麼在論壇上尋求幫助可能會有所幫助。
這是一個討論的例子
https://www.kaggle.com/c/amazon-employee-access-challenge/discussion/4838
棒!
現在去做更多挑戰,分析更多資料集,學習更新的東西!
與其他資源的連結
1. 學習Python
Python已經變得非常受歡迎。這意味著有大量優秀的指南和教程可以幫助您開始使用該語言。這是我第一次學習Python時使用的兩種資源:
● Python3教程
https://www.python-course.eu/python3_interactive.php
● 從O'Reilly學習Python
http://shop.oreilly.com/product/0636920028154.do
顯然,這些並沒有為學習Python提供明確的資源列表,但這些是我入門時最適合我的資源。
2. 機器學習文章
在深入瞭解某個領域之前,您可能想知道它是什麼。所以,這裡有一些文章對機器學習進行了有趣的介紹:
● EliteDataScience上的“如何學習機器學習之自學入門”一篇寫得很好的文章,在介紹機器學習方面做得很好,甚至還開設了自學課程!
https://elitedatascience.com/learn-machine-learning
● Vishal Maini的“人類學習機器學習指南”本指南旨在供任何人使用。將討論概率、統計、程式設計、線性代數和微積分的基本概念,從本系列獲得乾貨無需預備知識。”
https://medium.com/machine-learning-for-humans/why-machine-learning-matters-6164faf1df12
● Vishal Maini的“最佳機器學習資源”本文是上述系列的一部分。我單獨提到它是因為它有一套與機器學習相關的非常好非常全面的連結。
https://medium.com/machine-learning-for-humans/how-to-learn-machine-learning-24d53bb64aa1
● Adam Geitgey的“機器學習很有趣”閱讀本系列文章,瞭解機器學習的優點。雖然這篇比較高深,但它可以作為了解該領域的更多動力。
https://medium.com/@ageitgey
3. 資料科學部落格
以下是一些與資料科學相關的好部落格,您可以檢視:
● 方差解釋
http://varianceexplained.org/
● 成為一名資料科學家
https://www.becomingadatascientist.com
● Mark Meloon
https://www.markmeloon.com/
● Julia Silge
https://juliasilge.com/blog/
好吧那麼。謝謝你的閱讀。我希望這對你有所幫助。
我真的相信通過做專案來學習是一種非常有益的體驗,但這很難。Kaggle讓你輕鬆自如。Kaggle競賽負責提出任務,為您獲取資料,將其清理成一些可用的形式,並有一個預先定義的指標來優化。
但正如其他人所指出的那樣,這是資料科學家80%的工作。所以,雖然Kaggle是一個開始你旅程的好工具,但僅僅把你帶到最後是不夠的。您需要在資料科學產品組合中展示其他內容。
如何構建資料科學產品組合:
https://towardsdatascience.com/how-to-build-a-data-science-portfolio-5f566517c79c
因此,我正在嘗試建立一個社群——Build to Learn。在這裡,人們可以分享他們的專案想法(歡迎稀奇古怪的想法!)或對工具的渴望,並在其他成員的幫助下構建它們。它是由Web開發人員,移動應用程式開發人員和機器學習工程師組成的社群。因此,無論您的想法或問題屬於哪個領域,您都可以期待與其他成員一起獲得至少一些幫助。
原文釋出時間為:2018-11-15
本文作者:NITYTESH AGARWAL
本文來自雲棲社群合作伙伴“ ofollow,noindex">資料派THU ”,瞭解相關資訊可以關注“ 資料派THU ”。