“如何成為一名卓越的數據科學家?”是我們討論的主題。
所謂卓越,不是那些紙上談兵、喜歡“3V”、“4D”、“大時代”的理論家,也不僅是一名手腳利索的碼農去實現別人腦袋中的邏輯。
所謂卓越,是只專注最有挑戰的問題,并且能將問題解決掉的能力。
卓越的數據科學家,不僅需要建立收集數據原材料的合理機制,還需要用數據材料提煉價值,并且將數據創造價值的過程標準化、自動化。出色的數據科學家是多面手,不僅需要理解業務問題,還需要將業務問題轉化為數據科學問題,并且讓計算機可以持續從數據中學習, 最終建立一套完整的智能系統。一言以蔽之,數據科學家的核心職責是設計“業務、數據、算法”三位一體的閉環體系。
在數據科學家的工作流程中,“設計”是關鍵詞。數據科學家工作中最核心的部分是設計,而不是操作。許多文章給工程師列出數據科學家的修煉清單,告訴我們數據科學家需要擅長Hadoop, Spark, C++,也需要懂統計學,計算機科學……這個清單沒人能真正完成,真正完成的人不是數據科學家,是神。
現實中,完整實施一個數據科學項目需要一個團隊,其中不僅包括數據科學家,還包括業務專家、數據庫專家、算法專家和系統專家。在這個團隊中,數據科學家的核心角色是設計出一個將業務、數據、算法串聯起來的閉環體系,其他團隊成員則基于數據科學家設計的藍圖將數據解決方案轉化為解決業務問題的智能系統。
這個數據科學閉環體系包括七個步驟,我稱之為“數據科學七劍”。
第一劍,問題定義
根據我的經驗,80%以上的數據科學項目失敗在問題定義這個環節。我經常看到,客戶的問題是,“我有這么多數據,到底能怎么用?”、“這個業務問題數據模型能發揮作用嗎,還是靠人去解決更有效?”真正需要回答這些問題的數據科學家,需要具備抽象的能力,將那些看似零散的業務問題抽象為通用的數據科學問題。回答這些問題的數據科學家,還需要具備出色的溝通能力,能將復雜晦澀的機器邏輯轉化為簡單、清晰的通俗邏輯。
以銀行風控業務為例,不同的業務場景往往對風控模型的需求是截然不同的。對于大客戶信貸審批,數據模型沒有實際作用,因為大客戶審批的工作量完全可以由業務人員來承擔,并且大額審批一定是靠人決策。即使一個富翁請了10個保姆去打理花園和廚房,也仍會讓自己老婆去管理房產證。但是,在小微商戶的信貸業務的貸后管理中,數據模型便可以發揮舉足輕重的作用,銀行沒有大量人力去在貸后的每一個月都去派業務人員進行大量企業的貸后風險管理。
而在公安大數據應用中,數據模型的可解釋性遠大于預測的準確性。你不能因為安全模型給本拉登打分為99分就將他槍斃,總需要一些客觀的根據(數據)。公安數據模型最大價值就是從大量原始數據中縮小范圍,提供可解釋的關鍵數據。這些關鍵數據,正是公安中的證據。
第二劍,數據準備
巧婦難為無米之炊。數據科學家需要非常關注數據源,而不是別人加工后的數據。只有通過原始數據的復雜加工處理,數據科學家才能獲得真正有價值的信息。
在電商網站中,成交量最多的關鍵字商品往往沒有什么特別價值,但是,一個關鍵字商品如果在最近幾天擁有大量瀏覽卻很少被購買,才正是說明了這里有市場需求未被滿足這一關鍵信息。一個貸款客戶最近半年交易流水數據的匯總信息往往意義不大,而是變化趨勢和支出/收入比例有更大信息價值。一部電影是否符合你的胃口,不僅取決于你長期的興趣,更取決于你最近的經歷變化。
有經驗的數據科學家可以憑借業務經驗、直覺和邏輯推理提煉出大量具有預測意義的“數據特征”,同時可以將數據特征的抽取方式總結成一套算法體系,讓計算機系統去自動提取特征。數據科學家負責設計特征抽取機制,借助經驗與算法的協作,來不斷豐富原始數據到關鍵數據的提煉機制。
第三劍,算法調優
機器學習學術領域每天都有大量的算法被發明出來,然而大部分發明在實踐中是沒用的。學者坐在自己的辦公室里,守著那些有限的公開數據不斷調試算法,直到那些小小的可愛的公開數據向煉丹手屈服。有句話說的好,“Notoriously torture the data until it confessed”,不斷給數據上刑直到它屈服。許多算法無法應用,主要因為沒在真實數據中練兵。真實的數據往往極其復雜,需要簡單強壯的算法去征服它們。
所謂好算法,就是不浪費數據。能最大化數據價值的算法,是基于不同數據結構而發揮數據價值的。換句話說,不同的數據結構和不同的算法確實存在匹配關系,沒有最好的算法,只有最適合的算法。例如,決策樹算法效率非常高,也易于解釋,但卻不適合在高維度數據中做建模。而即使預測能力非常強的GBDT算法,在文本挖掘中也難顯示其威力。
最近興起的深度學習算法,也并不是萬能鑰匙。深度學習技術可以讓特征工程自動化,于是數據科學家再不用花大量時間去抽取特征。然而,深度學習算法一般都有許許多多參數。于是乎,深度學習算法表示,呵呵,我們不過是把你們用來抽特征的時間,拿來調參數了。(這只是個玩笑,你懂得。)
第四劍,知識發現
知識發現是所有數據科學步驟中最關鍵也最容易被忽略的一個環節。所謂知識發現,是以最簡單的方式呈獻給數據專家以外的普通人,數據中有什么規律或細節可以影響我的決策。
《大數據時代》作者告訴我們,大數據的最大價值就是預測。然而,未來真的可以預測嗎?
許多人以為香港有名的風水大師可以未卜先知。如果你問他們預測風水的秘訣是什么?如果他們肯對你敞開心扉,他們會說,且只說一條——“我有許多房產中介的朋友”。
美國知名手機價格預測公司Decide.com最終被eBay高價收購。如果你問他們,價格預測的秘訣是什么?它們會告訴你,預測錯了,我們為消費者提供包銷服務。Decide.com的數據科學家也許會告訴你,有時候他們要故意把算法調笨一些,因為預測錯了,消費者買得會更多。這讓許多團購網站的營銷負責人都去向Decide.com投了簡歷。
在我看來,大數據的價值不是預測,是發現——發現那些宏觀的規律讓人獲取新的洞見,發現那些微觀的細節便于快速決策。在人最關注的問題上,人很難放手交給機器去做決策,人更希望機器是重大決策的輔助者。
第五劍,效果分析
許多時候,評估一個模型的效果比開發一個模型更難。難道模型的好壞不就是直接看結果嗎?不一定。從數據模型的結果到實際決策中,有許多步驟。每個步驟都可能影響最終決策的效果。
兩個不同的量化交易策略算法,哪個效果更好,決定因素可能是誰的網絡信號更強,而不是算法本身,因為實際效果更好的算法有可能因為網絡信號問題而不能高頻應用。
《大數據時代》告訴我們,大數據重要的是關聯關系,不是因果關系。根據這個邏輯,一個數據科學家通過關聯分析發現,歷史數據顯示一個飛機上同時有兩個人攜帶炸彈的概率為0。為了避免遇到恐怖襲擊,他帶著炸彈上了飛機,安心的一覺睡到了目的地。
在許多數據科學項目的實踐中,通過詳細的模型效果分析得到的因果關系至關重要。為了保證商業目標的實現,業務人員和數據科學家往往需要對模型進行靈活的應用。
我經常看到,許多模型在沒有離線測試之前便上線進行AB測試,拿用戶當小白鼠,這將直接對業務造成負面影響。并且,許多數據科學家宣稱自己開發的模型為業務帶來了商業價值,但因為沒有模型對比分析,他并不了解實際上可能有許多更好的模型能為業務帶來更大價值,因而對比分析是模型上線前的必須環節。
完整的模型效果分析,往往是模型優化最重要的環節。數據科學家在效果分析中往往需要回答幾個問題:
(1) 最適合評估解決特定業務問題的模型效果衡量指標是什么?
(2) 模型上線測試前,模型的離線測試效果是否理想?
(3) 模型的計算效率如何,是否可以在海量數據中跑通?
(4) 模型的業務邏輯是什么?
(5) 模型在不同數據樣本之間的效果是否有顯著差異,這意味著什么?
只有基于效果分析的結果,數據科學家才可以更加客觀地去選擇最適合解決當前問題的模型,并且評估模型效果是否可以滿足業務需求,以及模型在什么情況下最能發揮作用等直指業務核心的問題。
第六劍,線上部署
數據科學家需要將算法與系統有機結合。對于數據科學家,最大的悲劇不是模型不好用,而是好用的模型無法部署上線。許多完美的模型,直到開發完成后才發現,因模型運算效率太低而根本無法上線適應大規模使用。這真是數據科學家最大的悲劇。
一個實用的機器學習算法往往沒有太多參數。面臨海量數據,許多有太多參數的算法,真是費機器。對于想推廣云服務的商家來說,最好的營銷方案,可能不是打廣告,而是去發表一個擁有無數參數的算法。你還可以這樣理解,任何算法,參數足夠多的時候,都是“深度學習”。
把模型部署上線前,數據科學家需要嚴格定義模型的輸入和輸出,并且讓模型的上下游系統與模型無縫對接。機器學習的結果,往往需要和多個系統對接,彼此之間的完美配合是讓算法發揮效力的重要前提。
數據科學產品的直接用戶是誰?是機器。數據科學家產出的模型,可以作為一個又一個計算機系統的能量塊,讓這些系統產生智慧,并在與人的交互中迭代更新。
第七劍,模型更新
當數據改變了,數據科學家是否需要無休止的重新披甲上陣?對于數據科學家,最尷尬的事莫過于:模型開發好了,模型需要應用的業務場景卻改變了。傳統的評分卡模型是數據科學家基于經驗開發完成的,并且每一次模型更新都需要數據專家團隊重新開發和部署。
最出色的數據科學家可以從數據中提煉價值,但他們會讓數據價值的挖掘過程并不一直依賴于他們自己的持續耕耘。數據科學家是機器的導師,真正優秀的導師一定是“授機器以漁,而非授機器以魚”。數據科學家只應該負責設計機器學習算法并將其部署上線,讓機器應該具備直接從數據中自動學習,并且根據數據的變化動態調整模型的能力。
數據科學家需要設計“監控算法”,以持續監控模型效果的變化、模型邏輯的變化以及數據本身的變化,從而讓模型實現自動更新。并且,數據科學家設計的模型在不同應用場景分別學習后,機器便得到了普世智慧,這一技巧可以讓算法在新問題中也可以很好的發揮作用。
“問題定義——數據準備——算法調優——效果分析——模型部署——模型更新”是數據科學家工作的七個基本步驟。這數據科學七劍的有機配合,才能使數據價值最大化。并且,數據科學閉環體系意味著當模型需要更新時,問題往往也需要被重新定義,而這個重復的過程往往能帶來解決當前問題以外更大的知識發現。
以上,是數據科學家“七劍”的開篇。以后圍繞“七劍”,斬到哪,寫到哪。