大三學(xué)生,比較喜歡機(jī)器學(xué)習(xí),同時(shí)又想去工作。想了解一下像機(jī)器學(xué)習(xí)這種門檻比較高的工作有沒有可能繞過研究生這三年,而在工作過程中一步一步掌握相關(guān)知識,這樣算不算走了彎路?
謝邀……邀得還挺準(zhǔn)的,我是本科畢業(yè),工作了半年之后跳槽到了一家互聯(lián)網(wǎng)創(chuàng)業(yè)公司,一開始做的是爬蟲相關(guān)技術(shù)開發(fā),然后慢慢就接觸了數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)相關(guān)的開發(fā),現(xiàn)在主要做SEM相關(guān)開發(fā),用到和機(jī)器學(xué)習(xí)相關(guān)的技術(shù)主要有貝葉斯分類器、決策樹、Item-CF推薦模型、KNN、關(guān)聯(lián)規(guī)則等等。
題主說“喜歡機(jī)器學(xué)習(xí)”,這種話在面試官面前是毫無分量的,如果你真的想做這方面工作,請務(wù)必夯實(shí)算法和數(shù)據(jù)結(jié)構(gòu)基礎(chǔ),以及告訴面試官你有極強(qiáng)的自學(xué)能力。比如從我自身來說,曾在高中參加NOIP和大學(xué)ACMICPC,雖然成績都沒有十分理想(NOIP二等獎、省賽金牌和亞洲區(qū)域賽銀牌),但是算法基礎(chǔ)和扎實(shí)程度絕對好過沒有參加過類似競賽的同學(xué)(也是很多大公司看重ACM選手的原因)。
如果題主沒有競賽基礎(chǔ)的話,會相對困難一些,可以嘗試做一些和機(jī)器學(xué)習(xí)相關(guān)的小項(xiàng)目。找工作的時(shí)候不要直接奔著機(jī)器學(xué)習(xí)的崗位去,這些崗位基本是不會要本科生的,只要找有機(jī)器學(xué)習(xí)相關(guān)技術(shù)的公司去實(shí)習(xí)就好了,哪怕做個運(yùn)維都行(我真沒黑運(yùn)維???)……后面的事情就好辦啦。
我想我很符合題主問題的描述。
軟件工程專業(yè),大四,intern,現(xiàn)在在做機(jī)器學(xué)習(xí)。
關(guān)于如何學(xué)習(xí),網(wǎng)上已經(jīng)有大批的資料,知乎上也有相關(guān)問題,已經(jīng)有人列出了回答,這里不祥述了,基本就是以各種online的課程為基礎(chǔ)的自學(xué)。
關(guān)于求職,首先,你需要向面試官展現(xiàn)出,你是一位很強(qiáng)烈的self-motivated的人:你為什么選擇學(xué)習(xí)這個;為了自學(xué)機(jī)器學(xué)習(xí),學(xué)了哪些和怎樣學(xué)等問題--learningability非常重要。其次,一定程度上表現(xiàn)出/證明出你的數(shù)學(xué)基礎(chǔ)/理論能力。AndrewNg在coursera的課程偏向application,很多知識也只是淺層地窺探一下。更多的算法背后的理論需要你具有很好的數(shù)學(xué)基礎(chǔ)。在面試的時(shí)候,我被問了幾道概率論的問題(不過比較簡單)。
所以我挺推薦以下幾門理論更強(qiáng)的課程:
NTU林軒田老師的machinelearningfoundation&&machinelearningtechnique
AndrewNg在stanford的machinelearning
Caltech的learningfromdata等
至于數(shù)據(jù)結(jié)構(gòu)這些,也很重要。需要表現(xiàn)出來的能力是:學(xué)以致用??梢圆恍枰狝CM選手那么強(qiáng)的算法與數(shù)據(jù)結(jié)構(gòu)能力,但是讓你設(shè)計(jì)算法解決問題并給出復(fù)雜度,這種能力是必須要qualified--這其實(shí)就是大學(xué)中算法課程合格的要求。
剛寫完左邊公眾號右邊文章,這里分享一下
【原創(chuàng),若要轉(zhuǎn)載,請注明:來自左邊微信公眾號右邊“數(shù)據(jù)挖掘機(jī)養(yǎng)成記”】
一、如何利用資源
數(shù)據(jù)挖掘這個領(lǐng)域可供自學(xué)的資源很廣泛:MOOC(網(wǎng)絡(luò)公開課)及課程相關(guān)講義、書籍、博客、paper等等。鑒于學(xué)習(xí)資源浩如煙海,對資源進(jìn)行過濾是非常重要的,這里談?wù)勎覍Y源利用的幾點(diǎn)看法:
1.只用經(jīng)典資源
對于公開課:參考果殼MOOC上學(xué)員的評價(jià),coursera的學(xué)員討論區(qū)
對于書籍:主要參考亞馬遜(美國/中國)、豆瓣上的書評以及GoogleScholar中的引用數(shù),CSDN、當(dāng)當(dāng)、京東上的書評也可略做參考
對于博客:只看那幾個大牛的個人博客或者專業(yè)的社區(qū)
對于論文:GoogleScholar的引用數(shù)是重要指標(biāo),但當(dāng)你要follow一個新領(lǐng)域時(shí),建議先turtorial再自己看新論文、做評價(jià)(因?yàn)樾抡撐牡囊脭?shù)一般都不高)
2.通讀和略讀的取舍在篩選出經(jīng)典資源的基礎(chǔ)上
對于公開課:入門級的課程要堅(jiān)持上完,進(jìn)階的課程選擇性聽一聽
對于書籍:磚頭書當(dāng)參考手冊看(如PRML、模式分類、統(tǒng)計(jì)學(xué)習(xí)理論、數(shù)據(jù)挖掘?qū)д?、?shù)字圖像處理、C++Primer),實(shí)踐書、小而美的導(dǎo)論書建議通讀(如數(shù)學(xué)之美、統(tǒng)計(jì)學(xué)習(xí)方法、機(jī)器學(xué)習(xí)實(shí)戰(zhàn)、推薦系統(tǒng)實(shí)踐、半監(jiān)督學(xué)習(xí)導(dǎo)論、appliedpredictivemodel、essentialC++)
二、我的自學(xué)之路
13年之前
數(shù)學(xué)類課程,只學(xué)過微積分、線性代數(shù)、信號處理,零碎地了解和使用過神經(jīng)網(wǎng)絡(luò),不了解機(jī)器學(xué)習(xí),只聽說過模式識別(以為就是人臉識別),也正因?yàn)閷δJ阶R別的不了解,保研的時(shí)候放棄了中科院自動化所和計(jì)算所兩位牛導(dǎo)伸出的橄欖枝,選擇離家更近的浙大,讀我自己不太感興趣的控制理論,研究電路。。?,F(xiàn)在想來仍是有些遺憾(但不后悔),所以準(zhǔn)備讀研但沒確定方向的同學(xué),一定要抓緊時(shí)間多了解研究方向,爭取選擇自己感興趣的,讓遺憾最小化
13年
1.入學(xué)前的暑假,在網(wǎng)易公開課上刷了AndrewNg的《機(jī)器學(xué)習(xí)》(對應(yīng)stanfordCS229,很老的課程,大概是09年的),那時(shí)候coursera還沒火,果殼mooc也沒創(chuàng)辦。這個課程難度比現(xiàn)在coursera上Ng的同名課程要難一些,幾乎全是公式推導(dǎo),而且這門課的SVM是重點(diǎn),但并未提及神經(jīng)網(wǎng)絡(luò),后來coursera上Ng的課程則是基本刪掉了SVM,加進(jìn)去神經(jīng)網(wǎng)絡(luò)(也能理解,因?yàn)樯疃葘W(xué)習(xí)火起來了)。當(dāng)時(shí)因?yàn)閷?yōu)化理論、矩陣?yán)碚撨€不夠了解,所以留下不少疑惑
2.同樣暑假,自學(xué)了C++,幾乎是把《essentialC++》從頭看到尾,然后選了書中一些作業(yè)去實(shí)現(xiàn),因?yàn)楸究埔恢庇肅寫嵌入式,所以這本書看得比較順。這本書實(shí)乃Lippman的良心之作啊,短小精悍,建議配合他的另一本大部頭《C++primer》一起看,作為輔助閱讀。雖然后來一直沒怎么用到C++,不過看C++庫的時(shí)候不至于看不懂了
3.入學(xué)后在coursera上看了Ng的機(jī)器學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)部分,本來想再看下Hinton的《神經(jīng)網(wǎng)絡(luò)》,但要看自己研究領(lǐng)域的論文,就放棄了
4.買了吳軍的《數(shù)學(xué)之美》,科普性質(zhì)的書,也有推導(dǎo),深入淺出,引人入勝,非常棒,對搜索和NLP領(lǐng)域的算法有了較多認(rèn)識
5.買了李航的《統(tǒng)計(jì)學(xué)習(xí)方法》,純推導(dǎo),把幾大類經(jīng)典模型背后的理論刻畫得淋漓盡致,看了之后對SVM的VC維理論、EM算法等有了深刻認(rèn)識
6.選修了模式識別,教材用的是Duda的《模式分類》,一本磚頭書,建議看前三章,主要涉及貝葉斯參數(shù)估計(jì),另外LDA、PCA的推導(dǎo)也可以看看,講的不錯
7.選修了英文版矩陣論,用的教材是老師的講義,其實(shí)國內(nèi)戴華的《矩陣論》就講的非常好,國外的推薦看Roger的《Matrixanalysis》(大部頭,選擇性看)
8.買了《數(shù)據(jù)挖掘?qū)д摗?作者Ping-NingTan,不建議買JiaweiHan的那本),翻了翻,發(fā)現(xiàn)里面講的算法大多已經(jīng)了解了,講的比較淺,適合入門,用來建立數(shù)據(jù)挖掘領(lǐng)域的知識體系結(jié)構(gòu)
14年
1.跟倆基友水了一下阿里的推薦算法大賽,是真的水,我跟另一個基友半途而廢浪掉了,后來就剩隊(duì)長一人苦苦堅(jiān)持。。。
2.選修了優(yōu)化課程,自己課余讀了讀Forst的《Optimization_TheoryandPractice》,偏應(yīng)用一點(diǎn),讀完之后對理解LR、SVM等模型的優(yōu)化方法,幫助非!常!大!
3.買了Harrington的《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》,開始接觸python,同時(shí)買了張若愚的《Python科學(xué)計(jì)算》(后來證明沒必要買,作者在網(wǎng)上放了網(wǎng)頁版,方便索引和查找),Harrington這本書里的代碼只調(diào)用了兩個包:numpy,scipy,還有個matplotlib用來畫圖,然后造了一些算法的輪子。現(xiàn)在看來scikit-learn包已經(jīng)包含了幾乎所有常見算法,所以這本書看看代碼、選幾個實(shí)現(xiàn)一下就好,沒必要從頭到尾實(shí)現(xiàn)
4.偶然接觸了譜聚類,一發(fā)不可收拾,把領(lǐng)域相關(guān)的paper幾乎掃了一遍,包括Ng2002年那篇、還有個很經(jīng)典的turtorial,然后follow到了大神林達(dá)華的博客,看了他寫的譜聚類與圖論、馬爾科夫鏈的聯(lián)系,醍醐灌頂,自己用matlab實(shí)現(xiàn)了一下算法
5.開始躲著老師在支付寶搬磚,一開始蠻無聊的,跟著數(shù)據(jù)分析師純寫SQL,后來接觸了新業(yè)務(wù),有向網(wǎng)絡(luò)的關(guān)鍵節(jié)點(diǎn)發(fā)現(xiàn),自然而然聯(lián)想到之前搞過的譜聚類,于是啃了一本20多頁的turtorial,得出結(jié)論:有向圖的譜聚類不適合用在該業(yè)務(wù)。。。后來又有個業(yè)務(wù),主管建議用半監(jiān)督學(xué)習(xí),于是啃了XiaojinZhu的《Introductiontosemi-supervisedlearning》,以及周志華的一些講義和論文。朱曉進(jìn)(音譯)的這本導(dǎo)論書簡單易懂,一下子就讓讀者catch到了半監(jiān)督方法的精髓(還有一本偏理論一點(diǎn)的Chapelle的《Semi-supervisedlearning》可作為擴(kuò)展閱讀)。后來自己在用Python實(shí)現(xiàn)算法的過程中,遇到一個不小的障礙,于是follow到了大神pluskid的博客,一下子解決了我的問題
15年
1.買了項(xiàng)亮的《推薦系統(tǒng)實(shí)踐》,大贊,國人難得有這樣一本經(jīng)典問世,雖然有瑕疵,但對于我等初學(xué)者來說,非常受益。讀完之后對推薦系統(tǒng)用到的模型、整個知識體系都有深刻認(rèn)識。用網(wǎng)上公開的數(shù)據(jù)集做了一個toyproject
2.看了下coursera上明尼蘇達(dá)兩位老師的《Recommendersystem》,簡單易懂,很快pass完這門課
3.把SVD++、Factorizationmachine相關(guān)的paper翻出來看了一遍,發(fā)現(xiàn)理論不難,而且早就有成熟的開源庫了
4.最近看到一本好書,Kuhn的《Appliedpredictivemodel》,正在看,偏應(yīng)用,講了很多trick,在正統(tǒng)的機(jī)器學(xué)習(xí)理論書上不太提及,但是實(shí)際非常有用。不過是用R寫的,像我這樣不會R的童鞋,跳過代碼就好了,或者自己用Python實(shí)現(xiàn)以下
額外的補(bǔ)充
對上面提到的資源再做一個補(bǔ)充,有些我看過但是忘了何時(shí)看的,有些過于基礎(chǔ)的我自己不太會看了,還有些是我還沒來得及看的
1.林軒田老師的《機(jī)器學(xué)習(xí)基石》和《機(jī)器學(xué)習(xí)技法》,在MOOC上評價(jià)相當(dāng)高
2.Hinton的《神經(jīng)網(wǎng)絡(luò)》,我目前做的東西還不涉及深度學(xué)習(xí),以后也許會follow
3.Vapnik的《StatisticalLearningTheory》,實(shí)在是磚頭書而且偏理論,國內(nèi)有張學(xué)工老師的譯本
4.Bishop的《PatternRecognitionandMachineLearning》,理由同上
5.Segaran的《ProgrammingCollectiveIntelligence》,國內(nèi)譯本,叫《集體智慧編程》,蠻好的實(shí)踐書,Python代碼,適合入門,我暫時(shí)不需要了
6.大牛的博客,除了上面說的林達(dá)華、pluskid,還有jerrylead,LeftNotEasy,注意,不要被一個叫“研究者July”的人坑了!不懂的搜知乎對他的評價(jià)
7.問答社區(qū),首推Stackexchange,其次Quora,還有知乎
目前的遺憾
1.沒有真正堅(jiān)持過一個比賽,對比賽中常用的trick,比如造特征、模型融合等,不是很熟練
2.沒有真正上線過一個實(shí)際項(xiàng)目,所以實(shí)踐能力還有待提高
最后我想說的是,雖然網(wǎng)上有很多對如何自學(xué)機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘話題的討論,但本文是我基于我自己認(rèn)識,一字一句寫完的,若有雷同之處,希望各位包涵,也希望提出批評指正意見,畢竟作為一個自學(xué)者和小菜鳥,難免有理解不當(dāng)之處,希望跟各位多多交流
先占個坑等我成功了告訴你
----分割線----
臥槽被挖墳。順便答一下吧
當(dāng)然是可以,不過比較難,不太建議你走這種hard模式。
大公司有錢,直接花大價(jià)錢招個能干活的就好,而且好的項(xiàng)目僧多粥少,哪有機(jī)會給你邊做邊學(xué)。
小公司沒錢,沒耐心慢慢培養(yǎng)你。而且說倒閉就倒閉,不會長線投資你,耗不起。
社會就這樣,急功近利。所以要不就自己研究生階段學(xué),要不就工作之外業(yè)余時(shí)間學(xué)。隨你選。
企業(yè)是壓榨你的地方,不是培養(yǎng)你的地方。當(dāng)然,在項(xiàng)目中成長這種雙贏局面是最理想的,但前提是你已經(jīng)掌握干活的基礎(chǔ),而不是完全從0開始。
也有認(rèn)識辭職自學(xué)后找機(jī)器學(xué)習(xí)工作的朋友,或者讀在職研究生。而我是邊工作邊學(xué),畢竟要workingfor飯。
是有機(jī)會的。
看了一下有些人的答案,那些整天做數(shù)據(jù)處理或者簡單用模型處理個任務(wù)的同學(xué),就不要說自己在搞機(jī)器學(xué)習(xí)了。