數據人的必備技能

圖片封面

根據數據應用的不一樣階段,我將從數據底層到最後應用,來談談那些數據人的必備技能。html

圖片1

一、大數據平臺前端

目前很火,數據源頭,各類炫酷新技術,搭建Hadoop、Hive、Spark、Kylin、Druid、Beam~,前提是你要懂Java,不少平臺都是用Java開發的。python

不少企業都把數據採集下來了,對於傳統的業務數據,用傳統的數據是徹底夠用的,但是對於用戶行爲和點擊行爲這些數據或者不少非結構化的數據,文本、圖像和文本類的,因爲數據量太大,不少公司都不知道怎麼進行存儲。面試

這裏面要解決的是實時、近實時和離線的大數據框架如何搭建,各數據流之間如何耦合和解耦,如何進行容災、平臺穩定、可用是須要重點考慮的。算法

最近兩三年中,這塊人才仍是很稀缺的,由於大數據概念炒做的這麼厲害,不少企業都被忽悠說,咱們也來開始進入大數據行業吧。進入的前提之一就是須要把數據存儲下來,特別是不少用戶行爲方面的數據,對於業務的提高比較明顯的,若是你能很好的刻畫用戶,那麼對你的產品設計、市場營銷、開發市場都是有幫助的。現階段,不少公司都要作第一步:存儲更多的數據。這也是這塊人員流動性比較高的緣由,都被高薪挖走了。數據庫

和傳統的SQL不一樣的是,針對大數據量的非結構式數據,咱們所想的就是:用最廉價的成本存儲數據同時可以達到容災、擴展性高、高性能、跨域,從目前來看,分佈式已經被證實是個很好的一個方式。編程

圖片2

另外,雲端會是個很好的方向,不是每一個公司都養得起這麼多這麼貴的大數據平臺開發人員和運維人員OPS,從事這個行業的咱們要有很好的危機意識,及時貢獻出本身的價值,積極主動的學習新技術、不然就可能被淘汰了。跨域

此外,花點錢把數據託管給雲服務提供商是對於創業公司或者一些傳統的企業來講是個很好的思路,這樣可以最快速的肯定數據對你的價值是什麼,而不用採購這麼多的服務器、僱傭這麼多的運維人員和網站開發人員。服務器

說了以上這些,主要是想給將來會從事這塊的人或者想存儲數據的公司一點方向。我本身不作這塊,體會不深,你們看看就行。架構

這塊工做最被吐槽的一點就是:Hive速度好慢,SQL查詢好慢,集羣怎麼又掛掉了,hadoop版本升級後,怎麼數據跑出來不對了等等。

所以,在這個領域內工做,須要有強大的攻堅能力,而且還須要有快速定位和解決bug的能力,由於有不少工具都是開源的。由於是開源的,因此大家懂得,各類坑爹,甚至出現沒法向下兼容的狀況,因此須要強大的Java開發能力。

若是想在這塊作的很好,還須要有整個系統架構的設計能力、比較的強的抗壓能力和解決問題的能力、資源收集的能力,能夠打入開源社區,這樣就能夠隨時follow最新的潮流和技術。

圖片3

二、數據倉庫-ETL

確實作倉庫的人很辛苦,單單Oncall就會讓人望而卻步。有不少數據庫工程師,晚上睡覺的時候常常被Oncall電話吵醒,由於數據流程出問題,須要第一時間去排查,是哪一個數據源出問題,而且要當即解決,不然整個數據流程都會受到影響。

若是數據流程受到了影響,你就可能會被大領導一言不合叫到辦公室說:我要的數據怎麼尚未準備好,個人業務報表今天怎麼沒有發出來。

經過上面這個情景,咱們能夠知道:這是個很重要的崗位,由於數據流程很重要,決定了數據從源頭雜亂無章的情況,經過ETL以後變成了整齊的數據,這些整齊一致性的數據可讓你很方便地把各業務的統計結果計算出來,而且可以統一口徑。要否則就會變成有幾個部門,就有幾種統計結果,到時候A部門說業務增加了5%,B部門說業務漲了10%,OMG,到底信誰。

至少在如下幾點上,我以爲數據倉庫人員應該要作好:

  • 數據字典的完整性,用的人都但願可以清晰的知道這個字段的邏輯是什麼。字段要保持很好的一致性,不要一樣一個字段在不一樣表裏有不一樣的定義。
  • 核心流程的穩定性,不要讓天天訂單主表可以使用的時間很不穩定,有的時候很早,有的時候要中午纔出來,若是不穩定就會致使使用數據的人對你很沒有信心。
  • 倉庫版本迭代不要過於頻繁,要保持不一樣版本之間的兼容性。不要作好了倉庫1.0,很快就把原來的推倒重來,變成了2.0。在數據倉庫中須要考慮到延續性,主表的變更不要太頻繁,不然使用的人會很是痛苦,好不容易纔用習慣了1.0的表結構,沒辦法這麼快進行切換。簡單地說,要能向下兼容。
  • 保持各業務邏輯的統一性,不要出現一樣的業務邏輯,同一個組別的人統計出來的結果不一樣。緣由在於共同的邏輯沒有落地成通用的東西,因此致使每一個人寫法不一樣。這點其實須要特別注意。

針對以上,這個崗位的技能要求是:不要成爲僅僅會寫SQL的人,如今工具都很發達,若是你的技能很單一的話,那麼可替代指數是很是高的,而且你自身也沒有什麼成就感。這裏並非說會寫SQL的人很low,只是說應該多學一些技能,不然會很危險。

倉庫人員應該要經常思考,如何進行架構設計是最合理的,你要考慮是否須要字段冗餘、行存儲仍是列存儲、字段如何擴展最有效,熱數據和冷數據如何拆分等,因此須要有架構思惟。

技能上,除了SQL熟練以外,還須要知道如何寫Transform,MapReduce,由於有不少業務邏輯用SQL實現起來很是複雜,可是若是你會其餘腳本語言,那麼就能給你提供便利,讓你的效率提高不少。另外好的倉庫人員須要寫Java或者Scala,經過寫UDTF或者UDAF來提高你的效率是頗有必要的。

數據倉庫人員也應該經常考慮自動化和工具化方面的事情,須要很好的工具或者模塊的抽象能力,動手實現自動化的工具來提升整個組織效能。針對常常碰到的數據傾斜問題,須要很快定位問題並進行優化。

說完了數據存儲這塊,接下來是數據應用的幾個關鍵職位,在此以前,我想說數據應用的一個最關鍵的前提是:數據質量、數據質量、數據質量!!在每次闡述你的觀點、分析結論或者用算法的時候,都須要先檢查,源頭數據正確性,不然任何結論都是僞命題。

圖片4

三、數據可視化

這是個很炫的工做,最好是能懂點前端,好比js。數據可視化人員須要有很好的分析思惟,不能爲了炫技而忽視對業務的幫助程度。由於我對這個崗位客串的很少,因此沒有特別深刻的感悟,不過我以爲這個崗位須要有分析的能力,才能把可視化作好。

另一方面來講,作數據應用的人都應該懂點數據可視化,要知道觀點表達的素材順序是:圖片>表格>文字,一個可以用圖片來闡述的機會千萬別用文字來描述,由於這樣更易於讓別人理解。要知道,給大領導講解事情的時候,須要把大領導設想成是個「數據白癡」,這樣才能把一件事情說的比較生動。

數據可視化也能夠考慮自動化和工具化方面的事情,好比用tableau、FineBI之類的BI工具替代,二者都能支持大數據和數據分析。

圖片5

四、數據分析師

如今對數據分析的需求是很大的,由於你們都想着說:數據有了,可是能作些什麼呢?這就須要有數據分析師,對數據進行分析和挖掘,而後作數據應用。

對數據分析師吐槽最多的是:你分析出來的不就是正常的業務邏輯嗎,還須要你分析什麼?或者是你分析的結論不對,跟咱們的業務邏輯不符合。特別是:ABTest的結果和當初設定的預期不相符合的時候,分析師會經常被拉過去說:分析一下,爲何個人AB實驗結果不顯著,裏面確定有緣由的。

不少時候,寶寶的內心苦啊,你說這個轉化率降低了,從數據上能夠看出哪一個細分渠道降低了,至於爲何客戶不下單,咱們得問用戶,不少時候,數據上也體現不出來爲何,只能告訴你現狀是什麼。

若是你一直在寫分析報告,給結論中,持續周而復始,沒有直接在業務中體現成績的時候,數據分析師們該醒醒了,你該想一想這個是你要的崗位嗎?

對於數據分析師的定位:我的認爲,成爲優秀的數據分析師是很是難的,如今市面上也沒有多少優秀的分析師。數據分析師的技能要求,除了會數據分析、提煉結論、洞察數據背後的緣由以外,還須要瞭解業務,懂算法。

只有這樣,當面對一個業務問題時,數據分析師們才能夠針對問題抽絲剝繭,層層遞進去解決問題,再根據定位的問題進行策略的應對,好比是先作上策略進行測試仍是應用算法進行優化,用算法用在哪一個場景上,能不能用算法來解決問題。

圖片6

一個優秀的數據分析師,是個精通業務和算法的全能數據科學家,不是那個只會遵從業務的需求而進行拉數據、作報表、只作分析的閒雜人等。咱們都說分析要給出結論,優秀分析師的結論就是一個能解決問題的一攬子策略和應對措施,同時不少需求是分析師去主動發現並經過數據來挖掘出來的。

大部分不落地的分析都是僞分析,有一些探索性的可行性研究能夠不考慮落地,可是其餘的特定業務需求的分析都須要考慮落地,而後經過實踐來反推你的做用,如此反覆,才能慢慢的給你價值的確定,同時提高你的分析技能,也只有這樣才能證實你做爲分析師、數據落地者的價值。

圖片7

五、數據挖掘算法

這塊的話,通過這三年的摸爬滾打,感觸蠻多的。體會比較深的吐槽主要有如下幾點:

  • 一個規則搞定了,還用什麼算法。
  • 你的準確率怎麼這麼低?!
  • 你的準確率能夠到99%嗎?
  • 你的推薦有價值嗎?你不推薦客人也會下那個產品的訂單的。
  • 幫我作個大數據預測他想要什麼?

不少時候,不一樣的場景對準確率的要求是不一樣的,因此在必定合理的場景下和業務進行力排衆議是必要,不要懼怕讓業務吐槽,更多的時候管理好他們的預期。

有些場景下,推薦的價值在於『長期復購率』,因此不要每次都盯着ABTest的轉化率來講事,讓客人的費力度下降也是頗有前途和前景的。一個智能的產品會讓客人用起來愛不釋手,雖然在這一次的轉化中沒有明顯的差異,可是觀察長期復購率才能體現價值。特別是要區分:高頻和低頻產品。頻次比較低的產品就特別難體現出短時間價值。

對於這個崗位的技能要求來講,沒有要求你必定要從零開始實現全部的算法,如今有不少現成的算法包進行調用。最基本的要求是,你要知道每一個場景會用到哪一個算法,好比分類場景,經常使用的分類算法就有LR/RF/Xgboost/ET等等,此外,你還要知道每一個算法的有效優化參數是什麼、模型效果很差的時候怎麼優化。還須要有算法的實現能力,語言方面能夠用Scala/python/R/Java等。咱們常說:工具不重要,重要的是你玩工具,不是工具玩你。

另外針對有監督式學習算法,算法工程師最好有很好的業務sense,這樣在feature設計的時候才能更有針對性,設計的feature纔有可能有很好的先驗性。

圖片8

六、深度學習(NLP、CNN、語言識別)

這塊我沒具體商用過,只是動手實踐過。我的感受商業化是重點吧,特別是你們都在觀望說你的chatbot頗有用啊,但是siri作了這麼久,最後反響也通常。

如今客服機器人又很火,你們又在一通吐槽說,這個上下文理解的太差了,機器人的語義識別作的怎麼這麼差。誰作誰知道,對於中文的語義識別,難度比國外的難多了,由於中文的一種否認說法有太多種變體,你不知道咱們會說哪一種。

另外,經常有人吐槽說,你這個CNN這麼複雜,我線上須要知足100ms內返回,搞的這麼複雜,實時調用怎麼整,確定來不及了,最後只能考慮offline預測了。經常說這話的人,是不會本身寫底層代碼的,不少時候我以爲:不是你沒有解決問題的辦法,而是你沒有去思考怎麼解決問題,心智決定了你的產出。

總體來講,這塊對我的的綜合素質要求是很高的。若是你只是想簡單利用現成的Model,提取中間層的特徵,而後再套用其餘的機器學習模型進行預測的話,倒也能很好的解決一些現實中的公司應用,好比yelp的圖片分類。

不過,嚴格來講,這個不算是作深度學習的人,由於真正玩DL的人,是須要本身動手建模型,調參數,改symbol的,因此他們的編程能力是很強的,這點上,我一直都高山仰止。特別是一些創業公司,對於這個崗位的編程能力要求很高。若是你面試創業公司後沒有下文了那就表示:你很優秀,可是不必定適合咱們公司,由於咱們要找的編程能力很強的人。

我的認爲,在這塊上須要有比較強的算法改造和優化能力,儘可能的提升算法預測的速度,同時不斷的提升算法的外延性提升精度,目前整個行業也都是朝着好的方向在發展。若是有不少人看到這塊行業開出來的高工資,記得和招聘上的要求覈對一下,本身哪塊技能須要補充。這樣你才能成爲人中之鳳。

圖片9

總結

以上說了這麼多,嘮叨了這麼多,其實核心就是:如何用數據創造價值,若是你沒有用數據創造價值的能力,那麼就只能等着被數據淹沒,被數據拍死在職場上,早早到達職業的天花板。

體現數據價值的層面上,越往數據應用層靠攏,對數據產生價值的要求就越高,從事這塊領域的人要經常自省是否有好的商業Sense,畢竟在工業界,沒人關心你是否比傳統的baseline提升了一個百分點,他們關心的是你提升了一個百分點以後,對公司的價值是什麼。

而越往底層那塊,倒也沒有強制要求和業績綁定在一塊兒,更多的是從流程上進行約定,對於這塊的價值體現,主要從技術層面上的創新爲主,你若是解決了現存架構的問題,那麼你就能夠成爲一個大牛,因此多學學編程吧,別太約束本身,故步自封。

本文轉自:開源技術社區

閱讀原文

文件格式轉換

相關文章
相關標籤/搜索