本科生怎樣通過努力拿到較好的機器學習/數據挖掘相關的offer?

對機器學習/數據挖掘有很大的興趣,想從事機器學習/數據挖掘相關的工作,我想知道通過2017這大約一年的努力,拿到比較滿意的offer。

背景:國內某不知名211學校軟體工程專業,大三下學期,成績大約專業前20%,保不上研,也不太想在國內上研究生,想先工作幾年,攢錢然後出國去讀研,可能有人會說為什麼不直接就出國,原因是家境一般,不想讓父母的壓力太大,所以才想自己賺錢出國。

目前的學習情況:在coursea上完成了Ng的machine learning,這應該算是入門了,現在正在學習台大林軒田老師的機器學習基石和技法,本人也知道機器學習的基礎也很重要,還看了李航老師的統計學習方法,目前正在看程序員的數學線性代數和概率統計,不知道這兩本書怎麼樣,還有Ng隨堂錄製的機器學習也看了一些。這些東西應該都還停留在理論上面,本人項目經驗為零,接下來準備找老師參加一下kaggle,想在實際的方面也學習一些。其他的書籍還有機器學習實戰,還有一些python相關的書。

計劃:想參加2018年的校招,希望有經驗的過來人給一些建議,畢竟這個專業基本都是研究生,本科生應該不太容易,目前比較心儀圖森互聯的演算法實習生,因為還有寫論文的機會,這樣應該對以後申請學校時會有幫助,不知道這個公司要達到什麼水平才能進去,希望得到各位有經驗的人給一些建議。PS:不知道這類公司面試時是怎樣的流程,對演算法的要求是怎樣的,有時間盡量去刷leetcode吧。


你好,想從事數據挖掘/機器學習崗,建議按以下5步進行:

第一步、明確目標

干一件事情之前,你首先要弄清楚你的目的;這裡很明顯,你的目的就是本科畢業找到一份機器學習或者數據挖掘方面的好工作。

第二步、市場調研

明確自己的目標之後,下一步就是要去了解你離實現這個目標還有多少距離。怎麼確定?最好的方式明顯就是直接看你心儀公司這個崗位的招聘要求了,既然你學習的最終目的就是去那工作,那你為什麼不直接看他們對這個崗位的招聘要求呢。

現在我假設你很有抱負,目標是BAT這幾家公司,那我們就來看看這幾家公司每年校招的情況吧。

百度機器學習/數據挖掘崗:

百度計算機視覺崗:

阿里數據研發崗:

阿里演算法工程師崗:

騰訊基礎研究:

華為媒體演算法崗:

第三步、規劃學習內容

從這些招聘要求中,你大概應該知道自己需要掌握哪些知識了吧。

大致說來,作為一個合格的數據從業者,至少應該具備以下基本功:

1、具備相關的數學基礎;

概率,統計,線代,最優化等基本知識;

2、至少熟練掌握一門編程語言;

一般推薦Python,你需要掌握Python編程的基本部分(Python數據結構,條件語句,循環控制,模塊,異常處理等),高級部分(網路編程,多線程,正則表達式,資料庫編程等),以及一些數據挖掘常用的庫(Numpy,Pandas,Scikit-Learn等)。

3、熟悉基本的數據結構與演算法基礎;

鏈表、數、圖、排序演算法等。

4、熟悉資料庫和Linux;

可以掌握不深,但是還是要了解,基本的操作會用。

5、深刻理解常用機器學習演算法模型;

分類(KNN,貝葉斯,SVM,LR,決策樹,集成學習)、回歸、聚類、降維、推薦、概率圖模型等。

6、一定的項目實戰經驗;

現在網上各種數據比賽很多,國外著名的有Kaggle,國內一些大公司(如百度、阿里雲、搜狗、滴滴、華為、中興等)每年也都會舉辦一些數據方面的比賽,還有一些綜合性的平台(如CCF、DataCastle等)。

畢業之前認真完成以上內容,理論上來說在校招的時候一般的工作是可以勝任的。如果你學有餘力,或者想衝刺頂尖的公司,那你可以再了解一些大數據(如Hadoop、Spark)方面的東西或者鑽研下深度學習方面的知識。

另外,你也可以考慮將你所學的知識開始應用於某一領域,如自然語言處理,這樣的話你就還需要學習一些自然語言處理方面的知識了,這裡不細講。

第四步、開始行動

怎麼去學習這些知識呢?基本的東西我知乎專欄裡面有(這裡順便說明下,我本人也是自學數據科學的,17年參加校招,一路走來深感不易,因此決定將自己的學習過程和學習內容,以及到時候的求職經驗都整理出來進行分享,具體大家可以關注我的知乎專欄和我的微信公眾號,名字都是「DT新紀元」,大家有興趣也可以在關注我的知乎然後私信我,溝通學習和求職方面的問題,主要在力所能及的範圍內,我都會盡量給予回答的)。

第五步、科學而持續性的努力

總之,如果決定跨入這一行,那就明確目標,然後踏踏實實的去努力,記住,一定要持之以恆的努力。不要突然一打雞血就熱情澎湃,巴不得一口吃成一個大胖子,然後沒堅持幾天就泄氣了。一定要淡定,科學而持續性地努力才最有效果!


目標導向,不談其他的方向,只談如何快速拿到數據挖掘的offer

我選擇了公司的校招中比較嚴格的(top5%)一個jd要求,我們看下如何拿下這個offer。

1.計算機或者數學等相關專業學歷

無論你是什麼專業的,大學有個選修課的東西,很多人都是用來混學分的,你可以去選擇比如「數理統計選修」、「概率論選修」、「演算法基礎」這些課,掛了不影響績點,但是你考的好可以給之後找工作帶來很高加分,你的老闆會認為你是一個熱愛數據挖掘並且有長遠計劃的人

2.在機器學習,數據挖掘,統計學理論,最優化理論等領域有著深厚積累

「全棧工程師」在我心中一直是偉大的存在,但是對於本科畢業,選擇專精很重要。推薦幾個方向:用戶研究(徵信、消費者研究),圖像音頻分析(訊飛之流),異常分析(風控、物流),訂單預測等等,你在一方面研究的比較深,就算是應屆生,但是比起像我這種三四年的老油條,老闆更喜歡培養這樣帶有「天賦專精」的白紙

3.熟悉機器學習和數據挖掘領域前沿技術

前沿技術是一個比較寬泛的詞,相信我,面試你的人每天從早上10點加班到晚上10點,周末還要打遊戲,他自己都不知道啥叫前沿技術,平時打好基礎,老闆基礎問不倒的時候,你就已經在候選人名單裡面了

4.在國際頂級會議和期刊以第一作者發表過高水平論文者優先

這點我也做不到,我就不bb了

5.有機器學習、數據挖掘等相關項目實際經驗者,或者知名數據挖掘比賽(例如KDD Cup等)中取得領先名次者優先

這個是非常重要的。

在應屆生面前,成績是沒有區分能力的,老闆在乎的是你入職後給公司帶來的利益而不是你是不是學生會主席這些毫無意義的事情。我走的是前面這條路,分享一下我的套路。我大三的時候參加了百度的某個不知名比賽,拿了區的入圍獎,然後拿著這個入圍獎參加中國電信實習生招聘,大四憑藉一年電信實習經驗去了惠普的數據挖掘實驗室繼續實習,完整的做了2個項目後正式入職現公司。

分析下來就是,剛開始是弱雞,所以採取了一些簡單的途徑拿到一些聽起來很厲害但是很弱雞的獎,再借這個獎混進一些容易被唬住的公司(沒有黑電信的意思),之後在憑藉工作經驗進入一些能夠給你機會的地方(就是讓你自己帶一些項目),好好做幾個優秀的項目(這個比較難,看命),然後達成你的目標。想一下子第一很難,但是我們可以做一個長遠的規劃,先前100,再前50,再前10,再第一。

6.編程基礎紮實,熟悉演算法數據結構,有多年Scala 或Python開發經驗

我大學的時候學校教了spss,但是我當時考慮的是外面企業都是摳x。應該不會買,果然畢業之後,R語言、Python火的不行,建議選擇一門你喜歡的開源語言,去寫code練吧,網上很多撕逼的問題比如「php是不是最好的編程語言」,其實,選擇一個你最適應的就行,別在乎別人怎麼bb,因為最後要用的人是你自己。

7.有大數據相關係統,擁有map-reduce、spark、實時計算等經驗

這個需要回到第5條,我在大學裡面的時候,老師就忽悠我,說什麼mysql足夠了,而且一般學校不會搭建Hadoop這些平台,搭建成本高,維護成本高。建議混入一些「高端的」公司,請裡面的老油條兩三頓夜宵,給你開個查詢許可權,相信我,從菜鳥到乳鴿,你只需要1個月的時間。

8.踏實勤奮,自我驅動,善於溝通

個人感覺數據挖掘崗位需要強迫自己擁有三個技能。

1)快速學習能力,永遠不知道下一個火起來的演算法是啥

2)數據敏感力,數據挖掘的下限取決於勤奮,上限取決於數據敏感程度

3)溝通能力,你要讓你的boss相信你做的Random forest結果,你需要先說服他,我做的是靠譜的。

最後,祝你找到理想的工作,如果目標在上海工作,你可以找我幫你內推,加油,少年。


題主既然想以後出國讀書,同時又喜歡機器學習的話那就可以考慮本科畢業直接申請美國的計算機PhD。美國的PhD是本科畢業就可以申請的,而且基本都是有獎學金的,這樣就不用從家裡拿錢了。

至於說找工作的問題,實質上只要你能解決問題,公司肯定是搶著要你的。題主如果能多看paper多跑幾個代碼最後面試肯定沒問題的,論文看多了有自己的idea了那就更好了。你可以從一下幾個方面準備。

1 數學基礎是必須的。最基本的線性代數和概率論需要了解,因為有很多paper就是一大堆公式。這裡可以推薦網易公開課上MIT的線性代數視頻,超級容易懂。比咱們的課本容易理解。

2 現在CNN這麼火,經典的網路的文章需要很熟悉。比如AlexNet, VGG, GoogLeNet, ResidualNet。看了這幾篇之後大概就知道了大家常用的網路。接下來就需要知道它為什麼work,這就需要去看 Understanding and Visualize CNN/RNN 這類文章。這樣你就知道CNN為啥能work了。

3 RNN 現在也超級火。很多把language 和image結合起來的model都用它。所以RNN的paper也需要熟悉。比如sequence to sequence。

4 上面兩個是現在大家都用的基礎網路,等你把這些基礎的看完就可以看具體某一方面的論文了。這個就要看你對什麼感興趣了。比如你可以從object detection, segmentation, image caption 或者其他方向選一個把主流的幾篇paper是怎麼改進的。以object detection 為例,你可以把傳統的paper看一下,比如2000多年的文章看幾篇,然後把這裡面主流的幾個看一遍,主要看大牛實驗室是怎麼優化的。detection你就可以看 R-CNN, fast R-CNN, SppNet,Faster R-CNN, SSD, YOLO, YOLO 9000, R-FCN。這幾篇文章讀完你就對現在的detection的方法很熟悉了。

6 除了這些paper之外,題主頁應該了解一下神經網路的統計意義。這裡就需要去看PRML這種書了。書講的特別好,但是也比較難,我自己到現在也沒有看完。總之加油看。

7 讀博國外需要五年時間。建議讀一些裡面的paper,仔細地了解一下行業內都在做啥,看看是不是自己想做的東西。如果確定自己非常喜歡,那麼就上船吧。

下面這個鏈接裡面有使citiation篩選出來一些比較好的文章,題主可以在這個鏈接裡面找到我說的那些paper。

terryum/awesome-deep-learning-papers: The most cited deep learning papers


我認為這個也不太難,做到如下幾點:

1. 強悍的編碼能力,至少掌握Java OR C++,Python必會,因為大多開源機器學習框架是Python的。紮實的數據結構基礎,最好一些複雜的數據結構能搞明白,會做相關題目。總之一句話,代碼能力強,多動手編碼,這些都是我們大一、大二就開始鍛煉積累的。

2. 熟練使用 Linux 開發平台,掌握 Shell 編程。因為大部分互聯網都是 linux 開發,建議買本《鳥哥的Linux私房菜》,自己裝個vmware虛擬機,安裝上CentOS (不是很建議用Ubuntu,大部分互聯網公司是用CentOS作為生產環境)系統,作為自己的開發環境。

3. 機器學習相關理論知識的學習。特徵處理,模型評價,相關演算法的把握,這些教科書上就有,這個不多說,可以找幾本經典教材看看,如南大周志華的《機器學習》。我想說的是,你可關注幾個模型,例如當前互聯網公司廣告、搜索、推薦等都常用的 LR、FM、GBDT 等,你去把他們的原理搞透徹,例如 LR 的各種優化演算法,FM 的優化演算法,傳統GBDT 和 XGBOOST的原理區別等,你去把這些模型的原理推導搞透徹。這些模型的實現也去嘗試下,現在就有開源的工具,你去看看源碼,例如 libFM, xgboost, sklern工具包等,當然自己也可以嘗試實現這些演算法。

4. 項目實踐。我認為機器學習項目實踐和理論學習可以同步進行,因為現在開源的工具太多了,例如 sklearn,你自己可以安裝一個,裡面有各種演算法,也有示例數據,可以自己跑跑代碼,知道處理流程,熟練用法。另外,很多大賽可以和同學合作,例如阿里天池比賽,kaggle也可以,不一定非要老師帶隊,當然有老師指導更好。實在沒有比賽參加,項目可以自己想,舉例說當前個性化新聞推薦火爆,那你是不是可以自己來模擬實現一下,例如將新浪、騰訊等網站上的新聞抓取下來,自己清洗好,基於此可以做文本分類,甚至想一些辦法可以模擬一些用戶行為數據,做排序學習等。總之,邊實踐的同時,可以去追求其內在理論,掌握原理。代碼能力,機器學習能力同步進行。

總之,沉下心來,勤奮鍛煉,不要急功近利,如果打好了基礎,可以找實習,能更容易拿到演算法相關的offer。

最後,如果準備得差不多了,想實習,可以投我們這,呵呵!


國內找工作的事我是不了解的,但剛好我是走這個方向的,想交流一下吧。

ml,dm在美國這邊主導的都是phd,master都不多,所以我建議你直接申phd。基礎打好了很關鍵,實際的研究你玩kaggle就很不錯啊,如果能研究出不錯的結果,對跟導師套磁很有幫助。phd都是有funding的,根本不用花家裡的錢。

你本科還沒畢業,現在埋頭做research,英語考一考,是很有希望直博的,如果你真的對科研有熱愛的話。


本人是國內TOP2研究生,機器學習方向。看了題主的計劃,有幾點想說的。

第一,圖森的要求據說非常高(清北級別),畢竟創業公司。指望在公司邊搬磚邊出論文不現實,公司是以盈利為目的,招你是為了讓你發揮你的特長為他們賺錢,如果有研究生能幹,為什麼要從零開始培養本科生?

第二,你的事情太多了,要求自學一堆東西,又要學數學又要學公開課又要考GT,這個一年之內是做不完的。我很好奇題主既然早有出國想法,為何不早點考GT。個人覺得你可以嘗試給心儀的老師寫E-mail,要求當visiting student,爭取讓老師指導你科研(白乾),然後給你寫推薦信。發文章不要期待太高,我們這邊一般第二年才會有文章,有科研經歷也很好。

第三,出國讀PhD看起來很美,但是以題主背景,如果你能接受差一點的院校(TOP100),那當然可以,如果不能,建議讀個碩士過渡下,香港或新加坡或日本都行,可以考慮下貸款。

一點建議,題主可以當作參考。


樓主現在咋樣了啊


北京的?


機器學習你肯定不行,這個需要的數學積累和見識比較多。。。數據挖掘有可以作Hadoop spark這些分散式業務邏輯啊,又不需要數學,又能玩機器。。。搞機器學習讀的paper比你寫的代碼行數還多,能受得了也行


優秀大學生速成法則:

1,一定不要碰網路遊戲,戒煙,少喝酒。聚會是經常的,不喝酒不合群,會喝但要少喝;

2,盡量不要待在宿舍看電影看小說,多出去走走或者去圖書館;

3,不隨波逐流,不跟風,做自己;

4,做大學生該做的,要明白大學是學習知識,掌握技能的場所;

5,早睡早起,不吃夜宵,培養良好的就餐飲食習慣。一定要吃早餐,對身體對精神都好;

6,不要封閉自己,團隊活動一定要參加,個人活動能參加也多參加,這樣多接觸社交人群,增強集體感和團隊意識,積極陽光;

7,堅持每天跑步,距離逐量增加;

8,要外向一些,懂得團隊學習,封閉只會害死自己,所謂三人行必有我師;不要害怕和女孩子交流,她或許比你更能交流;

9,一定要多和自己的導師交流,這是大幅度提高自己的法寶;

10,一定要培養自己一些興趣愛好,如閱讀,打球,寫作,鑽研等;

11,時不時給自己一個閑逛的時間,一邊散心,一邊了解社會走向;

12,義氣是混子的專屬詞,義氣可以不要過頭,酒場之交不是真交,所謂患難見真情;

13,你的實力決定你的地位,你的朋友圈平均水平就是你的水平,一切交友是相能力而交,要明白物以類聚,謹慎交友;

14,要學會一種叫做轉移注意力的技能,這個可以讓你拒絕多種誘惑。

15,有一個詞叫做自控,很重要;

16:最後不要忘了自己的興趣和理想,學習才是大學生的本職。


推薦閱讀:

美國博士讀幾年?
中專畢業的女兒喜歡上音樂,不願從事目前的專業,有希望上音樂學院嗎?
現在出國留學意義還大嗎?
想問問留學生們,你後悔過回國工作這個決定嗎?
現在在韓國做交換生一年的花費多少?

TAG:數據挖掘 | 機器學習 | 留學 | 實習 | 大三學生 |