小編今天翻到論壇2015年的文章,說的很有道理的,越來越多的人參加kaggle比賽希望拿個名次做data scientist工作敲門磚,人潮湧湧,單靠自己倒騰折騰,去年還可以練練手增加經驗,今時不比往日啊,
所以我們組織了kaggle比賽的獲獎選手,作為導師帶你一起刷!
我們的小夥伴,曾經物理phd,沒有。。。基礎,在去年airbnb kaggle比賽中就獲得。。。相當不錯的名次,一把幫他拿下。。。。interview 機會和。。。工作offer
轉載:BBS 未名空間站,作者:phunter (程式獵人:LA摸機會資深成員)
貢獻一個我之前寫的貼,刷Kaggle的題是快速成為data scientist的捷徑之一,這和什
麼山寨leetcode不一樣,那個刷200題對實際工作毫無幫助(對面試也幾乎無幫助),
刷Kaggle只要刷一倆題,差不多花三個月的業餘時間,智力正常的理工科大學畢業生都
能對data science這個東西有個初步但是全面的了解,在數據清理,數據操作,建立模
型,評價模型和結果這些方面都有實際深入的了解,不會再出現「面試官問overfit了
怎麼辦,我說了Cross Validation,面試官看起來不高興」然後下面回帖幫樓主的都是
不知所云樓主看了也是雲裡霧裡這樣的慘劇。你要是學好了就會發現,其實那個面試官
自己也不太懂就知道個概念才會問那個的問題,照著這個教程來,分分鐘和面試官對L1
和L2 regularization 對稀疏feature的表現談笑風生,如果搞的深入點把深度學習順
道也會了,說個「其實dropout也是regularization什麼什麼的」,保證面試官立刻給
你跪舔,再也不敢上來賣弄概念自尋羞辱。
怎樣快糙猛的開始搞Kaggle比賽
本文寫給想開始搞Kaggle比賽又害怕無從下手的小朋友們。
最近比較多人問我怎麼快速成為數據科學家可以掙錢多幹活少整天獵頭追跳槽漲一倍。
我一般的答案是,沒有這好事,但是搞搞Kaggle的比賽有助於快速成為數據科學家,之
後掙錢多少看個人。關於Kaggle比賽是什麼,限於篇幅關係,請自行谷歌。
我不是專業機器學習的人,但是我見的太多了。對於有一定數理基礎的人來說,快速起
步搞起來個Kaggle比賽並且獲得不錯的名次,難度並非難於成為王思聰的官方老婆。這
裡有三個部分的知識需要強化:
1. 數理基礎。基本上高考數學不錯的理工科學生,學過了大一大二的數學基礎課程(
包括微積分、數理統計、數理方程、集合論等),不存在任何問題。如果想測試一下自
己,那就看看這個題目:
如果一個妹子喜歡我可能因為我帥或者我有錢,因為我既帥又有錢的概率是0.1,只是
因為我有錢的概率是0.5,問,如果妹子喜歡我只是因為我就是帥的概率是多少?
如果能不費力氣(心算更好)的解答這個問題,基本上這部分知識是足夠了。
2. 機器學習。Kaggle比賽多依靠機器來自動處理,機器學習幾乎是必須要的技能。開
始搞Kaggle需要的機器學習技能並不深入,只是需要對於機器學習的常見幾個方法有基
本了解即可,比如說對於一個問題,你可以認識到它是個classification的問題啊還是
regression的問題啊,為什麼機器可以根據你輸入的一個矩陣來算出來分類結果啊。推
薦Coursera上Andrew Ng的機器學習課程 https://www.coursera.org/course/ml 一個
捷徑就是,如果你時間緊的話,只要知道什麼叫做Supervised learning並且會自己實
現一個Logistic Regression,差不多就夠了。
順便,scikit learn有個極快速的入門,請自行前往觀看(請不要私信問我作業面試題之
類的,作業和面試題都要自己寫啊,我只能婉拒)
http://scikit-learn.org/stable/tutorial/statistical_inference/s
3. Coding。限於篇幅只介紹Python。我可沒有說什麼欽定Python,你問我支持不支持
,我用python我當然支持。基本的python編程得熟練,如果不熟練可以先學習 Learn
Python the Hard Way。會了python之後,把scikit-learn的基本教程的
classification的部分練練,你會發現在Andrew Ng課上學的知識,在python裡面實際
跑跑簡單數據,能對課上的知識深刻的理解。同時,如果有富餘時間的話,可以順道看
看numpy和pandas的一些基礎操作,這些是用來數據處理好工具。
上面三點對一個數理基礎不錯的人來說,差不多幾周的空餘時間就可以了,如果是在校
學生可能更快。
開始搞Kaggle的時候,建議選個入門容易的比賽。如何選擇,簡單來說就選個參賽人多
的就好了,基本上認真搞搞結果還不會差呢。如果一個比賽還有自帶Tutorial 就更好
了。比如我們可以選鐵達尼號的比賽,根據乘客的信息來判斷他是不是可能在沉船中
遇難。地址是 https://www.kaggle.com/c/titanic-gettingStarted
這個比賽有個很好的tutorial,第一次參加比賽的,可以在比賽過程裡遇到但是不限於
如下的問題:
1. 數據怎麼讀取
2. 有missing value怎麼辦
3. 一等艙二等艙之類的feature為什麼得當作categorial feature
4. 。。。。
等等等等之類的問題。這些問題都是在數據科學領域的實際工作每天都能遇到的。最好
的學習方法就是針對這個問題,你看Discuss Forum和Tutorial裡面教你怎麼解決,自
己google一下看別人寫好的代碼怎麼解決這些問題。這階段我建議靠自己的力量搜索答
案而不是去論壇上問一些伸手黨類的SB問題,即使問了也沒關係有人會替你解答的但是
這不是慢嘛。
然後你會開始訓練你的模型,又會遇到但是不限於以下的問題
1. 啥叫random forest,咋用,為什麼我調了這幾個參數不靈呢
2. 怎麼我本地結果很好,但是提交名次掉成狗
3. 原來我要Cross Validation啊(Andrew Ng的課裡說到的那些看起來很無聊的曲線現
在知道是為什麼了吧)
4. 。。。。。。
等等之類的。這些問題也是實際工作每天都能遇到的。你就看人家怎麼調你就跟著模仿
,然後體會思考一下不同調法對結果有什麼區別。這比在@七月問答 上面問「如果某某
情況我的隨機森林的參數該怎麼調才能避免這個情況」之類,對問題領悟的更深刻。折
磨過幾波模型調參,你就差不多知道這些模型的套路是什麼了。
然後你開始刷名次,又會遇到但是不限於以下的問題:
1. 怎麼CV的結果挺好但是上去還是比不過呢
2. 那誰說用Vowel Wabbit對每個分類做優化怎麼搞啊
3. 組合模型這概念我知道,但是實際怎麼組合呢
4. 。。。。。。
經過這些,你差不多就知道解決一個實際的機器學習問題需要做什麼事情了。對的,這
就是數據科學家幾乎每天的工作,各部分比重不一樣,但是理解問題、數據清理、模型
調參、評估結果這些循環反覆的動作,基本上就是數據科學家需要做的。
在這個摸索挨打的過程中,你可以快速學會數據科學的常用工具(numpy scipy pandas
scikit等等),也會在別人的帶動下發現新工具(比如@陳天奇怪 的xgboost,vowpal
wabbit之類的),也會學會新技能(比如深度學習以及如何用深度學習去解決實際的
問題)。這個學習速度遠超過於看書看blog,在挨打的過程裡,回想一下從可可老師那
裡看到的每天十條數據科學經驗,會不會覺得理解的更深入了呢?
在有實際工業界工作經驗之前,搞搞Kaggle比賽幾乎是最有效的跨過」數據科學家「門
檻的方法。有了實際工作經驗,搞搞Kaggle比賽也能擴大視野,也能把前沿研究的第一
手結果用到實際問題裡。大家加油,跳槽就翻倍的高薪工作指日可待(我沒有保證能高
薪啊,不要到時候把我拉出來批判一番)