關於數據挖掘就業方面的問題?

1.數據挖掘主要是做演算法還是做應用?分別都要求什麼?

2.北上廣以外的普通公司用的多嗎?待遇如何?

3.和前端後端程序員比有什麼區別?有什麼優缺點?

4.目前在學習機器學習,如果想找數據挖掘方面的工作應該學習哪些內容?

5.hadoop,hive之類的需要學習嗎?


謝邀,最近在招聘這方面的工程師,我想通過回答題主的這些問題,來幫助一些新人選擇方向和正確的入門。(另外我們在招聘有一定項目經驗的人才,有意者可以將簡歷發送至lu.ji@lbadvisor.net, 工作地點:北京朝陽區青年路地鐵站附近)

1.數據挖掘主要是做演算法還是做應用?分別都要求什麼?

這個問題太籠統,基本上演算法和應用是兩個人來做的,可能是數據挖掘職位。做演算法的比較少,也比較高級,其實所謂做演算法大多數時候都不是設計新的演算法(這個可以寫論文了),更多的是技術選型,特徵工程抽取,最多是實現一些已經有論文但是還沒有開源模塊的演算法等,還是要求紮實的演算法和數據結構功底,以及豐富的分散式計算的知識的,以及不錯的英文閱讀和寫作能力。但即使是這樣也是百里挑一的,很難找到。絕大讀書數據挖掘崗位都是做應用,數據清洗,用現成的庫建模,如果你自己不往演算法或者架構方面繼續提升,和其他的開發崗位的性質基本沒什麼不同,只要會編程都是很容易入門的。

2.北上廣以外的普通公司用的多嗎?待遇如何?

實際情況不太清楚,由於數據挖掘和大數據這個概念太火了,肯定到處都有人招聘響應的崗位,但是二線城市可能僅僅是停留在概念上,很多實際的工作並沒有接觸到足夠大的數據,都是生搬硬套框架(從我面試的人的工作經驗上看即使是在北上廣深這種情況也比較多見)。只是在北上廣深,可能接觸到大數據的機會多一些。而且做數據挖掘現在熱點的技術比如Python,Spark,Scala,R這些技術除了在一線城市之外基本上沒有足夠的市場(因為會的人太少了,二線城市的公司找不到掌握這些技術的人,不招也沒人學),所以我推測二線城市最多的還是用JAVA+Hadoop,或者用JAVA寫一些Spark程序。北上廣深和二線城市程序員比待遇是欺負人,就不討論了。

3.和前端後端程序員比有什麼區別?有什麼優缺點?

和傳統的前後端程序員相比,最主要的去別就是對編程水平的要求。從我招聘的情況來看,做數據挖掘的人編程水平要求可以降低一個檔次,甚至都不用掌握面向對象。但是要求技術全面,編程、SQL,Linux,正則表達式,Hadoop,Spark,爬蟲,機器學習模型等技術都要掌握一些。前後端可能是要求精深,數據挖掘更強調廣博,有架構能力更好。

4.目前在學習機器學習,如果想找數據挖掘方面的工作應該學習哪些內容?

打基礎是最重要的,學習一門數據挖掘常用的語言,比如Python,Scala,R;學習足夠的Linux經驗,能夠通過awk,grep等Linux命令快速的處理文本文件。掌握SQL,MySQL或者PostgreSQL都是比較常用的關係型資料庫,搞數據的別跟我說不會用資料庫。

補充的一些技能,比如NoSQL的使用,Elasticsearch的使用,分詞(jieba等模塊的使用),演算法的數據結構的知識。

5.hadoop,hive之類的需要學習嗎?

我覺得應當學習,首先Hadoop和Hive很簡單(如果你用AWS的話你可以開一台EMR,上面直接就有Hadoop和Hive,可以直接從使用學起)。我覺得如果不折騰安裝和部署,還有Linux和MySQL的經驗,只要半天到一天就能熟悉Hadoop和Hive的使用(當然你得有Linux和MySQL的基礎,如果沒有就先老老實實的學Linux和MySQL,這兩個都可以在自己的PC上安裝,自己折騰)。Spark對很多人來說才是需要學習的,如果你有JAVA經驗大可以從JAVA入門。如果沒有那麼還是建議從Scala入門,但是實際上如果沒有JAVA經驗,Scala入門也會有一定難度,但是可以慢慢補。所以總的來說Spark才足夠難,以至於需要學習。

最後的最後我有一些建議。第一要對自己有一個系統的認知,自己的編程水平夠么,SQL會用么,Linux會用么,能流暢的看英文文檔么?如果上面任何一個問題的答案是No,我都不建議直接轉行或者申請高級的數據挖掘職位(因為你很難找到一個正經的數據挖掘崗位,頂多是一些打擦邊球的崗位,無論是實際乾的工作還是未來的成長可能對你的幫助都不大)。無論你現在是學生還是已經再做一些前段後端、運維之類的工作你都有足夠的時間補齊這些基礎知識。補齊了這些知識之後,第一件事就是了解大數據生態,Hadoop生態圈,Spark生態圈,機器學習,深度學習(後兩者需要高等數學和線性代數基礎,如果你的大學專業學這些不要混)。選定其中一個方向做一些鑽研和學習,網上有很多現成的資料(基本上是英文的,所以我說了,不能看英文的趕緊去背單詞),科學上網用谷歌這個大家都懂。希望我的建議能對你有一些幫助。


1.數據挖掘主要是做演算法還是做應用?分別都要求什麼?

答:數據挖掘崗位應該更偏應用一些。目前市面上的崗位一般分為演算法模型、數據挖掘、數據分析三種。演算法模型崗位,對數學統計知識要求最高,需要研究現有模型並提出改進意見,且最好熟悉一種編程語言,比如Matlab或者r語言等,不然沒辦法做實驗。數據挖掘崗位,和演算法崗位相比,對數學統計知識要求要低一些,但最好也是數學統計專業,能看懂公式推導流程,理解演算法原理,理解參數含義,且有一定的編程能力,熟練使用java或python,能通過調用第三方機器學習庫寫出符合工業要求的代碼。數據分析崗位,會基本的統計即可,有一定的sql功底,即對數學和編程要求較低,but,對業務也求較高,需要了解行業,了解業務,能提出好的idea。三種崗位需要相互配合、相互補充,各有各的重點。

2.北上廣以外的普通公司用的多嗎?待遇如何?

答:別的省市不知道,反正山東不多,薪資的話,同等水平的人,北上深杭的薪資除以2左右,差不多是二三線城市的薪資。

3.和前端後端程序員比有什麼區別?有什麼優缺點?

答:都是技術崗位,沒什麼區別,術業有專攻而已!優點:薪資要可觀一些,且不會忙到晚上一兩點,不用時時刻刻盯著伺服器。缺點:如果公司對於挖掘水平要求較高,壓力會比較大,後端的工作,可能加班就能解決,但是數據的事,並不是靠時間能解決的,需要你各方面都比較強,想想碩士博士憋論文的場景吧!

4.目前在學習機器學習,如果想找數據挖掘方面的工作應該學習哪些內容?

答:打好基礎。數學統計基礎:矩陣,概率論,數值分析,最優化理論等,參考大學數學專業書目。演算法模型基礎:至少讀兩本以上數據挖掘相關書籍,參考統計學習方法、機器學習實戰等。編程語言基礎:直接學習python吧,另外建議讀一下設計模式,培養自己的編程邏輯和習慣。其他能力:英文閱讀能力,溝通表達能力等。

5.hadoop,hive之類的需要學習嗎?

答:需要,太需要了!但是要明白學習重點。並不要求你會Hadoop集群搭建、集群調度優化等,但是要求會熟練編寫mr,了解mr原理,熟練使用Hadoop命令等。hive的話,會熟練使用SQL語句,了解hive內置函數,了解hive原理(比如內部表外部表,分區、分桶等),最好還會寫udf,畢竟求人不如求己。

手機碼字累死了,喜歡的話記得點贊收藏哈!

=============================================================

作者主頁:笑虎(Python愛好者,關注爬蟲、數據分析、數據挖掘、數據可視化等)

作者專欄主頁:擼代碼,學知識 - 知乎專欄

作者GitHub主頁:擼代碼,學知識 - GitHub

歡迎大家拍磚、提意見。相互交流,共同進步!

==============================================================


業餘時間在學習機器學習,深深感受到數學基礎的重要性,準備重新惡補大學數學


謝謝邀請。但是本人在讀小碩一枚,正在學習ML和數據挖掘相關知識,尚不敢在大神面前賣弄。。


ML講究由面及點。

基礎知識要掌握,然後在某一方面深入。

其實互聯網公司職位最多,但傳統職業也在轉變(電信/電網等),杭州那邊的華為也不少了。


推薦閱讀:

如何判斷深度神經網路是否過擬合?
數據挖掘的系統教程是怎樣的,包含哪些教材?
學習神經網路、SVM等機器學習的知識,為了更好的投入到應用當中,用matlab還是c++好呢?
在數據量不足的情況下,用哪種數據挖掘模型效果會更好?
機器學習or電子,我該選哪個?

TAG:數據挖掘 | 數據挖掘演算法工程師 |