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