打造你的機器學習團隊:三種模式和角色分工

原文: How to Structure a Data Science Team: Key Models and Roles to Consider

(這篇不見得全面,但是也是一個不錯的總結和思路,對創業公司和傳統IT公司值得思考,尤其是考慮到目前有經驗的機器學習人員很難招到的情況)

  • 機器學習是Data Science的一部分,但國內常常把機器學習單獨提出來說,所以文中所說Data Scientist(數據科學家)可理解為機器學習專家, 標題也把Data Science改成了狹義一些的"機器學習"
  • 文中大量使用「data science and predictive analytics",其實就是指機器學習的意思,所以全部用機器學習替代

如果你一直在遵循數據科學和預測分析領域的「專家意見」,那麼你應該已經根據他們的建議開始使用機器學習技術。如同James Hodson在How to Make Your Company Machine Learning Ready所總結,聰明的做法是使用已經成熟且容易實現的方案("low hanging fruit"),再逐漸針對複雜的任務深入解決。

最近我們討論過machine learning as a service (MLaaS)平台。這個趨勢的核心內容其實很簡單:機器學習對於中小企業來說已經變得很容易上手,因為它正在向可出售的商業產品轉變。行業的領導者如Google/Amazon/Microsoft等等,都在提供API和平台服務去運行較基礎的機器學習操作,而不再要求使用者去搭建私有的架構或擁有深入的數據科學經驗。實際上,對於早期階段,使用這些精簡的方案往往是最好的選擇。在需要處理分析的規模擴大後,如果需要提高效率,團隊架構可以再進行調整。

那麼問題來了:如何進行這種漸進的團隊調整呢?這就是本文要講述的:機器學習(數據科學)的不同團隊架構和各自的問題。


團隊的主要架構

在開始組建團隊進入機器學習領域時,需要在團隊結構上清晰定義幾個關鍵階段:如何啟動、如何維持、長期如何擴展。針對這幾點,我們可以引入三種基本的團隊架構,各自對應在機器學習團隊發展的不同階段:

- 以現有的開發人員為中心的模式

很多時候,直接招聘一個有經驗的數據科學家並不是一個可行的選項,而你必須考慮如何把現有的開發人員投入到機器學習應用上。這個時候,核心角色是一個能把商業需求轉化為數據分析目標的角色(business translator),通常的職位可以是Chief Analytics Officer (CAO) 或者 Chief Data Officer (CDO)。 實際上CDO現在變得越來越多餘,因為大量數據處理工作的重心都轉向了預測分析(Predictive Analytics)。總之,這個角色應該能負責啟動整個團隊,我們後面再仔細談論這個角色的工作。

所有剩餘的工作如數據清洗、模型訓練、用戶界面開發及模型部署等,實際上都能讓現有的開發人員去完成(前提是你的公司有一個完整的全職開發團隊)。這種方式所能做的事情其實局限很多,但是可以用前面提到的各大公司的機器學習服務去克服。類似Azure或者Amazon所提供的機器學習服務已經擁有了可用的用戶界面來完成數據清洗、模型訓練、評估、及部署等整個工作。

比如說使用Azure機器學習平台,已經為用戶提供了詳盡的文檔來達到一個很低的使用門檻,這使得即便你沒有一個數據科學(機器學習)專家,你也能快速完成模型訓練和部署。

然而在另一方面,機器學習服務平台也在可選擇的演算法方案和費用上暴露了他們的局限。所有的操作,從數據清洗到模型評估,都有不同的價格。考慮到機器學習模型的訓練次數很難提前準確預估,使用這些機器學習服務平台往往會很難預計最終成本。

優點:

  • 充分利用並提升現有開發資源
  • 相關計算架構的提供和維護由外部服務負責
  • 現有的技術專家可以通過訓練來充分發揮在機器學習領域的潛力
  • 減少管理成本
  • 降低投放市場的事件(通過使用相對簡單的機器學習方案)

缺點:

  • 機器學習平台只能提供有限的機器學習方案和數據處理過程
  • 模型的訓練、測試和預測都需要付費,而且難以預先估算準確具體費用

- 整合模式

在整合模式中,一個數據科學(機器學習)團隊專註於數據處理和模型訓練,開發人員負責部署模型的介面和整體架構。而將機器學習專家和開發人員合併在一起,是能保證穩定性和擴展性的最可行方式。

和以開發人員為中心的方式不同,整合模式要求在一個團隊中必須擁有一名精心挑選(招聘)的有經驗的數據科學家,這能確保在可用的技術方案上有更好的靈活性。這樣,在那些端對端但限制頗多的機器學習服務之外(如Azure/Amazon所提供的),你就可以使用更高級和深入的機器學習工具和應用框架如TenforFlow或Theano等,而這些工具都是為擁有數據科學背景的研究人員和專家所設計的。當有這樣的專家存在時,你就可以開始考慮處理更深入和具有針對性的商業問題,並在使用那些機器學習服務平台和定製的機器學習方案之間做出選擇。

優點:

  • 充分利用和提升現有的開發資源
  • 數據科學家可專註於創新型的工作
  • 充分發揮機器學習服務平台和定製方案的潛力
  • 從一兩個數據科學專家開始,可以帶動並培養已有的開發人員也成為該領域專家
  • 使用定製的集成模型(ensemble models),往往可以帶來更好的預測結果

缺點:

  • 定製的機器學習方案需要建立對應的計算平台架構
  • 跨領域的管理需要相當大的努力(管理不同領域的人員更費力)
  • 招聘數據科學(機器學習)人才需要相當大的成本(包括時間成本)
  • 如和留住人才

- 專門的數據科學(機器學習)團隊

為了減少管理開銷,並搭建一個通用的機器學習框架,你可以讓整個機器學習的工作流程由一個獨立的團隊或部門來完成。這種方案帶來最高的成本:所有工作,從數據清洗、模型訓練到搭建前端界面,都由一個專門的機器學習團隊來完成。這並不是說所有的團隊成員都必須擁有相關的數據科學或機器學習背景,但是他們應該擁有相關的技術架構(technology infrastructure)和服務管理技能。

一個專門的團隊組織能有效幫助處理複雜的數據科學工作如原型研究,使用多種模型完成不同目標,以及對大型企業不同商業部門的需求提供不同機器學習服務等等。

優點:

  • 集中管理並提高處理問題的能力
  • 充分發揮機器學習服務平台和定製方案的潛力
  • 對不同的商業部門的複雜需求進行深入分析並提供針對性解決方案
  • 擁有完整的數據科學研究環境以提供創新
  • 更容易擴展壯大

缺點:

  • 需要搭建並維護一套複雜的計算架構
  • 在數據科學(機器學習)人才方面需要極大投入
  • 如何留住人才

無論是採用哪種結構,找到合適的數據科學(機器學習)人才是關鍵。那麼,到底你的團隊需要哪些角色呢?


數據科學(機器學習)團隊的不同角色

首先我們來談一下數據科學家的技能表。很不幸的是,「數據科學家」這個詞的定義,在近年來變得越來越模糊。自從數據科學(機器學習)成為媒體焦點之後,對數據科學家的技能定義就從來沒有統一過。Matthew Mayo (KDNuggets的數據科學家及副總編輯)說過:

「當我聽到數據科學家這個詞時,我總是傾向於想到獨角獸(萬能的角色)以及他們的無所不知,然後我就會意識到其實他們並不存在。實際上數據科學家在不同的組織中擔任著很多不同的角色,並且在商業、技術、人際管理、交流及業務技能等多方面處於不同位置「。

確實如此,實際上很難找到這樣無所不知的獨角獸,但是我們是可以在團隊的數據科學某方面的專家中培養這樣的人員。在AltexSoft(原作者公司),他們這樣定義對數據科學家的技能表:

記住,即便是在上面這個虛構的技能表中,職業的機器學習專家也有他們的核心技能,這是在分配團隊任務時需要考慮的。在絕大多數情況下,招聘相關人才後,也需要根據他們背景進行進一步訓練提高。

然而人員和角色是兩個不同概念。比如說,如果你是一個整合模式的團隊,那麼一個人可能會擔任多種角色。所以下面我們先不管你具體有多少人員,而把注意力放在「任務角色」上。

Chief Analytics Officer/Chief Data Officer

在我們最近的Machine Learning: Bridging Between Business and Data Science 這篇文章里,我們大致地討論了這個關鍵的領導角色。CAO,或者說是商業需求介面人,是把數據科學和業務經驗整合到一起的願景和技術的帶頭人。

技能需求:數據科學(機器學習),編程能力,業務經驗,領導力和視野

數據分析人員(Data Analyst)

這個角色意味著對數據的收集和解釋工作。一個該領域專家需要確保所收集的數據的有效性和覆蓋面,同時也要負責對分析結果的解釋。部分公司如HP或IBM,也要求數據分析人員具有可視化分析技能,將各種數值通過圖像方式變為便於理解的內容。

技能需求:R, Python, Javascript, C/C++, SQL

商業分析人員(Business Analyst)

商業分析人員通常在具體運作上實現CAO的功能,也就是把商業需求轉變為數據分析。如果你的主要數據科學家缺乏相關的業務經驗,那麼商業分析人員則可彌補這一點。

技能需求:Data Visualization(數據可視化),Business Intelligence, SQL

數據科學家(Data Scientist)

數據科學家是一個使用機器學習和數據挖掘技術來解決商業需求任務的人員。如果這個定義還是太混亂,那麼我們可以再狹義一點將其定義為完成數據預處理、清洗、模型訓練和評估等工作。

技能需求:R, SAS, Python, Matlab, SQL, NoSQL, Hive, Pig, Hadoop, Spark

數據架構師(Data Architect)

這個角色對於在海量數據(大數據)上完成工作至關重要。如果你不是單純依賴於第三方的機器學習雲平台,這個角色的重要性覆蓋於多個方面包括數據倉庫的處理,定義資料庫架構,中心化數據,以及多個數據源的整合等等。對於大型分散式系統和大數據集,這個角色也要負責性能方面的工作。

技能需求:SQL, NoSQL, XML, Hive, Pig, Hadoop, Spark

數據工程師(Data Engineer)

工程師需要去實現、測試和維護數據架構師所設計的數據架構各個部分。實際上,數據架構師和數據工程師的角色可以合併由同一人完成。他們的技能樹非常相似。

技能需求:SQL, NoSQL, Hive, Pig, Matlab, SAS, Python, Java, Ruby, C++, Perl

應用/數據可視化工程師(Application/Data Visualization Engineer)

基本上,這個角色只適用於上述團隊架構中的第三種,也就是專門的數據科學(機器學習)團隊。在其他架構的團隊中,普通的開發工程師可以去實現將機器學習的結果在具體的應用中呈現給用戶,並且很可能對應的應用開發工程師或者其它負責前端開發的人員會負責數據可視化的工作。

技能需求:programming, Javascript(for visualization), SQL, NoSQL


團隊的搭建和擴展

在招聘數據科學專門人才中,除開人員的匱乏之外,最大的問題就是人員的高薪問題。根據2016年的報道,相關職業薪酬的中位數在$87,000,而在美國則是$105,000,當然這根據具體地區、技能、公司大小、行業和教育程度而定。而即便你決定無論如何要招聘有經驗的,那麼還要面對人員的投入程度和留存問題。

另外,這種高需求和技術上的好奇心(Intellectual curiosity),也讓各個公司讓數據科學人才專職於各種創新探索性項目。基於這些原因,第一種以現有開發人員為主的模式在應用機器學習的初期是一種可靠的方式。這樣現有的工程師可以通過使用第三方的機器學習服務來獲得一些數據分析技能。

克服人員匱乏和預算限制的方式是開發一個可用的機器學習平台,然後讓工程師來繼續完善和擴充。即便沒有專門的數據科學專家,一些組織也克服了障礙,通過和教育機構建立合作關係來實現目標。


要注意的關鍵問題

這裡有兩個關鍵問題要注意:

1. 商業負責人需要認同對於機器學習的投資是有意義的

2. 即便他們認同並理解機器學習的價值和市場需求,他們仍然可能缺乏相關的技術能力和資源來讓具體產品落地

這些障礙通常來自於公司內部文化問題。高效的數據處理流程迫使公司高層(C-level executives)擁抱扁平化的決策機制:能直接處理數據結果的一線管理人員則有了更多的自由來做出數據驅動的決策,而高層管理則偏向戰略性工作。這就減少了管理成本並最終減少了憑感覺(拍腦瓜)的商業冒險行為(gut-feeling-decision)。基本上,這種文化的切換決定了是否最終能建立一個數據驅動的公司。如麥肯錫公司所說(Digital transformation: The three steps to success ), 建立文化是最難的部分,其他的都好說。


推薦閱讀:

機器學習入門筆記2
國內外深度學習開放數據集下載集合(值得收藏,不斷更新)
北大訪問一天
朋友,千萬不能錯過!13個自然語言處理的深度學習框架
機器學習基石筆記2:感知器學習演算法(PLA)

TAG:機器學習 | AI技術 | 數據挖掘 |