數據人之苦,你造嗎?(轉自知乎)


------(我覺得本文應該叫:數據分析師該如何讓自己不可替代)

前言:

謹以此文獻給所有數據從業苦逼之人,如有中傷之處,請自行戴好盔甲,以防中傷過深。同時也以此文獻給后期對數據熱情,想長期從事此行業的年輕人,希望對你們有所啟發,並快速的調整思路和方向,以對自己的職業生涯有更好的發展。

最近聽到一些段子,挺有意思的,先分享給大家,寫清了數據分析人員的很多真實寫照(此段子非我原創,來源於qq群@路西法):

一:新招進公司,做大數據分析師,好嗨森,入職第一天老板給了張50M的excel表說:“瞧,你看我們有100多萬條用戶信息呢,這么大的數據,來個大數據分析下!”
二:還沒從震驚中恢復過來,業務部又神補一刀:“我們准備跟星巴克合作,來預測下明年多少人喝咖啡,幾千萬的大項目,預測不准公司要虧很多錢的,你加油哈”
三:好想把“我要是未卜先知為啥不去炒股來給你打工”這句話甩在業務部臉上,就被IT一句:“哥們你可來了,那失散到天涯的數據有娘啦!”噎了回來。
四:終於把數據拼起來開始分析,發現好有規律啊,好工整啊,隱隱感到有坑,去業務部一問才知道,全是被經銷商篡改操縱的數據,人家都有簡便操作的順口溜了,一讀發現順口溜還朗朗上口
五:沒有四的困擾了,這下終於是全真實數據!全部沒有規律了!喜極而泣,擦干淚仔細一看發現80%的記錄缺失,10%記錄不全,5%記錄出錯……
六:整完數據開始統計,然而領導覺得只做加減乘除太簡單了,有沒有有深度的方法(解讀:需要糾正的是,有用為先,花哨次子,這種說法不太合理
七:簡單了就做個模型吧,然而檢驗值還沒講完領導表示太復雜搞不懂,能簡單點不(解讀:這個是解讀能力的問題,跟領導沒關系)
八:改來改去已很多遍了!我已不太記得領導嘮叨了什么,總之又聽到一句:“再改一下,看看其他維度深入分析分析”,然后默默新建一個文件:《分析報告V16-8版》
九:輸出結果和業務部的認知差不多,被評價為:“我們都知道了嗎,做跟沒做一樣嗎
十:輸出結果和業務部的認知差很多,被評價為:“這個與業務經驗完全不同,肯定是數據的問題,我們都十多年經驗了,快回去檢查數據,上次我去見XXX客戶人家就不是這樣的!一定是你錯了!

此段子一出,群里都炸開了鍋,各位數據從業人員開始不斷的煽風點火,各種數據背鍋,各種吐槽,說盡了數據分析師的各種的辛酸苦辣。上面提到的一些問題,我做分析師的時候也經常碰到過,我現在找到了一些規避這些問題的方法,在下文中,我會提出微薄的建議和意見,希望對大家有所幫助。

當然,我也希望借此能夠並號召所有的數據從業者都能夠在數據應用實踐上能夠深入思考並且有所突破,以此在正確的軌道上更好的發揮出數據的價值,從而讓數據從業者有更大的前途和錢途,不在拘泥於每天的抱怨和自怨自艾中。

數據之苦

進入正文,數據人之苦最苦的是:有好處想不到你,出了問題都是數據人的錯,這句話的意思就是你做好是應該的,做得不好你就得承擔責任。這種痛苦完全命中了馬雲蜀黍對離職的兩點看法:心累(得不到價值肯定)、錢少(沒業績肯定哪來的升職加薪)。區分不到數據流程的不同階段,數據人之苦又有所區分側重不同,說一下我的個人淺見。

根據數據應用的不同階段,我的划分方法如下,從數據底層到最后應用:

1、大數據平台

目前很火,數據源頭,各種炫酷的新技術,搭建hadoop,hive,spark,kylin,sparkstreaming,druid~,目前很多企業都把數據采集下來了,還有很多企業都不知道怎么進行存儲數據。

這里面要解決的是實時、近實時和離線的大數據框架如何搭建,各數據流之間如何耦合和解耦並且如何進行災難備份都是需要重點考慮的。

所以我的感覺是:未來的三四年中,這塊人才還是很稀缺的,因為大數據概念炒作的這么厲害,很多企業都被忽悠的說,我們也來開始挑戰大數據行業吧。所以挑戰的前提之一就是需要把數據存儲下來,現階段,很多公司都要做第一步:存儲數據。傳統的SQL,針對大數據量的非結構式數據,我們所想的就是:用最廉價的成本存儲數據,所以分布式是很有前途的。另外,雲端會是個很好的方向,不是每個公司都是養得起這么多這么貴的的大數據平台開發人員和運維人員OPS,DBA的,所以我們要有很好的危機意識,及時貢獻出自己的價值。所以花點錢讓雲服務提供商是個很好的思路。說了以上這些看法,主要是想對未來會從事這塊的人一點方向,追上潮流是很重要的,選擇某些未來潮流和

這塊工作最被吐槽的一點就是:Hive速度好慢,SQL查詢好慢,你的集群怎么老是掛掉,hadoop版本升級后,怎么數據跑出來不對了;

在這個領域內工作,需要有強大的攻堅的能力,並且還需要有快速定位和解決bug的能力,因為有很多工具都是開源的。因為是開源的,所以你們懂得,各種坑爹,甚至出現無法向下兼容的能力,所以你需要的是強大的加班能力和Java開發的能力。這塊機能就看你們自己對號入座了。

如果想在這塊做的很好,就需要有整個系統架構的設計能力並且比較的強的抗壓能力和解決問題的能力,以及資源收集的能力,可以打入開源社區,這樣就可以隨時follow最新的潮流和技術。

2、數據倉庫-ETL

常見被吐槽的就是:

a、數據字典呢?這個字段是什么意思?我們用數據的人最痛苦的莫過於此,看到了表名和字段,可是你也只能腦補說這個字段的業務含義是什么?

b、DW設計和維表設計的不合理,怎么找個數據這么難的?為什么生產上的表在倉庫里面沒有呢?

c、我明明只要取一個集團的訂單統計數據,還要我去join 3張表?這個倉庫做的是什么東西啊。我的報表要新增一個維度,怎么排期要半個月?

d、我要取個數據,怎么要排隊半個月?

這個是我有時候吐槽的點,確實倉庫的人做的很辛苦的,單單Oncall就會讓人望而卻步,有很多數據庫工程師晚上睡覺的時候經常被Oncall電話吵醒,因為數據流程出問題了,所以需要第一時間去排查,哪個數據源出問題了並且要立即解決問題,否則整個數據流程都會受到影響。如果數據流程受到了影響,你就可能會被大領導一言不合叫到辦公室說:我要的數據怎么還沒有准備好,我的業務報表今天怎么沒有發出來。

所以通過這個對話,我們可以知道:這個職業是個很重要的職業,因為數據流程很重要,決定了數據從源頭雜亂無章的情況,通過ETL之外變成了整齊的數據,這些整齊一致性的數據可以讓你很方便的把各業務的統計結果計算出出來,並且能夠統一口徑,要不然就變成了有幾個部門就有幾種統計結果,到時候A部門說業務增長了,B部門說業務下降了。

這么重要的部門為什么會受到這么大的挑戰呢,就是因為經常他們的工作內容雖然很重要,但是經常看不到什么產出。也跟我們開頭說的:這個是很重要的工作,你做好了是應該的,做不好就面臨了各種挑戰、挑刺。不過,既然拿了公司的錢就應該在這個崗位上都應該把事情做到極致。至少在以下幾點上,我覺得數據倉庫人員做好是無可厚非的:

a、數據字典的完整性,用的人都希望能夠清晰的知道這個字段的邏輯是是什么。字段的一致性很好的,不要同樣一個字段在不同表的定義還是不同的。何況,我們也沒有要求字段的命名要完全一致,我們就因為歷史遺留問題,人員的流動性,導致同樣一個表的相同字段,在不同的目的地表上,字段不一樣,一個是駝峰形,另一個是下划線形,所以SQL邏輯在HIVE上和SQL上需要做大量的改動,用起來非常痛苦。

b、核心流程的穩定性,不要說每天訂單主表能夠使用的時間很不穩定,有的時候很早,有的時候要中午才出來,如果不穩定就會導致使用數據的人對你很沒有信心。

c、倉庫版本迭代不要過於頻繁,要保持穩定性。不要你做好了倉庫1.0,很快就把原來的推倒重來,變成了2.0。所以在數據倉庫中需要考慮到延續性,主表的變動不要太頻繁,否則使用的人會非常痛苦,好不容易才用習慣了1.0的表結構,沒辦法這么快進行切換。簡單的說,要能向下向上兼容。

d、保持各業務邏輯的統一性,不要出現說同樣的業務邏輯,同一個組別的人統計出來的結果不同。原因在於共同的邏輯沒有落地成通用的東西,所以導致每個人寫法不同。這點其實需要特別注意。

針對以上想法,我對這個崗位的技能要求是:不要成為僅僅會寫SQL的人,我覺得現在工具都很發達,如果你的技能很單一的話,那么你的可替代指數是非常高的。

倉庫人員應該要常常思考,表結構之前如何進行架構設計師最合理的,所以需要有架構思維。另外技能上,我覺得除了SQL熟練之外,還需要知道如何寫Transform,MapReduce,因為有很多業務邏輯實現用SQL實現起來非常負責,但是如果你會寫程序,那么就能給你提供便利,讓你的效率提升很多。另外最好的倉庫人員需要寫Java或者Scala,通過寫UDTF或者UDAF來提升你的效率是很有必要的。

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

接下來是數據應用的幾個關鍵職位,待我一一道來,但是在進入被吐槽之前,我想說數據應用的一個最關鍵的前提是:數據質量、數據質量、數據質量!!在每次闡述你的觀點或者利用用算法的時候,都需要先檢查,數據源的數據正確性,否則任何結論都是偽命題。

接下來繼續說數據應用的崗位的吐槽點:

3、數據可視化

這是個很炫的工作,最好是能懂點前端,比如js。數據可視化人員需要有很好的分析思維,不能為了炫技而忽視對業務的幫助程度。因為我對這個崗位客串的不多,所以沒有特別深入的感悟,不過我覺得這個崗位需要有分析的能力,然后才能把可視化做好。

另外一方面來說,做數據應用的人都應該懂點數據可視化,要知道圖片>表格>文字,一個能夠用圖片來闡述的機會千萬別用文字來描述,因為這樣各易於讓別人理解。要知道,給大領導講解事情的時候,需要把大領導設想成是個數據白痴,這樣才能把一件事情說的比較生動。

所以對這個崗位的吐槽多在於:你搞這么炫的圖標干哈?有什么用。

4、數據分析師

現在對數據分析的需求是很大的,因為大家都想着說:數據有了,但是能做些什么呢?這就需要有數據分析師,對數據進行分析和挖掘,然后做數據應用。

對數據分析師吐槽最多的是:你做的什么狗屎,你分析出來的不就是正常的業務邏輯嗎!!!還需要你分析什么。還有一個就是段子里面說的:你分析的結論不對,跟我們的業務邏輯不符合。特別是:ABTest的結果和當初設定的預期不相符合的時候,分析師會常常被拉過去說:分析一下,為什么我的AB實驗結果不顯著,里面肯定有原因的。

很多時候,寶寶的心里苦啊,你說這個轉化率下降了,從數據上可以看出哪個細分渠道下降了,至於為什么下降了,我們得去用戶去,很多時候,數據上也體現不出來為什么,只能告訴你現狀是什么。

如果你一直在寫分析報告,給結論中,但是在持續周而復始,沒有直接在業務中體現成績的是,數據分析師們好好醒醒,距離你們被辭退已經不遠了。

對於數據分析師的定位:我個人認為要求是很高的,一般人是成為不了優秀的數據分析師的。數據分析師的技能要求除了會數據分析、提煉結論、洞察數據背后的原因之外,還需要了解業務,懂得算法,這樣如果面對一個業務問題,數據分析師們可以針對問題抽絲剝繭,然后層層遞進去解決問題,然后再根據定位的問題進行策略的應對,是先做上策略進行測試還是應用算法進行優化,用算法用在哪個場景上。

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

從上述描述中,可以看到對數據分析師的要求是:會寫sql拉數據,精通業務、會數據洞察、精通算法,主動性強。所以這種人要求是很高的。

如果你一直只是忙於應付日常分析需求,熱衷於寫華麗的報告,那么你要記得,你很危險,因為會有一堆人在那里質疑你存在的價值,特別是小公司,因為數據人員的薪資是個不小的支出。大部分不落地的分析都是偽分析,有一些探索性的可行性研究可以不考慮落地。但是其他的特定業務需求的分析都需要考慮落地,然后通過實踐來反推你的作用,如此反復,才能慢慢的給你價值的肯定同時提升你的分析技能,也只有這樣才能證明你作為分析師、數據落地者的價值。

5、數據挖掘/算法

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

1)、首先,業務或者產品的各種懷疑,因為他們覺得,用規則就很好了,還用算法和挖掘干什么,花這么長時間研究算法,結果做出來的效果還達不到他們的要求;

記得我們在好幾次的項目中,都用規則版本作為baseline,然后來對比說算法比規則提升了多少,以此來打臉業務。不過更多的時候,我們采用了規則+算法的上線做法,因此來提高模型的效果,建議大家也多嘗試試一下這種做法,來彌補算法在某些場景的缺陷。

2)、你的准確率怎么這么低?!這個是我們常常被挑戰的點。記得有一次我們做了一個模型,隨機准確率萬分之三,模型結果是precision 10%,recall 10%,從結果上看,效果也還算可以了。可以某大領導說,你們的准確率怎么這么低。我最后只差翻白眼了,不過還是很耐心的解釋說,因為隨機准確率太低導致的。我們還可以繼續優化,把PR再次進行提高。這個苦應該是很多人都體會到過的。

3)、你的准確率可以到99%。這個和2類似,只是每個人都會先來問我說,你的算法准確率能做到99%或者100%嗎。因為如果沒有這個准確率,我們沒法支持。

這個時候,寶寶心里的苦有人知道嗎。最后我們的應對措施是:你計算一個盈虧平衡的點出來給我們,我們根據隨機和簡單規則作為baseline,來看我們模型能到達到多少。按照經驗法則,如果准確率提升了一倍,那么recall大概會下降一半左右甚至更多,所以如果一個隨機准確率是15%的項目,業務要我們強制提升到准確率90%,這個時候我們一般性就說沒法達到目標。

而且很多時候,不同的場景對准確率的要求是不同的,所以在一定合理的場景下和業務進行據理力爭是必要,不要害怕讓業務吐槽,更多的時候管理好他們的預期。

4)、你的推薦有價值嗎?你不推薦客人也會下那個產品的訂單的。有些場景下,推薦的價值在於『長期復購率』,所以不要每次都盯着ABTest的轉化率,讓客人的費力度降低也是很有前途和前景的。就是你要說服別人的是:一個很智能的產品會讓客人用起來愛不釋手,雖然在這一次的轉化中沒有明顯的差別,但是觀察長期復購率才能體現價值。特別是要區分:高頻和低頻產品。像頻次這么低的旅游產品就特別難體現出短期價值。

對於這個崗位的技能要求來說,沒有要求你一定要從零開始實現所有的算法,現在有很多現成的算法包進行調用。最基本的要求是你要知道每個場景會用到哪個算法,比如分類場景,常用的分類算法就有LR/RF/Xgboost/ET等等,你要知道每個算法的有效優化參數是什么,模型效果不好的怎么優化基本就可以開始動手實踐了。此外、還需要有算法的實現能力。

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

6、深度學習(NLP,CNN,語音識別)

這塊我沒具體商用過,只是動手實踐過。個人感覺商業化是重點吧,特別是大家都在觀望說你的chatbot很有用啊,可是siri做了這么久,最后也反響一般。現在客服機器人又很火,可是大家又在一通吐槽說,這個上下文理解的太差了,機器人的語義識別做的怎么這么差。誰做誰知道,對於中文的語義識別,難度比國外的難多了,因為中文的一種否定說法有太多種變體,你不知道我們會說哪種。另外,常常有人恩吐槽說,你這個CNN這么復雜,我線上需要滿足100ms內返回,你搞的這么復雜,我實時調用怎么整,肯定來不及了,最后只能考慮offline預測了。

整體來說,這塊對個人的綜合素質是很高的。如果你只是想簡單利用現成的Model,然后提取中間層的特征,然后再套用其他的機器學習模型進行預測的話,倒也能很好的解決一些現實中的公司應用,比如yelp的圖片分類。不過,嚴格來說,這個不算是做深度學習的人,因為真正玩DL的人,是需要自己動手建模型,調參數,改symbol的,所以他們的變成能力是很強的,這點上,我一直都高山仰止。

因為我也不是特別專業,所以就點到為止,不說太多。我個人認為,在這塊上需要有比較的算法改造和優化能力,盡量的提高算法預測的速度,同時不斷的提高算法的外延性提高精度,目前整個行業也都是在朝着好的方向在發展吧。

對於未來,一片光明,對於未來,甚是期待,對於未來,一切可能。

做個總結吧:

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

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

而越往底層那塊,倒也沒有強制要求和業績綁定在一起,更多的是從流程上進行約定,對於這塊的價值體現,主要從技術層面上的創新為主,你如果解決了現存架構的問題,那么你就可以成為一個大牛,所以多學學編程吧,別太約束自己,故步自封。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM