數(shù)據(jù)科學之路(上)
那哲學上一般都會講人生的三個終極問題:
- 我是誰
- 從哪里來
- 到哪里去。
其實要想做數(shù)據(jù)科學,也要關心三個問題,
1.數(shù)據(jù)科學或者數(shù)據(jù)科學家到底是什么含義
2.怎么才能走上這條路
3.怎么才能在這條路上一直走的很好
大家可以看到目錄首先從多個方面去為大家介紹數(shù)據(jù)科學家這一崗位的方方面面,然后比較關心的是數(shù)據(jù)科學家的自我修養(yǎng),怎么被需要被認可,怎么儲備知識自我提高,最后簡單地為迫不及待想要轉型的IT架構師或者數(shù)據(jù)分析師提供一些小建議,進行數(shù)據(jù)科學家養(yǎng)成。
先來簡單介紹一下這個崗位。
這個崗位在北美應該算是很流行了,國內(nèi)一些公司我們更經(jīng)常聽見的是:
- 『數(shù)據(jù)團隊負責人』
- 『大數(shù)據(jù)架構師 』
- 『算法工程師』
- 『高級數(shù)據(jù)分析師』
- 『數(shù)據(jù)挖掘工程師』
這樣的崗位??梢钥吹竭@些人的職能離數(shù)據(jù)都很近。
但我對數(shù)據(jù)科學家的定義集中在『獨立,垂直』。獨立就是,他們要從產(chǎn)品、業(yè)務部門獨立出來,垂直的意思是,要對數(shù)據(jù)的全生命流程負責,能夠用對數(shù)據(jù)的分析、挖掘,為產(chǎn)品、數(shù)據(jù)流程甚至架構 帶來全面改進,能夠輔助決策,甚至直接創(chuàng)造價值的這么一個垂直團隊,甚至是單兵。
有些人可能會說這是個偽命題,沒有數(shù)據(jù)科學家的時候,公司也一樣能做數(shù)據(jù),也有數(shù)據(jù)團隊,也有這些崗位啊?數(shù)據(jù)科學家又是個什么鬼?
我認為數(shù)據(jù)科學家應該扮演一種催化劑的作用,首先在開辟新領域時,要主動承擔數(shù)據(jù)團隊中出現(xiàn)的架構+數(shù)據(jù)清洗一類的基礎性工作,達到自己在一線對數(shù)據(jù)理解、掌控的目的。然后,因為關心數(shù)據(jù)全生命周期流程,所以每個環(huán)節(jié)都可能是推動數(shù)據(jù)處理流程的優(yōu)化的點。數(shù)據(jù)從哪兒來,質(zhì)量如何?業(yè)務數(shù)據(jù)要做分析,必須經(jīng)過哪些清洗和重構?使用什么樣的工程數(shù)學工具進行分析?該以怎樣的形式交給業(yè)務部門或者決策者?能夠進行哪些輔助或者直接的決策?真是有種當?shù)之攱尩母杏X。
所以我們在這里展開點講一些數(shù)據(jù)科學家的工作內(nèi)容。我們得有垂直獨立的思考模式,我們要遷就產(chǎn)品,但是決不能只用產(chǎn)品設計的思路思考數(shù)據(jù)分析。
一般來說,公司在最開始設計產(chǎn)品邏輯或者業(yè)務邏輯的時候,之所以做的粗放,是因為滿足數(shù)據(jù)上收的條件下,搞好業(yè)務性能和用戶體驗就可以了。我設計一個系統(tǒng),要求0.4秒以內(nèi)返回結果,或者每秒接受上萬次查詢(qps),幾千筆transactions,把功能點實現(xiàn)就好。如果在剛開始搞產(chǎn)品這一步就想做實時分析說查詢和交易的背后有什么內(nèi)在邏輯?那簡直就是本末倒置,產(chǎn)品的生存第一位,數(shù)據(jù)都是先積累。
積累一定程度了,業(yè)務數(shù)據(jù)拿出來了之后,也根本不是說直接跑個邏輯回歸跑個決策樹,出個報告,下班回家這么簡單的。
第一點就是要數(shù)據(jù)清洗。俗話說的好:做數(shù)據(jù)這一行,三分天注定,七分洗數(shù)據(jù),也就是說,本來我們分析的數(shù)據(jù)潛在包含的信息就是有限的,你再不做清洗,什么也做不好。比如說有個字段是質(zhì)量很差的身份證號碼信息,其實身份證號足夠恢復出這個人的出生地信息,生日性別,如果足夠全的話,還能檢查出這張身份證數(shù)據(jù)是不是假的。你不做清洗、不做信息提取,一定喪失了很多能夠做預測的指標。
再比如LinkedIn上有很多公司的數(shù)據(jù),如果本來是同一家公司,但是在系統(tǒng)里有10個uid,像高德,高德軟件,高德地圖等等等等,你不好好做人工標注,維護字典統(tǒng)一這些名稱,就很難知道誰和誰有同事關系了。不僅僅是社交網(wǎng)絡,跟文本相關的數(shù)據(jù)質(zhì)量,不管是爬蟲爬的還是買來的格式不好的數(shù)據(jù),都需要非常大量的數(shù)據(jù)清洗,而且不懂業(yè)務需求是什么的時候,連清洗的質(zhì)量把控、清洗的方式都不能做。數(shù)據(jù)清洗這件事重要到值得動用你的所有武器,從最原始的正則表達式,人肉修正臟數(shù)據(jù),一直到最復雜的深度學習模型研究文本分類,再把文本中的詞匯、語義、詞性給提取出來變成新的feature,加入到特征庫。所有這些都是需要清洗的內(nèi)容。
第二點就是整合,熟悉各種SQL或者Pandas的朋友都很清楚,數(shù)據(jù)分析需要的數(shù)據(jù)跟業(yè)務數(shù)據(jù) 不僅質(zhì)量有很大不同,而且組織形式也不一樣。
比如廣告行業(yè)里面有一個重要的分析叫做點擊率預估,就是傳說中的CTR預測,廣告投放給一個批次的人,展示、點擊、注冊、付費大量的行為隱藏在同一個日志表里面,格式就是個行為+時間戳,但是你想分析轉化漏斗,不可能不做拼接聚合。
這種問題還算簡單,因為CTR這種問題你全量可以做,抽樣也可以做。如果是做社群發(fā)現(xiàn)啊,PageRank,圖模型最短路徑等等類似的問題就不一樣了。
你會發(fā)現(xiàn),首先你得維護一個社交網(wǎng)絡圖,Twitter最早用HBase存稀疏矩陣,更多的公司用三元組表示圖模型然后搞Spark GraphX或者使用Python的networkx。這種數(shù)據(jù)的重構不允許你基于一個原來圖做抽樣,你抽樣了做,要么結果是錯的,要么這不是一個能夠開放給所有人的社交網(wǎng)絡服務,講的low一點,跟CTR比這更像是一個典型的『大數(shù)據(jù)問題』。
最后就說一下分析任務。像分類變量大家往往使用加工啞指標、進行one hot encoding的方式可能從業(yè)務系統(tǒng)里的幾十個指標組合加工出上億個特征,這說明一件事,你的業(yè)務數(shù)據(jù)可能1個節(jié)點數(shù)據(jù)存下了,很好啊,但是要做分析,不僅吃內(nèi)存,而且中間數(shù)據(jù)可能要用到成百上千臺的集群。
這種情況太正常了。這時有些受過正統(tǒng)統(tǒng)計學教育的人可能會認為剛才的做法太沒有潔癖了。沒關系,為了照顧到大家的潔癖或者預算不足,我們有很多降維工具,比如直接應用于數(shù)據(jù)列上的PCA/AutoEncoder可以留下數(shù)據(jù)中的重要信息,ISOMAP可以方便的幫我們做流形降維/ 而某些樹模型除了能幫我們建立分類、數(shù)值預測模型之外,它的非葉子節(jié)點在優(yōu)化多分叉的時候,也能天然的起到了降維的作用。加變量、減變量往往被稱作特征工程 Feature Engineering,套用模型Data Mining實在只是最后最后的一個小步驟。
總之,這個崗位不是過來鬧著玩的,是為了推動業(yè)務優(yōu)化、是為了推動決策的,是為了產(chǎn)生價值的。產(chǎn)生價值說簡單點不就是增加收入,節(jié)省成本嗎?然后你的利潤就來了。每一個業(yè)務決策、業(yè)務動作后面的成本和收益是多少?如何定義好優(yōu)化問題?要動用多少人力物力,有什么樣的約束條件達到什么效果,這是顯性的。公司怎樣節(jié)省自己的時間,客戶的時間,帶動產(chǎn)業(yè)發(fā)展社會進步,這是隱性的,都要考慮。
把優(yōu)化目標用數(shù)學的方式表達出來,才能有好的結果。而且有時候我們會有多個目標。為什么百度全家桶另人討厭?每一個部門都有自己的產(chǎn)品、自己的KPI,幾個團隊的leader私下一商量,打包出去推廣,KPI是上去了,社會口碑一落千丈,所以不去預先協(xié)調(diào)多個目標、多個團隊的協(xié)作,這種短視行為只能帶來垃圾。
所以產(chǎn)生價值,這是數(shù)據(jù)科學家的內(nèi)功,真家伙,能受用一輩子。
所謂數(shù)據(jù)科學家的外功,就是接地氣,在后端能設計優(yōu)化架構,在業(yè)務端能推動決策落地。
一個簡單的分析,變不成一段系統(tǒng)中的SQL代碼、一段Python代碼,影響不了最終的決策,那就是什么都沒有。這是很多人曾經(jīng)面對或者正在面對的問題。另外,就算這些一切都好,一個算法能火的必要非充分條件是找到了做大規(guī)模并行化的思路,沒有一個算法是只靠單機表現(xiàn)出色就能上線部署的,比如SVM 06-08年的實現(xiàn)了在線更新,比如11年隨機梯度下降實現(xiàn)了無并行鎖。 所以很多工程師、數(shù)據(jù)科學家都在研究算法的可并行性、擴展性。論證完之后他們就會用OpenMP,用Spark,用GPU的方案來實現(xiàn)。
不僅如此,對算法熟悉了,我們更要對數(shù)據(jù)熟悉,主要就是去了解一個算法牽涉到的數(shù)據(jù)量以及計算量。前者就是所謂的空間復雜度,我們要花多大內(nèi)存或者物理存儲來存放中間結果和最終結果?存進去能不能高效的讀取出來?后者就是所謂的時間復雜度,CPU/GPU的算力能不能靠指令集優(yōu)化提高?每次計算啟動預處理和節(jié)點通信代價有多少?受指令集、緩存、內(nèi)存、總線、網(wǎng)絡的延遲多高?這些細節(jié)考慮和不考慮,做出來的結果天差地別。
最后的落地性就是以身作則的推進代碼、圖標、報告,對決策形成建議。學統(tǒng)計的人都會形成概率思維對吧,我觀測到一個樣本,屬于A類的概率80%,屬于B類的概率20%,但是決策者就不一樣了,兩條路只能選一條,壓力很大。有一句話叫選擇大于努力,而數(shù)據(jù)科學家做的事就是努力做出正確的選擇。這種選擇不僅依靠數(shù)據(jù)類的信息,也有非數(shù)據(jù)類的信息。因此,把難以數(shù)據(jù)化的信息給數(shù)據(jù)化,評估風險,才是正道。大家為什么現(xiàn)在推崇量化投資?如果你沾沾自喜于單獨某一次選擇的一夜暴富,那以后仍然還會一夜暴窮。量化投資也好,數(shù)據(jù)科學也好,都是為了更好的做選擇。
綜上所述,一個數(shù)據(jù)科學家可以有多種視角,給人感覺很酷。
數(shù)據(jù)科學家崗位活躍在什么行業(yè)?
傳統(tǒng)行業(yè),肯定有,而且需求很大。
美國郵政曾經(jīng)優(yōu)化了工作日程表,本來周一到周五上班周末兩倍工資,變成了排班制度,自由選擇合適的5天上班,一下在勞動力上節(jié)省了三億美金,這個方案現(xiàn)在日本很多打工店都在用。
這就涉及到線性規(guī)劃、整數(shù)規(guī)劃。亞馬遜至今還在做倉庫選址和路徑調(diào)度,因為它要安排倉庫庫存,安排送貨嘛。所以地理數(shù)據(jù)分析,選址和TSP都得做。工程方案就更多了,比如滴滴今年這個算法競賽,顧客和車輛的供需預測,所有打車、租車、代駕公司,一旦做到規(guī)模化了,都特別需要供需預測,這事兒2年前e代駕就在做。
做完供需預測,有的人就想我們設計一個運力調(diào)度中心,這個區(qū)域人多,你應該去這,另外一個區(qū)域車少,你應該去那兒。其實從工程角度講,給司機看一個熱力圖解決了,redis存好司機實時位置和對接下來半個小時訂單的預測,司機在app看到熱力圖,自己就往更容易接單的地方跑。做工程往往就特別需要這種巧勁。
互聯(lián)網(wǎng)行業(yè),是數(shù)據(jù)科學家的主戰(zhàn)場。
09年netflix數(shù)據(jù)競賽可能大家都清楚,其實就是為了解決一件事,給合適的用戶在網(wǎng)上推薦合適的影片和電視劇,甚至自己主導往外推這些影音內(nèi)容。為什么《紙牌屋》能火?因為大眾喜歡的題材、喜歡的導演、喜歡的Kevin Spacey都湊一塊兒了,這都是基于對用戶的深入理解才能做的。競賽結束之后,是個人就會講協(xié)同過濾了,雖然真正實踐svd,als的人少之又少,但互聯(lián)網(wǎng)確實開始重視算法了。很久之前看過一本入門級的《推薦系統(tǒng)實戰(zhàn)》我覺得寫的比較全面,作者項亮老師至今活躍在算法一線。
如果說你開了一家公司,不是電商、垂直巨頭這種流量+推薦的模式,你一樣可以參與到廣告行業(yè)里。這個行業(yè)國外商業(yè)模式非常成熟,廣告主,需要競價廣告位投放;媒體流量主,需要優(yōu)化廣告位,進行用戶行為研究,中間還有廣告聯(lián)盟,DMP這些平臺,研究投放算法,采用田忌賽馬的策略,雖然每個廣告不都會投放給最適合看這個廣告的那些人,但是總收益最大。對這方面感興趣的推薦大家先看一本入門書《計算廣告學》,作者是劉鵬老師。這里面涉及了廣告行業(yè)的商業(yè)模式的架構和算法實踐,算是個全貌性的介紹吧。
我個人有些偏見,認為廣告行業(yè)做算法做不透,做的半吊子,首先PC端投放轉化率千分之五,移動端轉化率百分之五,能做到這個數(shù)字都要燒高香了,離所謂精準簡直差的太遠。 比如你耽誤大家70秒的時間就為了一個廣告的KPI,點擊率千分之五,14000秒 4個小時的播放形成了1次點擊,謀財害命對不對,也不好好學學國外怎么在廣告上互動收集UGC,提高投放效果。
然后我是覺得相比之下,增長運營比流量運營更有價值。最近有個很潮的詞叫growth hacking,自己做產(chǎn)品,上收數(shù)據(jù),但是呢自己做簡單分析太麻煩了,要有專業(yè)化的平臺幫我們分析這些,拉動增長,降低成本?;痉椒ㄕ摼褪锹┒穲D轉化率,精細化一點的話Cohort Vintage Analysis,再精細化一點用戶畫像,為用戶定制化他的核心體驗,提高留存和持續(xù)付費。
從APP的sdk切入的Talking data,友盟都是比較老牌了,環(huán)信給app提供的多媒體社交sdk也是很棒的點,更多的廠家是在云端數(shù)據(jù)服務,光我接觸到的,國內(nèi)的百分點,Everstring,37degree,growing.io,美國Salesforce是做的比較久了,Ayasdi在最近美國融資榜上面排第二,核心算法、高性能計算、和數(shù)據(jù)可視化做的都很好,大家可以了解一下。說個題外話,融資榜第一的Sentient科技,是做機器人的。反正就人工智能圈子。
最后一點,一個好的數(shù)據(jù)科學家其實是適合做偏數(shù)據(jù)類的產(chǎn)品經(jīng)理的。項目冷啟動上收UGC、爬什么外部數(shù)據(jù),是需要靠大局觀,靠腦洞的,不是守著自己現(xiàn)有一點數(shù)據(jù)分析分析就足夠了的。產(chǎn)品迭代的過程中,算法搞不定的時候也是有的,有時候拿A/B Testing結果說話更靠譜。
在前沿技術公司里面,很可能進來的人都有一個較高level的算法能力了,這樣的一些橫跨學界和產(chǎn)界人湊在一起,他們的核心技術就是拓撲、圖論、數(shù)論、深度學習、強化學習這一套純數(shù)學工具,很高的壁壘在這,他們在一起要么能夠解決之前解決不了的問題,要么極大改善傳統(tǒng)方法的效果,包括數(shù)據(jù)安全、OCR,圖像識別、語音識別、文本理解、機器翻譯、機器人等等。很多人在博士階段就有一些專利了,然后很自然而然的就開始開公司。特別有名的,包括剛才提到的Ayasdi,Sentient科技,Deep Genomics等等。這種公司的核心團隊往往不太可能和一個成長中的數(shù)據(jù)科學家共同成長,比較多的還是走學術產(chǎn)業(yè)化的道路,其實剛剛畢業(yè)的碩士,博士如果還喜歡在一線做工程的話,是特別適合加入這些團隊的,國內(nèi)就有幾家,科大訊飛,商湯科技,等等就不贅述了。
所以洋洋灑灑總結一下,什么是數(shù)據(jù)科學家?
前面懂業(yè)務,中臺證明自己的故事,底層寫代碼,算法的也寫后端的也寫。如果你是首席數(shù)據(jù)科學家,你不給自己公司站臺,做技術型售前,你能指望誰能比你講清楚你們的技術實力和商業(yè)模式?你不幫公司上收最數(shù)據(jù),你想指望誰來做?
雖然對數(shù)據(jù)科學家的要求很高,但是也要看到幾個點
數(shù)據(jù)科學家不是數(shù)學家。三百年前就有費馬大定理,三百年后才證明出來,形成了厚厚一本論文集,捎帶搞定了谷山志村猜想,這個猜想的證明打實了blockchain的基礎。那你能說,我想設計個比特幣,所以直接從證明猜想開始干嗎?這么做的人肯定腦子有病。數(shù)學家更像哲學家,而數(shù)據(jù)科學家更像工程師,還是要記住解決問題,要把真實世界抽象成可解決的數(shù)學問題并親自解決。
數(shù)據(jù)科學家也不像 IT 工程師,更像什么汽車工程師、飛機制造工程師。
IT工程師工作的完成,具有特別清晰的要求和標準,就像發(fā)動機制造,滿足標準就是100分,不滿足0分。但是對于數(shù)據(jù)科學家來講,就好像造汽車造飛機:你把工作完成了,也不一定是及格的。如果你做的結論大家都知道,那就沒什么價值,如果你的結論是基于錯誤的數(shù)據(jù)得到了反直覺的結論,我估計你馬上可能就被解雇了。如果你的結論很棒,算法也很棒,但是工程實現(xiàn)不行,那就是大寫的尷尬。
因此你要特別善于在大家不關心的點找出新的思路來分析,提高數(shù)據(jù)的價值,對主動學習的要求非常高。就好像造電動車,電池你得管,結構和抗碰撞能力你得管,外觀好不好看好不好賣你得管,發(fā)動機當然是關鍵的一環(huán),你可以不親自去造發(fā)動機你可以買,但是發(fā)動機買來了帶不帶得動整車重量,你就得背鍋。
如果公司有數(shù)據(jù)文化,并愿意維護一個做實事的數(shù)據(jù)科學家崗位,而不是打嘴炮的團隊,是相當值得珍惜的。之所以這么說呢,是因為,有些公司,它壓根沒有數(shù)據(jù)科學家。排除掉無法看到數(shù)據(jù)價值的傳統(tǒng)行業(yè),還是有公司沒有。所以我們就面對一個新問題……