為什麼非科班這麼難進數據挖掘這一行?
我高數不錯,大部分新的演算法和實驗都是看英文論文,對著英文論文能夠碼出個卷積神經網路來,LSTM演算法也沒問題。 自學過一大堆基本機器學習演算法,數據結構也自學過,投了一年半簡歷,沒有一家公司給過我機會。
我認識的計算機老師都不知道weka,我已經在用java+weka做聚類和關聯規則。我每個月都會複習概率論,我那些統計學同學連卡方分布都忘了,他最後找到了數據分析的工作,我連面試機會都沒有。我懂java,c,R語言,寫代碼比那些科班的水過的四年還多。我試過為C語言代碼,debug三天三夜,為了安裝一些架構把自己電腦都裝壞了,然後沒有一次面試機會!然後有家不錯的公司回復了,那時候知識都忘光了,最後被刷。———————詳細說明:鑒於很多人說我統計學是不是沒有,知識是不是不系統,完全沒有實踐過的,我這裡說明下,我很久沒看書了,一直都在碼字,java+weka jar包寫複雜的聚類,R語言做神經網路建模,利用過回歸分析做過匯率模做了我兩個禮拜修修改改,其中利用到聚類做數據離散化,我的統計學知識是基礎統計學+概率論+隨機過程+回歸分析,因為這些就是我的專業課程。誰都知道不能光看書,我也各種實踐過一年,只是沒項目,很散。
既然你喜歡這個行業,就一定要堅持下去。 我的建議是接下來應該要學得「深」。 推薦你一個blog, 他也是本科,估計也是自學的,後來跟google deepmind, bengio等人合作, 估計對你的規劃有所幫助。(他寫得每篇博文都是經典)http://colah.github.io/archive.html
題主的問題在於高不成低不就!
先說高不成吧!
題主所在的學校不知道是哪裡,但是:認識的計算機老師都不知道weka
私下想來幫題主排除了國內的一流名校了,問題來了:需要用到專業數據挖掘的公司絕對不會是小公司了,這些大公司招聘應屆生的門檻相對還是很高的!除非你有拿得出手的項目、證書等等,不然僅僅在簡歷上寫你會這些演算法,大公司是不會看的,所以BAT這些巨頭估計不會給你機會了!
再說低不就吧!
你的同學連卡方檢驗都忘了還能找到工作,一定是家小公司咯!其實小公司對數據分析的要求很簡單,會做報表,能分析業務,能給出指導建議就好了,對於數據挖掘演算法的要求幾乎為0。但是題主可能覺得自己學了這麼多不能這麼浪費自己的技巧啊!小公司不願意投簡歷,有Offer也不願意去!或者是題主把自己簡歷上寫了太多演算法的東西,小公司的人看不懂......為題主默哀!
建議題主收斂氣息,從小公司干起,積累1年工作經驗,以題主的自學能力,應該能夠成為技術大牛或者帶領一個小團隊做項目,到時候題主的市場會開闊起來的!
題主加油!做好自己的定位哦!贊同樓上 @脫泥里 的答案,你缺乏項目經歷。
題主說自己「高數不錯」,「每個月都會複習概率論」,「會用Java+Weka」,「debug三天三夜」,但招聘方不管這些,他們關心的是你「做出來過什麼項目」,而不是你「做過什麼努力」。
「在你沒有做出成績之前,這個世界不會在乎你的自尊。」 -- 伍聲2009
我不知道你說的科班指的是哪些專業出來的人。
數學系的人編程不行計算機系的人數學不行其實每個系都有自己的短板,更多的都是自學。我看題主自學能力還蠻厲害的,所以不用擔心科班不科班的問題。說說項目的事吧,如果你不是立志要進入學術界,我覺得身上還是需要幾個拿得出手的項目的。我推薦幾個,也是我正在做的。
1、推薦系統的分散式實現。2、做一個深度學習的圖像識別。3、試試文本挖掘這方面,爬一個話題的數據做個社會網路分析。4、Kaggle上找個自己喜歡的,做一做。以上也只是個人淺薄之見,題主看看就好啦~而且很歡迎一起交流!看題主的描述,似乎最開始是應屆生投簡歷?而且專業不是計算機也不是統計學?但是對數據挖掘很有興趣?這種情況下面試機會很少很正常。
興趣是很重要的,它是支撐你在一條路上走下去的動力。但在公司篩選的角度看起來,興趣並不是很關鍵,關鍵是有東西能拿出手,能證明自己的可以解決問題。
大學經濟學專業,5年知名互聯網公司數據分析經驗,想做數據挖掘和機器學習,是否要去讀個相關學位? ? - 肖凱的回答
在這個回答中我寫過入行數據挖掘有四條路(reading, people, doing, sharing),四條路都要走。
可以從以下幾個方面問問自己看:
1、有沒有寫數據挖掘相關的技術博客?2、有沒有kaggle比賽經驗並得到不錯的名次?3、有沒有參加過什麼行業交流,有沒有去套瓷牛人得到什麼內推機會?數據挖掘是和機器打交道比較多,但也要會和人打交道,特別是找工作的時候。本人非科班碩士畢業,現數據挖掘工程師一枚,也面試過許多985的學生,有科班也有非科班的。個人感覺題主認知存在問題。
1.基礎統計學+概率論+隨機過程+回歸分析。這些最多也就是大類基礎課程,算不上專業課吧。你的專業課至少也得是人工智慧,運籌學,博弈論之類的課程吧。
2.R語言做神經網路建模,利用過回歸分析做過匯率模做了我兩個禮拜修修改改,其中利用到聚類做數據離散化。這些充其量課程大作業水平,而且也就是其中一個階段。題主有沒有完整地從數據實驗收集開始到完整分析報告產出的完整流程?
3.我也各種實踐過一年,只是沒項目,很散。這個是關鍵。沒有經歷真正項目,是不可能體會到項目和理論學習之間的差距,實踐才是檢驗真理的唯一標準。一個沒有項目的簡歷,是很難通過面試的。
自信是好的,切勿盲目自信。高數好不能說明什麼,我那幾門數學課基本接近滿分,有用嗎?看著論文碼代碼這個也只是基礎能力。那在看論文實踐過程中,有沒有想過這些演算法在解決實際問題的時候存在什麼問題,有沒有可以改進優化的地方,如何將一個實際問題抽象為一個數據問題,這些才是一個數據挖掘或者演算法工程師應該具備的基本能力。
雖然我想說,我找工作的時候不會java,不會數據結構,也許可能看過的演算法也不多。但是我的實踐經驗比你豐富(剔除一些主觀因素),僅此而已。很多東西並不是很重要,你說java代碼,985的優秀學生,學一個月不就能夠實現一些基本演算法了嗎?思維和學習能力才是更為重要的。
——————————————————————
@晴藍星空
回復的時候不知為何掛了,可能太長了,所以就在這裡回復吧。
我走上這條路還是比較自然的,是因為研究生做的就是軟測量相關。也就是通過一些可測量量來推測一些不可測量量或難測量量,本質上就是一些基礎演算法,例如降維,聚類,分類,時間序列等等。後面機緣巧合實驗室讓我去北大培訓了兩周,系統化學了一遍機器學習的理論,如LASSO,樹(bagging,boosting等),蒙特卡洛,社群劃分等。雖然當時沒怎麼聽懂,但是開闊眼界,後面回味下還是不錯的。另外一點就是當時機器學習還沒那麼火,所以我就幸運的到了BAT實習轉正留下來了,當然基礎就是之前說的那些,畢竟競爭沒現在激烈。我現在面試看看外面的學生,各專業轉過來的不要太多,學校差一點很容易被刷,畢竟好學校的太多了。上了車就好辦了,工作中自然會有很多學習的機會,各個場景都會觸發,就看你的學習能力了。
ps. 題外話說兩句,個人覺得比上述廢話還重要:
——自己的發展還是要考慮歷史的進程
——人生大部分時候都在做布朗運動,除非你不想做布朗運動
我大學學的是自動化,原因是這個方向當時好啊,當時可是說學計算機人才飽和找不到工作的年代。學這個一個是寬泛性,也就是萬金油,另外細分領域都還不錯,工業自動化,機器人,智能家居,放到未來說不定都可能是一個風口,比如工業4.0啊,就看你怎麼說了。對於本科畢業不想就業的人來說,領域寬泛很重要,否則就面臨你現在的問題,轉怎麼轉。本科搞過硬體(單片機,PLC),做過軟體開發,後來覺得都很無聊,重複性工作,所以大四轉了演算法。(這裡順便贊下我校的環境,本科生大量進實驗室是個好東西,我大一就去了,所以可以慢慢試錯,選擇自己喜歡的方向)
和自己的歷史相關,搞競賽的,基礎學科好。為了保研,選課都往基礎課上走,數理化生學個遍,專業選修課也是偏理論,數值計算,運籌學之類的。當然也有些人工智慧啟蒙課。如果說現代計算機相關的知識,我估計就上了五門課,C語言(2門),數據結構(沒去過,不知道講了啥),計算機網路(大一學了大三的課,除了背書也沒記住啥),人工智慧導論(就知道一些搜索演算法)。這也是現在的缺陷,不會複雜編程,只能簡單的功能實現。
pps.再說些題外話,還是要多跨行業跨專業看看。誰知道這個坑有多大有多深,機器學習會發展到什麼地方沒人知曉。這個問題就有兩個層次了,一個是生存層面,沒有了機器學習,甚至說互聯網行業崩了,你能幹什麼;另一個是生活層面,你要是哪天覺得機器學習、互聯網沒意思了,你能幹什麼。所以有空可以跨度大些去嘗試下,挺好玩的世界。
看了題主的描述和回答的一些評論,這裡僅僅表達一下我個人的看法。。
首先從找工作的過程上,題主說自己是金融學專業的。。這個確實很吃虧啊,容易被秒刷,除非你有一份非常漂亮的簡歷。但是看樓主自己做過的東西,為什麼簡歷不能讓人眼前一亮呢?我覺得你也可以把你的簡歷放上來,知乎大神很多,也可以給你提修改意見。
然後說說樓主做的東西,我覺得如果真的做得很透的話,應該已經基本上有相關專業的碩士水平了吧。但是,首先,你說自己學過這麼多東西,研究過這麼多演算法,你有能夠拿出來足夠證明你水平的東西么?比如前面的大神說的,你可以把你的代碼放到github上去;或者你可以參加數據挖掘方面相關的比賽,這些都是你個人就能做的事情。如果有可能的話,你可以想辦法參加相關專業老師的項目,總之,你需要能證明自己的東西,而不是只對HR說我做過。然後,注意你的方向和效率,你可能很努力,但是要保證自己做的工作是有意義的並且是主流的,這樣才能讓公司對你感興趣。比如你說你自己碼了個CNN出來,這很不容易,那麼你可以提供你的代碼的實驗結果和一些性能指標,或者你考慮了那些細節,和已有的比較成熟的代碼比如caffe、convnet、cxxnet做哪些比較。記得做東西的時候,你面對的是一個大方向,不要一個人埋頭苦幹。
最後從情緒上,感覺題主無論是描述問題還是評論,都有點沖。。很憤憤不平、很急躁,也很迷茫,不知道題主是不是本科生,但是這些都是本科生最容易有的情緒,感覺時間飛逝,自己想要的又總是得不到,想要去做一些補救或者從頭再來又瞻前顧後,覺得都什麼不是最佳選擇。如果題主真的處於這樣的狀態下,其實這很不利於題主下一步的選擇。看了前面有人提議題主讀個研究生,個人真心覺得讀個研換個專業對你現在的情況是個性價比挺高的事情。。還有關於「然後有家不錯的公司回復了,那時候知識都忘光了,最後被刷」,真的不知道是該吐槽你還是怎麼辦。。但是不管題主怎麼選擇,切記不要焦躁,不要憤世嫉俗,這個世界確實不是你付出了就一定有相應的回報的,踏踏實實做好該做的準備,心平氣和地去做選擇,會是最好的解決辦法。我來補充一下,找工作找不到,明顯是因為樓主工程經驗不足。
工程經驗,我建議不是寫演算法庫,而是用知名的庫做一些應用,或者小demo。因為,工作的話,很多時候不會讓你研發演算法,而是組合現有演算法,儘可能的解決問題。
當然,樓主優勢就是基礎能紮實一些。鼓勵一下。但也要知道,還差很遠呢。
至於你覺得其他比你差的人能找到工作-----你都學了這麼久概率了,還不明白這種事情都是概率分布么。當然,如果你發現所有比你差的都找到工作,你沒找到。那麼就工作需求的角度上,用Bayes的觀點來看,你要比平均水平差,有可能是你自己對自己判斷失誤。我認為很可能的答案是:你能力還是不錯的,但是不符合工作需求。
p.s. 說實話,我對於沒有項目經驗的人的代碼水平,抱有懷疑。ACM能拿獎的人,代碼也有寫得跟shit一樣的。設計模式,解耦合,這些東西完全不知道是什麼。寫代碼,就是完全順著心意的思路來。我只能說,這種水平,太初級了。慢慢加油吧。
====================再加一點如果你是想找研發性質的工作,我只能說,差得遠了。博士畢業再說吧。看完你這些,我有些好笑。你的定位一點都不準,按照你目前的情況我照你來幹嘛?做研發?做業務分析?做數據倉庫?做研發,底子不夠,而且真真需要演算法研發的公司也不多。做業務分析或者數據倉庫,按你介紹的,我相信你不一定能安心,而且被你鄙視。數據分析,重要的還是思維模式,還有綜合的知識結構。如果這些你都不行,我為什麼不找一個思維方式較好的白紙呢?切記空杯和謙虛……
1.不要浮於表面。看過太多略知皮毛便就自以為精通的同學。聽說過不代表看過,看過不代表研究過,研究過不代表掌握過,掌握過不代表精通過。數據結構,你真正花過多少時間研究,你琢磨過那些數據結構的關聯和區別以及適用場景么。你研究過stl是如何做抽象,將數據結構和演算法分離么。你考慮過多線程的安全么。是的,這些和數據分析無關,但是如果你沒有其他優勢,這些又不擅長,憑什麼和科班比。2.你的統計學習基礎是否紮實。和1中一樣,你自學一堆「基本機器學習演算法」,那真的理解了嗎?你能講講聚類演算法和混合模型的關係么?你理解了什麼是EM演算法么?你能推倒下crf或者hmm的訓練過程么。或者推倒下你擅長的後向傳播演算法?3.又見這種跟科班水過四年的比,你說的沒錯,我那水過四年的同學,我現在研究生畢業了,人家還在每年去補考拿畢業證呢,c語言就是不如我們學校人文學院的女生,人家無所謂,也不想當程序員。4.前面你說不給你機會,最後一段,給你機會你又說什麼都忘記了,你到底想怎樣?逗我玩么。。。還可不可以愉快的玩了
你沒有項目經驗,數據挖掘著領域不動手去做實際的東西,只看書是沒有任何意義的。
還有WEKA真的是幼兒班級別的。工程上誰去用啊。都是自己寫代碼去實現。
你不知道演算法怎麼來的,怎麼修改,怎麼改進。你和什麼也不會的差距不是很大樓主找到工作了嗎?沒找到合適的話聯繫我,老闆特別like能做深度神經網路的人,螞蟻金服的,杭州或上海都行
數據挖掘現在公司都用神經網路了么?我感覺你定位不清如果說論文看的多,能實現最新演算法,那應該是研究員,本科怎麼行?如果說喜歡寫代碼,那應該是數據挖掘工程師,你看過類似招聘的要求么,簡單貼一個:
熟練運用各種常用演算法和數據結構,有獨立的實現能力
熟悉 Linux平台上的編程環境,精通 C++/Java開發,精通 Python/Shell等腳本語言有文本分析、自然語言處理、推薦系統或者大數據分析工作經驗
如果說會R,統計學數學還不錯,那麼應該是數據分析師,不做開發而是會用工具分析數據。這好像比較符合你的背景,但看起來你更喜歡前兩類工作,而你對前兩類做出的技能積累對應聘這類職位沒有太大幫助。
那麼題主你投的是哪類職位呢
同學,我覺得你算挺牛逼,你能擼出來CNN,我用python都擼不出CNN,而且你好像還是本科生。但是你可能對於工程上需要什麼樣的東西不太了解,所以不能表現自己的優勢。實話說你現在可能還不夠直接去找工作,但這不是因為你比別人差,只是你技能點沒有完全點對。花點時間把需要的技能點出來,你就沒問題了
你的大方向是沒錯的,多碼code,我認為編程能力至關重要,雖然我是統計系畢業的。不過這玩意沒那麼簡單,你可能沒找到關鍵,這玩意我三言兩語也解釋不清,你感興趣的話私信我佔個坑....待我成功找到實習再答—————————————————我是清華藥學系大三的...從大二開始轉機器學習數據挖掘.......不過我很多條路都在準備的....因為高中搞競賽的大學有計輔,所以演算法和開發都可以去做;科研經歷也有,所以找不著工作也可以出國讀研(說實話國外大學的master還是比較好申的,當然好多要自費...);另外大數據和分散式的技能點也在點....雖然現在還比較渣....
因為不是科班沒有系統的知識體系結構,因為知道某些領域演算法和會某些語言都是應用層面的東西,應用層的東西永遠是學不完的也不確定什麼會用到的,你需要知道在背後支持的一套知識體系。對於科班出身的同學,有時也許學過的東西沒學透也不知道怎麼用,但到了工作一旦用到可能馬上就能返回去搞懂,如果是非科班,有可能會出現理論空白地帶都不知道去哪裡找答案。
ps:我是從cs角度說的,c調試用太久時間,而且感覺你也用不起來,系統級知識和程序設計理論沒有,數據結構和基礎演算法估計也不太懂,所以應聘演算法工程師比較難。會java和R可以做業務建模類的職位,至於從統計角度看是不是有類似問題就不清楚了。鑒於很多人說我統計學是不是沒有,知識是不是不系統,完全沒有實踐過的,我這裡說明下,我很久沒看書了,一直都在碼字,java+weka jar包寫複雜的聚類,R語言做神經網路建模,利用過回歸分析做過匯率模做了我兩個禮拜修修改改,其中利用到聚類做數據離散化,我的統計學知識是基礎統計學+概率論+隨機過程+回歸分析,因為這些就是我的專業課程。
去參加一些競賽吧,kaggle什麼的,或者阿里大數據競賽,對著書本擼出來的代碼有個毛用,要扔掉書本,對著需求來擼擼看吧。最後一段別人給你機會,然後忘記了。。。這個是真心醉了。。。理解的東西稍微複習下都不行?或者是太浮於表面,沒有從根本上理解?我也是從其他方向轉來搞數據挖掘的,但是是從實際項目轉來的,後來也努力補了很久基礎,從來不敢說超過科班的。你要知道很多科班的水比畢業後根本就不打算搞這個,跟他們比沒有任何意義。
簡歷怎麼寫的?簡歷有寫上你知乎上說的這些東西嗎?
可以私信我發個簡歷過來試試,我們公司的建模組找人,主要工作涉及數據清洗和模型建立,但數據挖掘方面可能不太涉及。
我只是會把簡歷給hr~不能做更多。我個人認為數據挖掘知識可以應用於方方面面,無論是醫療還是科研其他領域都是大有可為,題注不該局限於BAT這些網路巨頭,結合自己的專業可以走自己的路
推薦閱讀:
※量子計算機和量子演算法的出現會給機器學習領域帶來什麼樣的變革,為什麼會帶來這樣的變革?原理是什麼?
※在機器學習時代,程序如何利用機器學習的原理反機器學習呢?
※資訊理論、信號處理等領域的研究近年來有哪些進展或突破?
※最大熵模型中特徵函數f(x,y)的期望如何計算?
※Markov Chain和Gibbs分布到底是什麼關係?