天天看點

如何高效盤你的資料科學項目?這裡有一份“避坑指南”請查收

如何高效盤你的資料科學項目?這裡有一份“避坑指南”請查收
如何高效盤你的資料科學項目?這裡有一份“避坑指南”請查收
如何高效盤你的資料科學項目?這裡有一份“避坑指南”請查收

文章釋出于公号【數智物語】 (ID:decision_engine),關注公号不錯過每一篇幹貨。

來源 | 大資料文摘

作者|Maksim Butsenko

編譯|籍緩、Jiaxu、李雷、王嘉儀

一個影響深遠的資料科學項目遠遠不止一個工作模型那麼簡單。特别是當我們要建構一個影響全球幾百萬人日常生活的的産品時,需要一支具備各行業專業知識的團隊。

資深資料從業者、Taxify(一家歐洲打車軟體公司)資料科學家Maksim Butsenko就這一問題采訪了數百人,得到了這篇“避坑指南”。讓你能更有效的盤你的資料科學項目。

Maksim Butsenko表示在Taxify,通過建立資料科學卓越計劃,使這一過程更加透明,統一和高效- 它有助于我們圍繞最佳規範開展工作。同時,與新加入的資料科學團隊成員分享最佳規範對公司和新人都是有益的。 最後,我們希望這些規範能夠幫助任何人開始他們的資料科學之旅。

1定義資料科學家的角色

科技行業已經或多或少懂得如何讓工程師和業務人員一起工作。我們有多種産品開發方法可供選擇——你的團隊自行設定Scrum(靈活軟體開發的架構),Kanban(看闆管理)或XP(極限程式設計)工作流程。

人們知道如何将這些方法融入組織中,你也可以找到許多關于如何高效應用這些方法的建議。然而,大多數人沒能了解資料科學家應如何融入這一場景。他們應該算哪一部分-技術人員還是業務人員?你是放手讓他們發現未知的見解?還是要求他們回答一個非常具體的問題或者改善你業務中的一個具體領域?

Asko Seeba非常清楚地解釋了企業如何看待資料科學項目的過程,并認為它主要就是一個研究項目。考慮到即使是業内人士仍然試圖了解如何以最高效的方式利用資料科學家的專業知識,那麼新加入者怎麼知道他們應該關注哪些技能?

2建立團隊

一年前,我們開始在Taxify建立一個頂級資料科學團隊。考慮到我們的快速增長(去年Taxify乘客數量增長了十倍,我們為全球超過1500萬名乘客和500,000名駕駛員提供服務)以及運輸領域資料相關的挑戰數量,隻雇用少數優秀的資料科學家是不夠的。我們正在考慮在明年為我們的團隊增加幾十位資料科學家。

但我們究竟要找誰?資料科學中嚴格意義上的學位課程剛剛興起,行業本身尚未完全确定如何定義資料科學家的完美履歷。

事實上,資料科學家庫目前由具有不同背景的個人組成。我們的團隊中有人擁有計算機科學和人工智能的背景,但也有來自信号處理,計量經濟學,化學,複雜系統,社會學等領域的人。

我們的共同點是通常對科學方法和實驗設計的良好了解。獲得技術技能要簡單得多。但是,由于我們來自各個領域,是以我們對提供基于資料的産品的流程的了解可能會有所不同。需要花費一些精力來整合所有這些經驗并提供強大的團隊成果,這就是我們如何處理這個問題的辦法。

3資料科學卓越計劃

我們啟動了一項内部計劃,旨在為團隊釋出專注于直接産品影響的自動預測鋪平道路。我們稱之為“資料科學卓越計劃”,它的目的是收集我們已經建立的團隊和我們正在努力實作的最佳實踐并應用之。

它有助于新團隊成員簡化模型開發過程并避免常見陷阱,這樣我們就可以更快地前進。在我們能夠産生有價值的東西之前,不必檢查本指南中的每一條,但是大多數要點都是為了確定結果的品質,并避免代價高昂的錯誤。

我在這裡談論我們的資料科學卓越指南的原因是:它給出了對釋出資料産品的要領的深刻了解。雖然大部分内容對于經驗豐富的資料科學家來說都是不言而喻的,但你無法從機器學習(ML)課程或書籍中了解它,是以這對于任何剛畢業或從其他領域轉移到資料科學的人都很有用。

通過進行面試和審查測試任務,我們經常看到許多具有很強的技術技能和對ML充分了解的初學者沒能提出正确的問題或者也不知道如何在現場測試他們的模型。這時候我們的資料科學卓越指南就可以為他們提供幫助。

4問題陳述

首先定義你要解決的問題。

如果可能的話用數學符号描述它(不需要太嚴格,但有助于確定定義是正确的)。通過定義問題,我們可以開始概述解決方案的可能方法。這是一個疊代過程,回到問題陳述并驗證——我們問了自己正确的問題嗎?我們可以對市場上已有且可重用的解決方案進行文獻探讨和研究,重點在于它們對我們的問題的作用。

如何高效盤你的資料科學項目?這裡有一份“避坑指南”請查收

5目标和名額

根據項目的目标,提出可以标示目标達到的名額。

在開始研究原型之前,先問問自己:

1. 你的模型對于産品和其使用人員有多少實際價值?

2. 有什麼影響?它會影響10%的使用者群還是40%?

3. 你如何計劃在産品級别上衡量模型的效率?

4. 收集和衡量你可以想到的所有KPI和名額是一種很好的做法。主要目标的積極影響可能會對其他領域産生負面影響。

6時間規劃

探索資料,嘗試不同的特征工程和構模組化型的方法是一項持久戰。花費大量時間在這上面也可能會讓你在Kaggle比賽中獲得巨大的勝利。然而,在快速發展的公司中仍有許多與資料相關的挑戰等待解決。

例如,預測駕駛員到達乘客打車地點的時間(預計到達時間- ETA)是我們服務的關鍵要素。我們釋出了成功的預測模型,與現有解決方案相比,平均絕對預測誤差得到了顯着改善,在這之後我們還得問自己繼續努力将誤差進一步減少或者多次疊代是否還值得。我們知道這将需要大量的工作,并且無法預先估計可能的改進量。

考慮到這一點,無論是在進行探索性分析還是優化現有模型方面,我們都緻力于為我們的工作限定時間。我們為特定任務設定了有限的時間,并嘗試在此時間段内提供結果,即使這意味着放棄最可用的模型或省略一些有趣的功能設計創意。時間限定在構思階段也很有用,例如,為了評估可能的工作區域,我們每天對一個想法以快速雙人程式設計馬拉松的模式來弄明白其可能的結果,我們能夠多快生成可部署的模型以及它對項目最初基線的改善程度。

7工具

隻有當資料科學家獨自工作時才不需要考慮代碼的可重用性。你可以以最快最喜歡的方式得到想要的結果。但團隊合作需要考慮到如何使整個團隊前進的更快一點,即便這意味着增加了個人的工作量。

例如,将包含地理資訊的熱圖進行比較的方法可能在他人的分析中也用得上,那麼花一些時間對函數進行整理概括并将其作為内部資料堆棧庫的一部分就是有意義的,這有助于提升團隊整體的速度。并且以可讀且易于重用的方式所建構的代碼或使用手冊将有益于所有人。

總的來說,我們的目标是為資料科學家和工程師提供最好的工具。建構必需的核心部分,其他的能買則買。

8代碼檢查

代碼檢查是軟體開發标準流程的基礎環節。但對于許多資料科學家來說就不那麼受用了,部分原因在于他們中的許多人并沒有計算機科學的相關學位,并且不太了解軟體的最佳規範。這就是為什麼檢查機器學習代碼如此重要,尤其是将要轉化為産品的代碼。同時需要注意的是,檢查為建立模型而做出的假設也是不可或缺的一個環節。

例如,在與我們的領域相關的任務中,你可能想要讨論諸如“如何定義客戶需求?”、“為什麼缺失的乘車價格字段被平均價格代替?”等問題。這意味着軟體開發人員沒有充分了解資料科學的過程,就無法評估代碼的整體功能,也不會留意到(資料模型相關的)假設的錯誤。

是以,需要将代碼檢查分為兩個階段(軟體/模型)或者啟用同時具備兩個領域相關知識的人才。代碼審查也是提升團隊内部知識共享的一種有效方法,特别是當團隊成員分散在各自的項目上時。

9AB檢驗

當模型準備好了,并且誤差在合理範圍内,經過代碼審查并準備就緒,你希望它能夠對業務産生積極影響。那麼你怎樣實際驗證模型是否具有預期的作用呢?實際上的資料的模糊性和不确定性,成為我們工作中的難點之一。我們是全世界發展最快的行業,同時也擁有最複雜的市場和衆多競争對手。我們獲得的資料不僅取決于自身,還受到城市社會活動和競争對手的促銷等因素的影響。

如何高效盤你的資料科學項目?這裡有一份“避坑指南”請查收

考慮到這一點,AB檢驗則是可以可靠地(如果使用得當)測量特征影響的工具。在這裡,AB檢驗意為實驗設定随機配置設定到對照組和實驗組。然而,有些實驗立刻會對整個城市産生影響,(例如改進排程算法),此時AB檢驗便不能有效進行。對于這類情況,我們的模拟引擎能夠很好地掌控。同時運作多個實驗則是另一個要考慮的複雜因素。

解決方案是建構一個複雜的AB檢驗引擎來跟蹤所有實驗,處理實驗和對照組中的随機配置設定,收集觀察統計資料,并計算出相應的p值。然而,即使是最複雜的引擎也無法解決在實際測試設定中産生的誤差。是以,必須在公司内部共享最佳規範。

10可見度和團隊溝通

團隊越壯大,越要保證所有事情都得到溝通,各方的意見都要照顧到,所有的成員都知道别人在做什麼。

基于各種原因,溝通可見性十分重要:

1. 每個人都應該清楚團隊裡的其他人在做什麼,并且知道該找誰尋求建議或合作

2. 多人做同一個任務時要減少“重複工作”的可能性

3. 共享你知道的資訊(對于非技術領域相關的模型尤為重要,營運團隊可能會有更多專業知識)

4. 雖然聽起來有些反直覺,但溝通的可見性減少了對相同僚件的重複解釋及溝通誤解。

持續的跟蹤和多管道分享進度也是非常重要的,是以我們明确定義了分享工作成果的一些好方法:

1. Slack(企業級溝通工具,Slack 整合了電子郵件、短信、GoogleDrives、Twitter、Trello、Asana、GitHub 等 65 種工具和服務,可以把各種碎片化的企業溝通和協作集中到一起。):項目狀态在相應管道的定期更新。

2. 每周和每月例會:與團隊和幹系人讨論并确定工作優先級。時時刻刻地進行優先級再評估,因為每周一次太慢了。

3. 研究筆記:資料科學家跟蹤項目狀态主要是為了自己,比如重大發現和計劃。 研究筆記是收集主要發現的好方法,以便日後通過其他途徑,幻燈片或會議來分享。

4. 當談到團隊的溝通時,少絕對不比多好。 過度分享通常不是一個大問題,但是分享不足會嚴重阻礙團隊的進步。

11講故事的能力

講故事的能力對于在團隊中工作的資料科學家來說,和掌握過度拟合,或者知道應該選擇卡方檢驗還是t檢驗一樣重要。這包含了向負責人表達和展示成果的能力。你不應該花五分鐘來解釋圖表上的内容及其重要性。

你想說的大部分内容應該很直白地展現在圖表裡,并通過選擇圖形,顔色,圖例,軸标簽來傳達資訊。

12關于作者

如何高效盤你的資料科學項目?這裡有一份“避坑指南”請查收

Maksim Butsenko是Taxify的資料科學家。他的主要職責包括建構資料和機器學習産品,以確定公司的可持續發展,并且幫助收集和推廣團隊和公司内部的最佳資料科學規範。Maksim是從學術界轉行過來的,他有統計信号處理的研究背景。

相關報道:

https://medium.com/taxify-labs/what-they-dont-teach-you-in-machine-learning-courses-53c936ccaacd

如何高效盤你的資料科學項目?這裡有一份“避坑指南”請查收
如何高效盤你的資料科學項目?這裡有一份“避坑指南”請查收

繼續閱讀