Data Scientist、Data Analyst、Data Engineer 的區別是什麼?
很多互聯網公司提供Data Scientist、Data Analyst、Data Engineer這三種職位。Data Scientist的工作已經有很多業內大神介紹過了,剩下兩種職位的工作內容和要求分別是什麼?
Data Scientist、Data Analyst、Data Engineer 的工作對象都是Data(這真是句廢話,哇咔)
Data Enginner 所做的一切都為了Data Management,具體內容包括數據模型、數據架構、數據標準、元數據、主數據、數據治理、數據管控等等,Data Enginner的目標是把數據整好,存儲成本低,查詢效率高,至於怎麼使用這些數據不是他們關心的範疇。
Data Analyst所做的一切都是為了回答問題。這些問題可能來自業務部門,也可能來自各級管理人員,有些問題就是想知道某些具體數字,也有些問題是開放式的探索問題,例如為什麼這個月銷量下降等等。Data Analyst在Data Enginner提供的數據基礎之上進行探索分析,如統計分析或機器學習等,目的是找到問題的正確答案。
Data Scientist是一個自Hi型的忽悠理念。什麼是Scientist?按維基百科的定義,Scientist廣義上指使用系統化的活動來發現新知識的人,狹義的定義指使用科學方法做研究的人。現在業界所謂的Data Scientist是數據應用領域的混合體,他無所不能,他要擁有相關領域的各種技能,哪有需要就往那裡搬,能獨立承擔從數據處理、分析探索到實踐應用直至最終產生業務價值全流程服務的全能超人,聽起來很高大上,不過和科學不太搭邊,叫科學家有點勉強了。
挖坑,數坑和填坑
樓上Huang Ryan的分類已經很清楚了,我再詳細舉些例子。我自己本身的專業是學marketing analytics,也就是data analysis中與市場部掛鉤的分析工作。data analysis的工作更偏重於提供能夠直接轉化為商業行為的insight,具體到marketing部門更多的就是提供對消費者的分析。技術方面相比scientist和engineer比較淺,更多一些business concept的東西。工作的話,最簡單的比如通過分析調查問卷結果和銷售數據對整個目標市場的消費者進行分類,然後對不同類別的消費者做總體的特徵描述和消費行為習慣描述,最終用於營銷渠道和所傳達信息的選擇。再比如公司新推出一條產品線,我們需要去調查研究消費者看重的是它與原有產品線不同的哪些方面,會不會有重疊的部分,會不會搶佔原有產品線的市場份額,對於整體利潤的影響,以及是否需要針對定價策略和產品設計進行調整。常用方法比如regression, clustering, CART之類的,常用軟體和語言有SQL和簡單編程語言R,以及神奇的聰明的視覺化的數據分析軟體Tableau~當然,簡單的數據EXCEL和SPSS也能做,我只是為了裝個逼:)
如果一個team裡面有這三種角色的話,我想分工應該如下:
data scientist發現問題,提出問題並轉化為可以被的假設,然後設計實驗或者設計需要收集的數據,並且對得到的數據進行分析,做統計推斷。
data analyst配合data scientist統計方面的工作,如實驗設計,數據分析等
data engineering配合data scientist編程實現方面的工作,如大數據的收集與整理,演算法的實施等
簡言之,data analyst和data engineering是擁有分析數據某部分專長的人;而data scientist是核心,最好是能夠做一條龍服務的人。如果不能,至少要能做到兩點:一是對研究的問題的定義轉化,統計建模;二是設計數據收集或者實驗的方案;三是對最後結果進行統計學的分析與推斷。所以,一個好的數據科學家一定是一個好的統計學家。
更多請參見我的回答:什麼是好的數據科學家?Data Scientist負責搞數據,看paper,實現演算法,train model,測試,寫報告,寫成library
Data Engineer負責多快好省的搞數據,把data scientist的model deploy到aws上,搞多線程,搞kafka,搞devops,etc
Data Analyst負責label數據
也許我可以從所需技能的角度來回答一下。
讀前注意:
- 時隔兩年重新編輯了一下,修改了一些自己當初理解不到位的地方,也加了一些自己這兩年成長為一個成熟的data scientist的心得。然而對於data engineer 這一塊,依然只是參考了同事的工作內容,歡迎指正。
- 這個回答是基於傳統零售行業,雖然偏向於大數據,但並非互聯網相關行業,而不同行業可能出現相當不同的職業職責範圍界定,務必注意。
=======乾貨分割線=========
Data Engineer:
職責:主要考慮怎麼多快好省地儲存,導入,導出數據,怎麼生成可以用來給Data analyst 或者Data scientist作分析的data set,怎麼向前端面向用戶的工具(front-end tools, e.g. microstrategy)提供數據,等等
主要工作:database architecture,data modeling,data quality check, data cleasing, data enrichment/transformation(aggregation, join...) 等等後端(back-end)的工作.
(e.g., 小店的每日銷售表有A果汁的當天銷售記錄,但是A果汁的當天庫存由另外的庫存表記錄,而A果汁的進貨價格也是由另外的進貨表記錄,於是現在需要把這三張表整合成一張包含當天A果汁銷售記錄,庫存和進價的表。)
技能:所以除了傳統的資料庫知識(SAP,Oracle,能編程(SQL, MySQL, JAVA, Python...)),大數據背景下,最好要知道hadoop相關的技術知識並且不斷更新(列一點比較熱門的:Spark, Hive, Cloudera...),然後專精一兩個。
一般大數據平台的日常維護(比如日常數據更新)都是外包的,data engineer更關鍵的是要有大局觀--資料庫的每個層級應該是怎樣的,和其他的資料庫交流應該用那種埠,數據存儲partition最好的是哪種方式等等。當然同時,如果外包公司搞出來什麼亂子,data engineer 也要能擼起袖子自己上手糾錯編程,不然非常容易被外包公司糊弄。
所以,通常data engineer中, IT背景的相對較多,而data scientist中,統計/數學背景的較多。一般由IT專業轉data scientist的人,會比較喜歡用python(因為編程風格比較嚴謹,而且現成模型多,用起來方便,而且比r確實要快,library的並行運算一般都做得不錯),而純統計出生的DS,一般會比較喜歡r(因為自由度高,可以嘗試各種神奇的設置,但是速度是真的慢)。
Data analyst:
職責:這個職位通常存在於商業部門而不是IT部門,所需要的技術深淺也跨度挺大。相同點是,通產個這個職位是有日常任務的,也就是要定期出一些報告來分析季度數據,支撐日常決策(e.g,小店下個月/下半年多上架A果汁還是B果汁)。但同時,也會做一些有趣的項目(e.g, 是不是更多的消費者開始喝礦泉水/碳酸鹽料/啤酒,而不是果汁,原因是什麼。)
主要工作技能 A:比較簡單的Data analyst的日常職責是reporting(生產dashboard,比如這個月我們賣了多少A果汁,多少B果汁,可能的原因是XXX(這個結論通常並不來自於統計分析,而是定性分析))。
這時,skill set中對於本行業的了解的重要性要遠高於對於統計分析方法的了解的重要性。Excel和ppt肯定要玩得好,當然啦,reporting和visualization工具還是知道多一些的比較好,比如老牌的microstrategy和比較新的Tableau。重點是:要能快速的產生漂亮且簡單易懂,直切重點的分析報告。
主要工作技能 B:比較複雜的Data analyst的日常職責是使用聚類或者回歸等等基本統計分析來解決例如:打折對銷量的影響,分類不同的消費者的問題。
這時,skill set中就需要你會一些基本的統計知識,你可以不用知道背後的原理(比如K-means cluster到底有多少種決定組間差異的方法,各有什麼優缺點;相關係數的計算公式到底是什麼等等),但是首先你得會解釋最終結果(比如,最基礎的,p-value的意義),其次,你要會用一些工具(基礎的比如SPSS,也有人用excel干回歸分析的。。,或者高級一點SAS(最好還能寫點code))。
另外還有一類data analyst,是作為data scientist或者data engineer的預備役存在的,公司的終極目標是將他們培養成data scientist/engineer,這一類職位則通常存在於IT部門,對口剛畢業的新人(博士不算,博士可以直接上senior的職位)。
Data scientist:
職責:這個職位更經常存在於IT部門,或者乾脆自己組成一個部門。職責是解決一切Data analyst解決不了的比較複雜的問題。且他們通常是不需要負責定期出報告來分析季度數據的。他們的終極目標是搞出一個高大上的模型,然後可以自動的預測未來趨勢(明年A貨要預定多少件)或者自動為商務部門提供決策(應該增加微信的廣告投入還是微博)。
e.g., 根據過去兩年A果汁和B果汁的銷售記錄和主要外部影響因素(打折,放假,夏天。。。),預測未來每天A果汁和B果汁的銷量,並據此調整貨價;根據客人XXX所買的各種商品和各種行為,決定要不要在下一期的商品目錄向他推薦果汁A。
主要工作:從business部門那裡收集有趣的/亟待解決的問題,詢問Data analyst「你們部門平時都用那些數據,哪些前端系統」,然後和Data Engineer商量我們需要從資料庫X,Y,Z裡面獲取M,L,N表,最後生成一個包含A,B,C變數的表來給我作分析。然後用各種升起的統計方法解決問題。同時也還是要生成好看/好用的最終報告。
技能:這裡有個經典圖:The Data Science Venn Diagram
實際而言,統計分析知識最好要接近於Statistical PHD的等級。
列一些常用的一定要知道的:random forest(這個真的是萬金油,哪裡都有它),glm的各種(其中logistic回歸堪稱萬金油2號),lasso和ridge,mixed modeling,時間序列(比如ARIMA),營銷偏向的也很喜歡用conjoint analysis和pca相關的方法,機器學習相關的gradient boosting用的很多(萬金油3號),經常被非技術人士提及的神經網路反而很少能發揮作用。
技術知識要能寫R或Python至少其一,SAS和Matlab用的人正在漸漸變少。不僅僅是寫普通的統計分析程序,至少要能為這其中一個寫點企業專用的package,最好還能和Data Engineer或者software engineer就資料庫和R之間的架構和代碼轉換問題幹上一架。
同時也要熟悉大數據平台一些其他的必備技能:比如和spark的互通(比如sparklyr包),和hive交流的hql,impala使用的普通sql,等等。
最後,必備的商業知識和溝通技能也是必不可少,因為這會影響到最終給商業部門提交準確度報告時,模型評估方式的選擇。e.g. A果汁的利潤大於B果汁,而A果汁的成本小於B果汁,那麼相對於B果汁,A果汁對於模型over forecasting的容忍度要高於under forecasting,傳統的MAE或MAPE在這裡可能就不適用了。要能夠根據具體商業部門的利益調整模型的側重。否則即使是很好的模型,商業部門也很可能不會買單。--這一點,在IT主導的互聯網企業,就會好很多。
PS:其實像google這種能把大數據分析玩的登峰造極的畢竟是少數。許多傳統行業的商業部門看見data scientist做出來的統計分析結果(任何純文字或者excel裡面不存在的圖表)就會想睡覺或者昏倒。。。所以實際上,也不用特別高大上的統計分析方法,而且有的時候現有數據根本無法支持那些分析方法。。。。
一般說來都科學家 scienst, 那一般就是作模型了
但是不同公司 稱號不一樣而已
在Sprint公司 Data Scientist 乾的活和data analyst 沒有區別,入門要求也只要學過統計,會有一些基本軟體就行, 不要求phd,MBA marketing 方向就可以干
而Zillow 的Data Scientist 一水的PHD
具體幹什麼還要看公司的具體要求,title 就是一個稱呼而已
看一下 Data Scientist 的收入分布就發現水分會很大
製造磚頭,數磚頭,搬磚頭
實際上混著用的,沒有什麼明確的分野。不過如果你是analyst,那麼你基本就和engineering不沾邊了
Data Scientists vs. Data Engineers
現在忙到爆真的沒時間細講...
這裡有本書 http://www.amazon.com/Developing-Analytic-Talent-Becoming-Scientist/dp/1118810082/ref=sr_1_2?ie=UTF8qid=1401403258sr=8-2keywords=Data+science+analytic+skill
開頭就有一節專門講這三個職業的區別,分別需要的不同的技能。
真的有興趣可以找來看。不管評價好不好,看到新知識總是重要的。
其實百年來一直有個職業叫statistician,這些都是他們乾的。
基本上大家回答得差不多了
不過具體還是要看JD並沒有那麼明確的分工
有些公司的Data analyst也要負責模型
科學了應該是個全面的過程 分析應該是部分數據的整合 工程么應該是數據再利用以及重新加工吧
推薦閱讀:
※申請美國計算機 PhD 應該如何定位?
※oracle為什麼要繼續開發mysql?
※為什麼UDP需要有長度欄位,而TCP不需要長度欄位呢?
※如何通俗地解釋一下 TCP/UDP 協議和 HTTP、FTP、SMTP 等協議之間的區別?
※為什麼很多人覺得計算機專業的會修電腦?