我經常被朋友和大學生問到“如何入門機器學習或數據科學”。
所以,這是我的答案……
前言
早些時候,我不太確定。我會說類似“學這門課”或“讀這本教程”或“先學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開發人員,移動應用程序開發人員和機器學習工程師組成的社區。因此,無論您的想法或問題屬于哪個領域,您都可以期待與其他成員一起獲得至少一些幫助。
如果你想做一些有趣的輔助項目,但似乎無法得到一個有趣的想法,或者你有一個想法,但不知道從哪里開始,或者你只是被困在當前項目的某個地方,這種社區可能正是你所需要的。如果您覺得這很有趣,可以點擊下方鏈接加入Slack。
Slack:
https://join.slack.com/t/build-to-learn/shared_invite/enQtMzg3MzYyNTA5MjAzLWU4M2RkOGY3OWE1OTE5NTIzMGQ5MzZhMmZmOWQyZDVhNWVkMmRjODc3ZWM5ZDA5MDM3YzRiZDM4YTczYTNmMDk
請在下面的評論部分告訴我您的想法。您也可以在Twitter或LinkedIn上與我聯系。你可以給我發一封電子郵nityeshagarwal@gmail.com。另外,你可以在Twitter上關注我;我不會發垃圾消息噠;-)
Twitter:
https://twitter.com/nityeshaga
LinkedIn:
https://www.linkedin.com/in/nityeshaga/
最初發表在Zeolearn博客上:
https://www.zeolearn.com/magazine/using-kaggle-to-guide-your-learning-why-and-how-should-you-start
-
機器學習
+關注
關注
66文章
8434瀏覽量
132871 -
數據科學
+關注
關注
0文章
165瀏覽量
10081
原文標題:手把手教你用 Kaggle 開啟機器學習之旅
文章出處:【微信號:DBDevs,微信公眾號:數據分析與開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論