林琳
最近看新聞,發現數據科學專業已經是北京大學門檻較高的專業了,其實“Data Science”這個詞“性感”快十年了,對互聯網行業而言,相當于“性感”了一個世紀。
從“數據說話”“DT時代”到“數據中臺”“數據驅動(Data Drive/Data Driven)”,數據體系的不斷演進正在持續地改變大家的工作與決策方式、革新大家的思維方式;同時也產生了新的商業邏輯和發展機會。
1976年,Pascal作者Nikalus Wirth提出了,Algorithms + Data Structures = Programs.
就像之前的SOA、云計算等概念一樣,目前數據科學自身的概念還在不斷的變革,各家公司的實踐者們一邊摸索、一邊獲利,一邊總結、一邊布道;還參雜著很多湊熱鬧的同志把概念折騰的更加模糊。所以數據科學本身的能力邊界、方法論體系和最佳實踐等還不夠完善,有很多問題沒有辦法很好地回答。由此就會產生一些疑惑和誤會,“強行數據”“隨意數據”“政治正確數據”等情況比較常見,無論是實際的操作層面,還是方法層面,都存在著一些不小的誤會。
1數據質量殺死自動/智能決策
網易嚴選的很多業務,比如風控業務,其核心驅動力是數據及算法。在風控業務起步的時候就建立了數據算法驅動風控的方法體系,所以能保證很小的團隊(3個人)來支撐嚴選幾十個內外部風險場景,每天執行百萬次風險決策。當然,這是數據驅動自動決策/智能決策帶來的力量。成功的美好或許會讓你按耐不住地想把很多業務運轉方式轉型過來,但遺憾的是,數據質量保障的缺失會讓這一切變成隨時會倒塌的空中樓閣。事實上,絕大部分組織對數據質量的理解支撐不了更加自動和智能的決策場景。強行轉型與減員增效會讓他們原本穩定的業務接近崩潰。
嚴選風控出現過幾次大的故障都跟數據質量緊密相關。2019年8月份的時候,風控在執行每周誤判巡檢的時候發現整體疑似誤判率增加了4倍。最終定位原因是設備號相關的日志內容有些異常,從而導致了相當一部分用戶的行為(簽到操作)被錯誤的執行了攔截。
這是一個很有意思的案例。一些關鍵的決策:比如用戶是不是壞人?某個商品要采購多少量?可能會依賴于不被重視的某個線上日志的一小部分內容。整個質量保障體系很難把視角投入到某個具體應用的某個日志字段在高壓力下會不會出錯?在傳統的應用服務質量保障理念里,日志字段的某個偶爾的小錯誤,沒人會把它當作bug,開發人員更不會去關注。但如果一旦把數據當作了生產資料,如果我們不對應用質量保障的理念和工具進行革新,你的大量的數據分析報告、訓練好的算法模型以及做出的決策可能很不可靠,因為生產資料本身就是垃圾,Garbage in,garbage out。
還有一個驚人的現狀是,大量用于生產數據的復雜SQL并沒有進行真正的測試,甚至,大量的數據系統并不存在所謂的測試環境。我們很難像測試線上服務(比如訂單系統)那樣去測試數據生產過程的正確性。那么這樣通過幾萬行,甚至幾十萬行SQL生產出來的數據到底能不能用?這個問題其實很難回答。
數據的可靠性是組織在轉型數據驅動過程中一個非常大的陷阱。
大家都在討論數據質量的重要性,但是內心又默默覺得這個事情比較低級。因此,很少見到有團隊會把大量聰明智慧投入到數據質量的保障上。
除了資源投入的缺失,很多數據團隊對數據質量的認知也是各不相同。曾經跟一位在數據行業從業15年,為某知名公司數據體系做出巨大貢獻的前輩做過一次深入溝通,聊起數據質量,“你覺得數據質量是什么?”他的回答是:“數據質量,真正需要考慮的是指標一致性。”。瞧瞧,就算是非常資深的同行,他的認知還是不夠完整,按他對數據質量的理解,數據的支撐能做到報表給人看,這個層面就很完美了,要落地到戰術層,落地到線上自動決策基本不可行(因為數據質量的故障難以像線上程序故障一樣快速修復,它是一個持續污染的過程)。
數據做為智能決策的輸入,是動態變化的。它沒法像對代碼的依賴那樣做靜態分析,它的依賴層次動態而不穩定。
2數據科學的“科學”在哪
數據科學是常常說起的一個詞,也是形容我們日常工作的一個詞,但當我們說起的時候,內心就會有些心虛,就光看到數據了,“科學”在哪里?如果沒有”科學“的部分,我們產出的結論會不會有問題?
這是一個最常見的問題,數據科學的從業者們,不知道什么是”科學“。所以“江湖”上才會有SQL Boy, SQL Girl的稱呼。
一個常見的問題是數據指標之間的相關性到底是不是真的相關?我們做數據分析往往能看到很多有趣的相關性,比如最近幾個月買了拖鞋的用戶,看起來有更大的可能性在最近一個月復購另外一個商品。但是,這個相關性到底是不是真的存在,還是只是偶然的巧合?分析報告很容易對這個問題視而不見。但如果這個相關性本身經不起推敲,它又如何來指導我們的工作呢?數據分析報告難道要靠運氣來驅動業務發展么?
就算有不錯的統計基礎,給每個假設都加上了P Value,往往還是很容易把相關性與因果性給搞混。兩個事情相關,并不能得出結論說他們之間互為因果,我們需要通過因果分析的方法,為數據之間的相關性提出符合業務邏輯和商業邏輯的解釋。
如果數據分析遺漏了因果分析這個過程,就會得出一些奇怪的結論。比如,我們發現腳大的用戶,買的鞋子一般也是大號。如果缺乏基于業務邏輯的因果分析我們可能會這樣指導運營工作:為了讓用戶的腳變大,我們應該多賣大號的鞋子給他們。
但有的時候,我們很難直接分析出數據之間的因果關系,很難直觀地得出結論,這個時候,我們需要借助科學實驗,幫助我們更深入地理解業務。
如何去做科學實驗,結合滴滴謝梁的觀點,總結如下:
通過對數據的敏銳度和業務的熟悉程度,來發現和定義問題;
提出結構化、可量化的假設。
設計驗證實驗。科學與實驗是緊密關聯的,很多公司往往利用實驗來判斷方案的好壞,但其實實驗更多的是用于幫助驗證假設,幫助更加深入地理解我們的用戶。用今天頭條CEO的話說,更多的時候,AB測試幫助我們理解用戶,而不是幫助我們決策。設計一個好的實驗并不容易,需要根據假設梳理出要驗證的指標、樣本集以及可控制的因子(往往是流量)。設計實驗,需要極強的專業性。
收集與分析數據。分析數據并不僅是直觀地去看趨勢的高低。分析數據首先需要對業務的主要指標及其相關性有清晰的概念,需要把指標之間的相關因子量化,甚至可計算。個人認為是先有結構化、系統化和量化的體系,再有數據分析。所幸的是,結構化的體系我們可以用系統和服務來支撐。
分析人員需要專業的量化分析能力和統計學能力。
3操縱,誤導,數據的民主化不足
數據民主化在國外數據社區討論的很多,國內聊的比較少。數據科學家們通過“黑魔法”制造出一些模型來,然后告訴業務同事該怎么決策,告訴高層業務指標完成的好不好。數據的能力被限制在某一個專業團隊,但它的產出卻又跟業務緊密相關,這些未知會給業務人員和管理層帶來恐懼與不安,數據團隊給的結論會不會有可能是被操縱的?會不會出現有意無意的誤導?這些問題會很容易讓團隊之間滋生不信任。
所以數據民主化不足帶來的一個重要問題就是信任問題,那該怎么解決?
嚴選在一次產技共創會中有同事提出,要跟業務“談戀愛”。對于眼下的現實,這確實是解決信任問題的一個好辦法。阿里曾經的數據一把手車品覺老師也說過類似的話:數據同學要會“混、通、曬”,跟業務同吃同行,建立信任才能互相成功。
但這終究不是一個可規模化和標準化的解決方案。如何去降低數據使用的門檻,讓一切更直觀和更容易解釋?我們開展的一些項目,例如SQL on AI、Data Intelligence System(DIS)以及算法平臺等,一個共同的目標是降低數據使用門檻,并通過產品的方式固化甚至可視化數據分析過程。
4數據預測的成功不僅是算法模型
老板們經常會把算法能力簡單化:預測的不準?找幾個算法專家做個模型就能搞定!遺憾的是,現實并不這么簡單,可能找100個頂尖的算法專家都沒用。
有人見過用算法來預測下一輪雙色球中獎號碼的么?有人用算法來預測接近混沌狀態的股市漲落么?作為一個旁觀者,能利用算法來預測意甲的每場比賽成績么?
有的業務問題本身是無法預測的,因為它跟過去沒有關系(比如雙色球);有的業務問題預測成本很高,短時間內無法做出有價值的模型(比如預測股市、預測比賽等),需要考慮投入與回報。事實上,很多算法的成功落地,不光是需要有合適的模型,還需要大量維度的數據作為生產資料,更關鍵的是要有一個完善可靠的算法工程體系。而后者,往往會被決策者忽略。
決策者在考慮利用算法模型去預測未來時,他需要想明白投入與產出,組織需要投入的不止是幾位算法專家就行,還需要建設完善的數據基礎體系,還需要建設完善的算法工程體系。決策者如果期望數據和算法能發揮突破性的效應,需要有魄力把成本投入到自己目光不能及的地方,比如基礎數據體系,比如算法工程。
5空中樓閣———基礎設施與基礎能力的不完備
這個問題比較抽象,對于BI、算法和數據產品的同學而言可能不好理解。不過大家只需要記住:數據的最底層,搖搖欲墜、并不堅實,同樣需要一個團隊精心守護。
大家在興奮地玩耍數據,利用數據來驅動業務前進的時候,如果回頭望望做Data Infra的同學,如果他們告訴你其實你在用的數據能不能真的算出來、有沒有算對,他們也沒多少信心的時候,你會不會覺得心驚肉跳,會不會覺得人生其實有些虛無?如果大家有機會采訪下各個互聯網公司,可以問問他們被抱怨最多或者故障最多的技術團隊是哪個?相信答案都比較一致:“大數據基礎團隊”,包括嚴選的前面幾年,這個情況也非常嚴重(當然現在也沒好多少)。數據故障頻出,數據產出排期長、節奏慢和不穩定等情況都很常見,很多時候我們是用睡覺時間在做人肉保障。每每回想起來,都會心驚。
這當然并不是因為大數據基礎行業的從業者敬業精神不足或者能力不足。而是因為大數據體系其實并沒有一個非常堅實的工程基礎。
(1)數據的基礎設施可靠性不足:數據的采集系統、數據的存儲系統、數據的計算系統和數據的分析引擎,這些服務的可靠性相比其他的在線服務低一大截。數據平臺每天的定時數據計算服務,比如Hive或者spark,成功率如果有98 %,已經算是很不錯了,而線上服務系統,如果可靠率長期在98 %以下,相關團隊的人員很難堅持一年不被優化。就算數據成功地被計算出來了,我們的分析引擎,比如impala,查詢成功率也長期低于95 %,在嚴選這個數據還要更差一些,impala的查詢失敗或者超時,幾乎每天都有不少。
(2)計算模型不完備和廣泛的誤解:大數據的計算有2個模型:Streaming和Batch。2個模型對應的基礎設施各自獨立發展,誰也不理誰。同時,由于信息流轉的速度問題,也有人把這2個模型稱為實時計算和離線計算。雖然,Streaming &實時計算和Batch &離線計算在很多現實場景中存在著一致性,但本質上,它們是兩回事。甚至很多從業者也無法清晰地分清楚這些基本概念,把實時計算和流計算等同,這給數據工作帶來了巨大的困擾。
為了適配這2個計算模型,很多組織的Data Infrastructure團隊會有獨立的流計算團隊和批處理團隊;會有實時數倉和離線數倉,會有實時指標和離線指標等。這些數倉和指標的研發人員存在著割裂,數倉建設方法論、指標定義也不盡相同。維護成本和解釋成本都很高,出錯幾率也很大。很常見的情況是一個業務的數據需求,往往需要拆解成實時和離線2個方案,共同去實現。現在,這個糟糕的局面沒有變的更好。
LinkedIn、Uber和阿里等公司都在嘗試做批流融合,嚴選也在嘗試,在做計算資源管理和調度層面的融合。但是,融合2種完全不同的計算模型,是一件不美好的事情,直覺上也不大對。個人覺得現實的業務問題可能并不是聚焦在批流2種計算模型的不兼容上,而是聚焦在實時和離線2個時間維度上的不兼容。由于歷史原因,實時的數據往往需要依賴流計算模式來產生,從而產生了實時計算等于流計算的誤會。而融合實時數據與離線計算,解決起來就容易很多,流處理也需要走向更適合它的場景。
其實能總結的問題遠不止這些,比如我們會擔心“算法替代思考會不會傷害組織的遠見?”“大規模依賴A/B測試做決策,可能會導致運營策略的短視”等。