摘要: 雖然軟體開發和數據科學有許多相似之處,但它們也有三個主要區別:流程,工具和行為。
雖然軟體開發和數據科學有許多相似之處,但它們也有三個主要區別:流程,工具和行為。
本文重點介紹了數據科學與軟件工程團隊之間在流程,工具和行為方面的主要差異,以及從多年在成功的模型驅動型企業中工作學到的最佳實踐。
1. 為什麼要理解數據科學和軟體開發之間的關鍵差異
隨著數據科學成為各種規模組織的關鍵價值驅動因素,依賴於數據科學和軟體開發團隊的業務領導者需要了解這兩者的不同之處以及它們應如何合作。雖然軟體開發和數據科學有許多相似之處,但它們也有三個主要區別:流程,工具和行為。在實踐中,IT團隊通常負責為數據科學團隊提供基礎架構和工具。由於數據科學看起來與軟體開發類似,因此許多具有良好意圖的IT領導者通過錯誤的假設來解決這個問題,並最終破壞他們試圖支持的數據科學團隊。
數據科學!=軟體工程
1. 流程
軟體工程具有完善追踪進度的方法,例如敏捷點和燃盡圖(agile points and burndown charts)。因此,管理者可以使用明確定義的指標來預測和控制流程。數據科學是不同的,因為研究本質上更具探索性。數據科學項目的目標包括建立預測某些事物的模型,但是像研究過程一樣,預期的最終狀態是不可知的。這意味著數據科學項目在整個生命週期中不會線性發展。數據科學工作沒有商定的生命週期定義,每個組織都使用自己的生命週期定義。研究實驗室很難預測突破性藥物發現的時機。同樣,研究固有的不確定性使得很難跟踪進展並預測數據科學項目的完成情況。
數據科學工作流程的第二個獨特方面是命中率的概念,即企業實際部署和使用的模型的百分比。由數據科學家創建的模型類似於導致銷售漏斗,因為只有一部分將實現。擁有100%可靠性的團隊可能過於保守,沒有採取足夠大膽的項目。或者,不可靠的團隊很少會從他們的項目中產生有意義的影響。即使模型沒有被業務使用,也不意味著浪費工作或模型不好。像一個優秀的研究團隊一樣,數據科學團隊從他們的錯誤中學習並在可搜索的知識管理系統中記錄見解。這與軟體開發非常不同,軟體開發的目的是將所有發展用於特定項目。
工程通常能夠獨立於業務的其他部分運行。工程的優先級肯定與其他部門保持一致,但它們通常不需要每天與營銷,財務或人力資源進行交互。事實上,整個產品管理學科的存在有助於促進這些對話並轉化需求和要求。相比之下,數據科學團隊在與將使用其模型或分析的業務部門密切合作時最有效。因此,數據科學團隊需要有效地組織自己,以實現無縫,頻繁的跨組織溝通,以迭代模型的有效性。例如,為了幫助業務利益相關者就飛行中的數據科學項目進行協作,數據科學家必須能夠輕鬆地與業務用戶共享結果。
2. 工具和基礎設施
開源生態系統的科學數據有巨量的創新資源,包括R和Python的充滿活力的社區,商業軟體封包SAS和H2O,還有像TensorFlow迅速推進深度學習工具。數據科學家應該要能夠在沒有IT瓶頸以及有可能破壞系統的穩定性的情況下,輕鬆測試新的軟體封包和技術,他們需要輕鬆使用不同的語言,以便他們可以為工作選擇合適的工具。當他們切換語言時,他們不應該使用不同的環境或孤島。雖然在實驗階段更好地允許更大的工具靈活性,但是一旦項目進入部署階段,更高的技術驗證條件和與IT的共同努力成為成功的關鍵。
在基礎設施方面,數據科學家應該能夠訪問大型機器,用於運行實驗的專用硬體或進行探索性分析。他們需要能夠在使用最少開發與維運幫助的情況下,輕鬆地按需使用突發/彈性計算(burst/elastic compute)。數據科學團隊的基礎架構要求也與工程團隊的要求非常不同。對於數據科學家來說,內存和CPU可能是他們進步的瓶頸,因為他們的大部分工作都涉及計算密集型實驗。例如,為筆記本電腦上運行需要8小時的實驗編寫代碼可能需要30分鐘。此外,計算容量需求在數據科學項目的過程中不是恆定的,突發計算消耗是常態而不是例外。許多數據科學技術通過並行處理核心工作或將更多數據加載到內存中來利用大型機器。
3. 行為
使用軟體時,有一個正確答案和規定函式的概念,這意味著可以編寫驗證預期行為的測試。這不適用於數據科學的工作,因為沒有“正確”的答案,只有更好或更差的答案。通常情況下,我們會聽到數據科學家們討論他們如何負責將模型構建為產品,或者製作一系列相互依賴的模型來影響業務戰略。與假設數據分佈保持不變的統計模型不同,機器學習中的數據分佈是概率性的,而不是確定性的。結果,它們需要來自最終用戶的持續反饋。數據科學經理通常充當業務線的橋樑,並專注於產出的質量和節奏。評估模型和檢測分佈漂移允許人們識別何時重新訓練模型。數據科學家不是像軟體工程師那樣編寫單元測試,而是檢查輸出,然後從業務利益相關者那裡獲得反饋,以評估模型的性能。有效模型需要不斷重新培訓以保持相關性而不是一組並忘記它的工作流程。
3. 結論
一般來說,數據科學家可以從軟體開發中學習一些好的做法,但也有一些關鍵的區別可以讓人高枕無憂。現代軟體開發所創造的嚴謹和規範是很大的,應該在適當的時候進行效仿,但我們也必須認識到,數據科學家所構建的與軟體工程師根本不同。軟體開發和數據科學過程經常相互交叉,因為軟件可以捕獲數據科學家使用的大部分數據,也可以作為許多模型的“交付工具”。因此,這兩個學科雖然截然不同,但應該相互協作,最終推動商業價值。了解數據科學的基本特性可以為公司在高級領導和IT團隊的支持下建立增值數據科學團隊奠定堅實的基礎。
轉貼自: DATACONOMY
若喜歡本文,請關注我們的臉書 Please Like our Facebook Page: Big Data In Finance
留下你的回應
以訪客張貼回應