對於資料崗位的員工,網際網路公司頗有些不同的稱謂,像統計工程師、大資料工程師、資料分析師、演算法工程師、資料科學家等,每一種之間的技能差距簡直是風馬牛不相及。
但我覺得,資料崗位的需求千變萬化,真正能通過資料解決問題的人,不僅要通曉兩到三種崗位的技能,而且要深刻理解資料方法論,能將資料玩弄於鼓掌之中,這種人我稱之為資料極客
。好比武俠小說中的絕頂高手,殺人已不需要用劍,劍意就能殺人於無形。
資料極客都需要具備哪些能力?懂資料的人會怎麼去思考和解決問題?我想舉我自身遇到的4個小例子來說明。
懂得創造資料
在大部分人的常識裡,資料是客觀存在的,既不會遞增,也不會消減。所有當他們繪製報表、展開分析、構建模型時,很容易遭遇的瓶頸是沒有資料
,俗話說,巧婦難為無米之炊。真實的狀況卻是:資料是無窮無盡的,哪怕有時我們與資料之間的距離很遠,就像遠在天邊的繁星,「手可摘星辰」只是一個傳說,但經過大氣層的折射我們卻能時刻感受到它們的光輝。不僅光會折射,資料同樣也會折射。舉一個小例子:
實習生Q跑來問我:「Boss趕著要大廳發言的資料去對付投資人,但是後臺礙於發言的資料量級太大,一直都沒有儲存,無論資料庫還是日誌系統都沒有記錄。」
我想了一下,問:「客戶端進入大廳頁面的事件一直都有監控,可以用那個資料替代嗎?」
「但是這個資料並不精確,因為進入大廳的並不完全轉化為發言。」
「是的,雖然不十分精確,但可以暫時用這個資料近似。然後,好友新增的資料一定程度也能反映大廳發言的熱度,因為之前的統計顯示,70%的好友關係產生來自於大廳。哦,對了,你有沒有關注大廳介面的傳送按鈕的事件統計?這會是一個更為精確的替代資料。」
這就是一個資料有無到有被創造出來的例子。雖然原始資料沒有儲存,但是資料極客的任務就是通過其他可能被獲取的資料逼近原始資料,從而還原一個較為真實的狀況。如果沒有資料能夠成為一個罷工的藉口,那麼我相信恐怕90%的資料極客都得失業了。但反過來,如果不是對業務對資料的採集都瞭如指掌,同樣沒辦法快速實現這種變資料的戲法。
資料是立體的
20世紀初,畢加索興起了立體主義的繪畫潮流,追求以許多組合的碎片形態去描寫物件物,並將其置於同一個畫面之中,物體的各個角度交錯疊放創造出了一個多維的迷人空間。這和理想的資料展示多麼相似:客觀存在的問題經過多維度的資料解讀,被展現在一個二維的平面上,讓讀者即便只站在一個角度,也能看到這個問題在所有角度上的表現。再舉一個小例子(是的,這個例子完全與資料崗位無關,是一個來自客戶端工程師的困擾):
W是U公司負責海外業務的安卓工程師,最近盯的是視訊播放的專案,有次閒聊的時候說起,最近做了好幾個底層庫的效能優化,但從指標上看卻沒有明顯提升,每次向老大彙報的時候總是心虛。
「效能優化的指標是怎麼統計的?」
「海外業務的網路狀況普遍不好,所以我們最關注的是視訊頁面的載入時間,統計的是從頁面開啟到視訊完全載入的時間差,取所有使用者的均值。」
「這個指標似乎不那麼全面,如果一個使用者等待的時間過長,他有可能提前關閉頁面,是否有統計過關閉頁面的資料?還有,看過這個時間差的分佈狀況麼?如果效能優化有針對一些特殊的客戶端(比如型號、CPU、記憶體),有沒有看過特殊客戶端下的指標有沒有提升?」
我默想W的下次彙報一定會大肆耀武揚威一番,嘿嘿。
這就是資料的魔力所在。通過層層剖析,始終能找到與問題相關的有區分度的資料,再通過資料的變化去定位到問題的發生原因或者發展趨勢,給出不容置疑的結論。所以,在解決任何問題之前(也不限於資料崗位),你都必須先構建起一套立體化的資料監控體系,來強有力的印證你的方案是有效的。
厭惡抽樣
無論是做推薦系統、精準營銷還是反欺詐,都會遇到一個現實的問題:如何檢測一個模型的實際效果?在觀察指標之餘,抽取一小部分的標記使用者,觀察他們的行為模式,人為去驗證這個模型的準確率,是一個必要的環節。但是抽樣如果用得氾濫了,就不是補藥而是毒藥了。再舉個小例子:
G是團隊的新人,有陣子我看他沒日沒夜的加班,忍不住過問了幾句,看是不是最近業務上碰到了什麼瓶頸。一問下來有點啼笑皆非:原來G正在負責一個反欺詐模型的建設,需要一些黑標籤,他從所有使用者中抽取了好幾個特徵使用者群,然後從每個使用者群中再抽樣一批使用者,通過日誌觀察是否有欺詐行為,這麼一來就耗掉了兩天的時間。
抽樣是一種從區域性看整體的方法,在抽樣之上,你還要有對整體的把控。比如像G的做法就不符合資料極客的行為指南,既然可以通過日誌觀察到使用者的行為特徵,你就應該先把這種行為特徵轉化為可用的統計指標(比如識別欺詐,完全可以用收益相關的指標),再計算這幾個使用者群的均值特徵,這樣對比下來一目瞭然,而且省時省力。
善用工具
感謝谷歌創造了這個時代最廉價的資料核武器
– Hadoop(當然,如果Spark的bug再少一些,我會考慮把AMPLab放到谷歌的前面),資料的規模對大部分企業而言已經是一個無需顧慮的問題。但是資料極客不會滿足於會用工具的層次,理解工具的原理,靈活的使用工具,使工具變得更加順手,才能真正達到「善」用工具的境界。再舉一個小例子:
Z博士剛畢業不久,一腔熱血要把高大上的機器學習演算法用到我們的推薦系統上,但是第一次的運算結果居然要8個小時才能跑完,遠遠達不到產品團隊的更新要求。於是老大鼓動我去協助Z提升整個環節的效率,我們一起在白板上梳理了整個計算的流程,我發現有好幾處都是浪費資源降低效率的做法:原始資料由單機做一次處理再上傳到Hadoop、多個MapReduce其實可以合併為一個、甚至Hadoop的引數也可以根據機器的效能稍做調整:加大節點數、加大Map和Reduce環節的可用記憶體、新增壓縮以減少節點間傳輸的時間。稍作改造,運算時間便只剩下了原來的四分之一。
說到這裡,你也許會覺得資料極客也沒什麼巧妙,他們的方法論,和一切工作的方法論沒什麼不同,都會要多用腦子、多用工具、多種角度看待問題。既然如此,我可要恭喜你,你已經完全懂得了資料的妙用,而我一直以為,懂點資料,會對人的工作和生活大有助益。