研究生三年,作為一名非計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生,能夠從一名純小白(Python不會(huì),機(jī)器學(xué)習(xí)沒(méi)聽(tīng)說(shuō)過(guò))到最后校招拿到幾個(gè)不錯(cuò)的offer,個(gè)人感覺(jué)可以給自己打個(gè)及格分吧。寫(xiě)本文的目的,一是對(duì)自己研究生階段所學(xué)習(xí)的知識(shí)做一個(gè)總結(jié),二是希望對(duì)那些剛接觸機(jī)器學(xué)習(xí),準(zhǔn)備往這個(gè)方向發(fā)展的同學(xué)們提供一些可借鑒的經(jīng)驗(yàn)。
1、入門(mén)Python,掌握數(shù)據(jù)分析常用工具
第一次接觸Python是在2016年4月,本科階段的工作差不多完成,就開(kāi)始聯(lián)系研究生階段的導(dǎo)師,希望能夠跟他做一些項(xiàng)目。他給我安排的第一個(gè)工作便是使用Python爬取空氣質(zhì)量數(shù)據(jù),并告訴我可以使用scrapy這個(gè)庫(kù)。我與Python的邂逅,便從這個(gè)爬蟲(chóng)開(kāi)始了。
由于上來(lái)就寫(xiě)的是爬蟲(chóng),所以關(guān)于Python的基礎(chǔ)我也沒(méi)有系統(tǒng)的學(xué)習(xí),不過(guò)還是推薦給大家廖雪峰老師的免費(fèi)教程:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
如果想要深入了解一些Python的知識(shí),推薦大家學(xué)習(xí)《流暢的Python》一書(shū),封面如下。這本書(shū)我看了前面的九章,講的十分不錯(cuò),加深了自己對(duì)于Python里面內(nèi)存管理、常用函數(shù)、類(lèi)等的認(rèn)識(shí)。
除了Python的基礎(chǔ)知識(shí),想要往數(shù)據(jù)分析、機(jī)器學(xué)習(xí)方向發(fā)展的話(huà),還需要掌握一些常用的庫(kù),包括Pandas、Numpy、Matplotlib、Sklearn等等。
關(guān)于前三個(gè),推薦的書(shū)是《利用Python進(jìn)行數(shù)據(jù)分析》:
關(guān)于Sklearn的使用,包括調(diào)用常見(jiàn)的機(jī)器學(xué)習(xí)算法、使用網(wǎng)格搜索尋找最優(yōu)的參數(shù),可以參考的一本書(shū)是《Python機(jī)器學(xué)習(xí)及實(shí)踐 從零開(kāi)始通往Kaggle競(jìng)賽之路》
如果上面的書(shū)你都看完了,我覺(jué)得算是入門(mén)Python數(shù)據(jù)分析了。
2、初識(shí)機(jī)器學(xué)習(xí),反復(fù)讀反復(fù)看
第一次聽(tīng)說(shuō)機(jī)器學(xué)習(xí)這個(gè)名詞,大概是在2016年8月份,是我現(xiàn)在的舍友向我提到的,當(dāng)時(shí)并沒(méi)有太在意,直到研究生階段開(kāi)始,才慢慢有所接觸。當(dāng)時(shí)身邊的人的普遍反應(yīng)是,這家伙大家都在學(xué),特別能掙錢(qián)。也許當(dāng)時(shí)自己也是想著能多掙錢(qián),才會(huì)開(kāi)始入門(mén)機(jī)器學(xué)習(xí)的吧。不過(guò)現(xiàn)在,已經(jīng)開(kāi)始慢慢把機(jī)器學(xué)習(xí)當(dāng)做一種興趣,一種愛(ài)好去看待了。
想必大家都知道,入門(mén)機(jī)器學(xué)習(xí),不得不看的三本書(shū)是吳軍老師的《數(shù)學(xué)之美》、李航博士的《統(tǒng)計(jì)學(xué)習(xí)方法》和周志華老師的《機(jī)器學(xué)習(xí)》,也就是所謂的西瓜書(shū)。
但是有時(shí)候,有些算法比如SVM,說(shuō)實(shí)話(huà)兩本書(shū)講的都不是最好的,還是得結(jié)合網(wǎng)上比較流行的帖子進(jìn)行學(xué)習(xí),整理了幾個(gè)我看過(guò)的一些比較好的帖子,分享給大家:
SVM:http://blog.pluskid.org/?page_id=683Word2Vec:https://blog.csdn.net/itplus/article/details/37969519EM算法:https://blog.csdn.net/randy_01/article/details/88407432
其他的算法,大家結(jié)合兩本書(shū)進(jìn)行學(xué)習(xí)就可以了。值得一提的是,Xgboost和LightGBM是在面試階段比較??嫉膬蓚€(gè)機(jī)器學(xué)習(xí)方法,但是在上面的幾本書(shū)中都沒(méi)有涉及,我之前整理了一個(gè)簡(jiǎn)單的帖子,希望對(duì)大家有所幫助(最后的參考資料里面會(huì)有)。
除了書(shū)籍資料外,視頻資料推薦的主要是吳恩達(dá)老師和李宏毅老師的機(jī)器學(xué)習(xí)入門(mén)課,地址如下:
吳恩達(dá)機(jī)器學(xué)習(xí):https://www.bilibili.com/video/av50747658?from=search&seid=9310704140991725193李宏毅機(jī)器學(xué)習(xí):https://www.bilibili.com/video/av35932863?from=search&seid=16150707490146939986
如果你是剛?cè)腴T(mén)機(jī)器學(xué)習(xí)的話(huà),我的建議就是反復(fù)看,反復(fù)讀,直到你能不依靠書(shū)本將模型的原理解釋清楚為止。
3、面試不斷碰壁,Leetcode得刷,得多刷
理想很豐滿(mǎn),現(xiàn)實(shí)很殘酷,在自己剛學(xué)了點(diǎn)機(jī)器學(xué)習(xí)知識(shí)的時(shí)候,就出去面試闖蕩,結(jié)果卻是不斷的碰壁,機(jī)器學(xué)習(xí)理論和經(jīng)驗(yàn)少是一方面,數(shù)據(jù)結(jié)構(gòu)題也是一問(wèn)三不知,能想到的,只有時(shí)間或者空間復(fù)雜度最差的那種解法。所以我說(shuō)啊,Leetcode不僅得刷,還得多刷。
不過(guò)咱也沒(méi)必要著急,你得有一個(gè)計(jì)劃,比如每天做三道五道,日積月累才行。盡管我現(xiàn)在在面試的過(guò)程中還是有一些問(wèn)題寫(xiě)不出來(lái),但大部分情況下,還是能夠得到一個(gè)比較優(yōu)的解。
關(guān)于刷leetcode這事,你可以往兩個(gè)方向上走。一是按照從easy到medium到hard的方向。二是按照分類(lèi)走,比如先刷樹(shù)相關(guān)的,再刷數(shù)組相關(guān)的,依次類(lèi)推。我自己是用的第一種方式啦,不過(guò)從校招面試的經(jīng)驗(yàn)看,面試官關(guān)注的題主要集中在數(shù)組、鏈表、二叉樹(shù)和動(dòng)態(tài)規(guī)劃上面,可以先把這幾部分的弄明白。
在語(yǔ)言選擇上,建議還是不要用Python吧,Python的小trick還是有點(diǎn)多的,就比如字符串表達(dá)式的值,我們用eval函數(shù)就可以得到,但是在真正面試的時(shí)候,這樣是絕對(duì)不行的,所以建議還是Java或者C++吧。畢竟這兩門(mén)語(yǔ)言,你總要掌握一門(mén)的。
除了在Leetcode上面刷題外,有兩本書(shū)可以給大家參考,一是《劍指offer》,二是《程序員代碼面試指南:IT名企算法與數(shù)據(jù)結(jié)構(gòu)題目最優(yōu)解》,封面如下:
4、相遇深度學(xué)習(xí),論文積累是關(guān)鍵
關(guān)于深度學(xué)習(xí),也是研一下才開(kāi)始慢慢學(xué)習(xí)的,當(dāng)時(shí)主要接觸的是CNN、LSTM這些個(gè)算法,對(duì)于一些比較深入的如GAN、Seq2Seq、Transformer之類(lèi)的,還沒(méi)有接觸。真正帶我相遇深度學(xué)習(xí)的,可以說(shuō)是李宏毅老師的深度學(xué)習(xí)課:https://www.bilibili.com/video/av9770302?from=search&seid=6099263941108862254
當(dāng)然,吳恩達(dá)老師的課也十分精彩:https://mooc.study.163.com/university/deeplearning_ai#/c
除此之外,不得不提的一本書(shū)是我們所謂的深度學(xué)習(xí)圣經(jīng),不過(guò)說(shuō)實(shí)話(huà),我覺(jué)得這本書(shū)雖然寫(xiě)得好,但還是有一定閱讀難度的:
個(gè)人感覺(jué),深度學(xué)習(xí)這東西,重在不斷積累和反思吧,多讀論文,多寫(xiě)代碼。論文的話(huà)大家平??梢远嚓P(guān)注PaperWeekly這個(gè)公眾號(hào),代碼的話(huà)我建議如果論文給出了參考代碼,大家可以嘗試著去敲一敲,不僅加深自己對(duì)于論文思路的認(rèn)識(shí),還可以提升自己的動(dòng)手實(shí)踐能力。
5、推薦與計(jì)算廣告,廣度優(yōu)先VS深度優(yōu)先
在整個(gè)研究生階段,我其實(shí)并沒(méi)有形成一個(gè)主要的研究方向,大家可能看我平時(shí)的公眾號(hào)推薦系統(tǒng)相關(guān)的東西比較多,但我并不是研究這個(gè)的,主要還是自己對(duì)這個(gè)東西比較感興趣,所以看的多了些。推薦系統(tǒng)的兩本入門(mén)書(shū)籍是《推薦系統(tǒng)實(shí)踐》和《推薦系統(tǒng)與深度學(xué)習(xí)》:
深度學(xué)習(xí)領(lǐng)域還是挺多的,如推薦系統(tǒng)和計(jì)算廣告、CV、NLP等等,這就引出了廣度優(yōu)先VS深度優(yōu)先的問(wèn)題。個(gè)人感覺(jué)還是深度優(yōu)先為主吧,確定好自己的一個(gè)研究方向,然后在這個(gè)領(lǐng)域進(jìn)行深挖。不過(guò)同時(shí),也要兼顧廣度,深度學(xué)習(xí)的東西都是相通的,比如Transformer最開(kāi)始主要應(yīng)用于文本領(lǐng)域,GAN主要應(yīng)用于圖像領(lǐng)域,這兩種方法現(xiàn)在也都開(kāi)始在推薦系統(tǒng)中使用。
最近自己要開(kāi)始研究計(jì)算廣告方面的知識(shí)了,因?yàn)樽约喝肼氈罂赡軓氖逻@一方面的工作,那還是給大家推薦兩本書(shū)吧,一本是大家所熟知的《計(jì)算廣告》,另一本是黃皮書(shū)《互聯(lián)網(wǎng)廣告的市場(chǎng)設(shè)計(jì)》,想要入門(mén)這個(gè)方向的同學(xué),建議先看黃皮書(shū),再看《計(jì)算廣告》一書(shū)。
6、Hive和Spark,數(shù)據(jù)處理的標(biāo)配
Hive和Spark大家還是要學(xué)一下的,使用Hive來(lái)存儲(chǔ)數(shù)據(jù),使用spark sql和Hive sql來(lái)處理數(shù)據(jù),感覺(jué)是互聯(lián)網(wǎng)里面的主流方式。關(guān)于hive,掌握一些常用的函數(shù)的使用方法,如concat_ws,row_number,case..when,if,get_json_object等等,對(duì)于spark sql,掌握其運(yùn)行的基本原理,以及一些常見(jiàn)問(wèn)題的處理方法。首先,學(xué)會(huì)如何處理數(shù)據(jù)傾斜,有時(shí)候因?yàn)橐粋€(gè)數(shù)據(jù)傾斜問(wèn)題,一整天都浪費(fèi)在調(diào)試一個(gè)spark代碼中了,其次,學(xué)習(xí)如何盡量減少spark任務(wù)的空間占用,同時(shí)加速spark任務(wù)運(yùn)行速度,spark作業(yè)在線(xiàn)上調(diào)用時(shí),會(huì)占用公共資源,你的任務(wù)占用的資源越多,別人占用的資源就越少,同時(shí),如果你的任務(wù)運(yùn)行的快,也可以給別人的任務(wù)更多的空間。spark可以通過(guò)很多語(yǔ)言來(lái)實(shí)現(xiàn),不過(guò)我建議還是學(xué)習(xí)一下scala吧,畢竟可以和java無(wú)縫銜接。除了spark和hive,掌握一定的excel知識(shí)也是必要的。
那么這里有兩本書(shū)推薦給大家,《Hive編程指南》和《Spark內(nèi)核機(jī)制解析及性能調(diào)優(yōu)》:
-
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8452瀏覽量
133139 -
數(shù)據(jù)分析
+關(guān)注
關(guān)注
2文章
1461瀏覽量
34186 -
python
+關(guān)注
關(guān)注
56文章
4811瀏覽量
85084
原文標(biāo)題:經(jīng)驗(yàn)分享 | 我是如何從小白到收獲幾個(gè)不錯(cuò)的offer!
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論