自動化機器學習(AutoML) — 以Dataiku為例

從 機器學習工具發展 到 資料科學及AI 普及化

Deborah Deng
17 min readNov 22, 2022
Automatic Machine Learning 或自動化機器學習

不久前跟朋友聊到AutoML,這位朋友對AI應用有著濃厚的興趣,但並不太熟悉技術領域。因此,這段對話讓我想來聊聊這個主題,也希望提供想要更深入了解機器學習或資料科學的各界朋友一些幫助。

什麼是AutoML?

對於這種嶄新的名詞,作者希望引述公開的說明,免得被誤會胡說八道。撰文前搜尋了一下,發現目前AutoML的說明多半是出自提供這項功能的工具或平台 — 例如:H2O的AutoMLMicrosoft的AzureAmazon的AWS等。作者認為AWS說的最清晰,亦完整表述這項功能的背景,翻譯如下:

自動化機器學習 :也就AutoML,移除了機器學習工作流中冗長、重覆及費時的作業 — 從資料擷取到模型營運化,讓你在底層細節中節省時間,將精力專注在如果運用ML來改善業務產出。AutoML工具範圍包括擷取及準備資料、特徵工程、訓練及調校模型、部署模型,以及持續的模型監控與更新。

不過,上述大概比較能觸動「專業建模人士」的心,因為早年沒有什麼建模工具,要建個ML模型就得用程式語言一行一行刻,其中心酸大概只有做過的人才能體會。近年來,建模工具如雨後春筍般冒出,加上建模需求實在遠大於建模人材,因應所謂資料科學或AI/ML「普及化(Democratize)」的浪潮,AutoML這個功能的發展當然是上上之選。我們來看看TechTarget這篇文章對AutoML流程的定義,五項流程分別為:

  1. 辨別相關資料集並為後續分析進行處理
  2. 選擇適當的機器學習類別
  3. 根據選定的演算法建置分析模型
  4. 以測試資料來訓模及調校
  5. 執行模型以產出結果

以上述定義來看,基本上AutoML在原有的建模流程基礎上,想辦法自動化各項作業,讓機器學習建模更有效率、更方便。不過也要提醒,AutoML並不是把所有作業都自動化,同一篇TechTarget文章中也提到可被自動化的步驟如下:

  1. 原始資料處理
  2. 特徵工程及特徵選取
  3. 模型選擇
  4. 超參數優化
  5. 在考量業務及科技限制下的模型部署
  6. 模型評估量值選擇
  7. 監控及問題偵測
  8. 結果分析

文中同時提到了AutoML的優勢及缺點、使用方法等,這裡不想長篇大論,就請有興趣的讀者自行閱讀(不想為英文傷腦筋可用Google Translate)。

AutoML怎麼用?

寫這篇文章主要是給非技術領域的讀者參考,我想最好的方法是用實例來呈現。AutoML的工具其實很多,除了前面提到的H2O、Azure、AWS,還有像Data Robot、Dataiku、Google都有提供。不過作者今年太專注於Data Fabric(見此文),沒有花時間研究各種AutoML工具,所以本文就用作者目前最熟悉的Dataiku DSS來做個AutoML的示範。

接下來的內容會用Dataiku Academy中的Business Analyst Quick Start(BA快速入門)課程案例來說明,基本上是建立一個客戶流失偵測預測模型。原廠網站可以免費註冊及下載Dataiku DSS,目前有提供Community版,也可以試用14天的Enterprise版或線上版,想動手玩玩的讀者可利用一下。另外因原廠尚未有中文版,Dataiku的中文說明可參考這裡

以下我們在BA快速入門課程的基礎上,專注於「特徵工程/選取」及「超參數優化」來說明AutoML的功用;在Dataiku完成的模型流程如下圖:

Project flow in Dataiku from BA Quick Start lesson
Dataiku 「BA快速入門」課程模型流程(Flow)

特徵工程及選取(Feature engineering & selection)

所謂「模型特徵」就是一個數學模型中需要納入的變數。用小時候學過的多項式函數來說,預測模型其實類似 y=x1+x2+x3+……;就客戶流失案例來說,x1、x2、x3……可代表購買次數客戶年齡客戶性別等變數。不過,並不是每種特徵都對預測目標值(y)有幫助,而特微的選擇自然成為建模過程中的一大關鍵。再者,想像一個預測模型收集了上千上百個欄位做為特徵,建模時很難以試誤法(Trial-and-error)的方式步步手動實驗;當然,這時就要讓好朋友 — 數學電腦科學 — 來協助,也就有了所謂「特徵工程」的出現。

先介紹手動特徵選擇,這個階段通常是透過不同的特徵組合來了解其對目標值的影響,以決定哪些特徵應保留、哪些可以排除。先看看在下圖Dataiku模型設計介面中的操作方式:

Dataiku模型設計中Feature handling介面 — 連續型變數

在Feature handling選項中列出建模資料集的所有變數,並標註了目標變數(Target variable) — churn(客戶流失與否);其他變數(欄位)則可由使用者根據前面的探索分析、領域知識自行選取。以前這樣的作業通常就用Copy和Paste程式碼來改一改,另外再用筆記本或Word記錄,現在有工具是方便很多。

另外,想了解某變數的值域分配、空值或錯誤值,過往也是程式一行一行寫,再應用到各個變數;Dataiku的自動化介面讓使用者點選某一變數後,在右方立即顯示該欄位的基本資料及可選擇的資料處理方式 — 可見上圖點選的GDP_cap為數值欄位(連續型變數)。另外,投入模型前一般會以標準化來處理,也就是用該變數的平均數及標準差將每個樣本值轉換在0與1之間。過往這樣的功能也是要手動刻,現在的AutoML工具則提供「一鍵到位」,也就是圖中的「Rescaling」選項 — Standard rescaling。雖然不是什麼高深學問,但在早年這些功能都是一行一行燒腦寫出來,太久沒寫會忘記,翻閱手冊和Google搜尋、理解及試錯都會花去不少的時間。

對於非連續變數而言(Categorical or Binary variables),處理方式也不同,通常每個值都要轉換為虛擬變數(Dummy variables) — 也就是讓每個類別值都轉換成獨立的Yes/No欄位,如是否在北美、是否在亞洲等。如下圖的ip_continent(IP Address所在的洲別),7個值要轉成6個虛擬變數。有了這種AutoML工具,建模真的是方便非常多。另外還有缺值(Missing values)的處理方式, 也是從下拉選單選取即可。

Dataiku模型設計中Feature handling介面 — 非連續型變數

講到這裡,其實不難發現,只要把經常重覆而無法產出太大效益的作業,運用程式邏輯來取代,進行一些軟體工程,基本上就能夠自動化產品化;再進一步若能使用數學模型,就變成AI啦!分析工作流程所產出的價值,即是「價值鍊分析(Value Chain Analysis)」,是組織進化到AI的重要步驟。

以上是基本的「特徵選取」,接下來進入進階的特徵工程:「特徵產製(Feature Generation)」與「特徵降維(Feature Reduction)」。

特徵產製是將前述選擇的特徵,進行進一步的加工;如下圖:

選項中有3個功能:Pairwise linear combination是將特徵A和B,用A+B或A-B的方式產生新的特徵;而Pairwise polynomial combination則用A*B產生;而最後一個Explicit pairwise interaction則可指定產製新特徵的組合。這些功能的目的在於找到特徵間的交互作用,希望運用新特徵找到變數間複雜的依附關係來提升準確率。以前專案內進行貿易成長預測時,用這個方法讓準確率取得了超乎預期的成果。不過缺點是這些特徵組合很難用來解釋對模型目標值的效應。

特徵降維則是利用一些方法減少特徵值,因為過多的特徵變數可以讓模型預測失準。下圖可看到Dataiku羅列了一般降維的方法,如與目標值的相關性、主成份分析及Lasso regression(也就是Regularizaion)。不過要理解每個選項的意義就話長了,文末會列出一些線上課程提供參考。

超參數優化(Hyperparameter Optimization)

AutoML的一大好處就是超參數優化了 — 也就是找出模型建置的最佳參數。每一種模型的演算法原理都不同,應用在每一種問題時情況也不同,找到最佳的超參數也就找到了最佳的模型了。而每種模型的超參數都不同,R的Caret package是早期的AutoML套件,其中列出238種模型及其參數。讓讀者比較有感,這裡用Dataiku展示隨機森林(Random Forest)模型的設定介面如下圖:

可以看到介面中可設定:決策樹數量、最大深度、最小樣本等。如果是手動作業,用R或Python來寫,在函數中就要一一鍵入了,或是寫迴圈一一嘗試。後者即是所謂的搜尋法,Dataiku也列出了常用的三種方式:Grid Search、Random Search及Bayesian Search如下圖:

Grid Search比較簡單,基本上就是各種組合都試,最後比較結果選出最好的;但超參太多的話速度就很慢,所以有其他的方法。此外還有交叉驗證(Cross-validation)的選項,用重複取樣實驗的方式確保模型建置的公正性,避免取樣時的偏頗;最常用的是圖中列出的K-fold。

打破AutoML的迷思

近年AI/ML的需求大幅提升;但似乎很多人對AI/ML及自動化有著偏離現實的期望。 本節將以客戶流失預測模型經過4次的實驗後的結果說明一些AutoML的能與不能。下圖是Dataiku的模型結果介面,左方的4個長方形分別羅列4次實驗的各模型結果,圖中點選的是最後一次實驗(Session 4),而右方則展示該Session中的各模型結果及運算效能等。

Dataiku建模結果介面 with Session 4 細節

如前節所描述的各項功能是在訓模階段進行各式實驗探索時,透過AutoML工具來達到省時省力的目標;也因為如此,作者在規劃本文選寫內容時,輕輕鬆鬆就用「特徵產製」功能,把原有結果多跑了2次得出結果,這是AutoML的優點。但是實務上這些實驗需要被設計,也需逐步因應訓模結果的判讀來修改,但流程中的解讀和判斷就不是AutoML能幫忙解決的了。

以上圖的4次實驗結果來看,最佳模型一路都是XGBoost,準確率維持在99.1%。但有趣的是 — Session 4的Random Forest從98.1%的準確率提昇到99.0%。說實在,99.1%和99.0%基本上差別不大,說實在與98.1%也差不多,統計上說是在誤差範圍內。雖然Dataiku把「奬盃」頒給了XGBoost,但不禁要問XGBoost真的是較好的選擇嗎?如果建模的目的只是為了產出最精準的預測,如此倒是沒什麼;但若要深入探討哪些特徵對客戶流失造成最大的影響,進而思考因應措施,這時就需要檢視建模結果的細節了。下圖是納入上述「Sesson 4:納入Pairwise combination特徵」的XGBoost結果:

從Variables importance中可見前三項特徵為:

  • Price_first_item_purchased + GDP_cap
  • Campaign is false
  • Age + GDP_cap

再檢視同一Session中的Radom Forest結果如下圖:

而這裡的前三項特徵為:

  • Price_first_item_purchased + GDP_cap
  • Price_first_item_purchased + high_gdp_cap
  • Price_first_item_purchased + age

這兩個模型都說明由「第一次購買物品的價格」和「GDP per Capita」組合而成的特徵影響力頗高;但如此組成的特徵對「客戶流失」與否來說,又該如何解釋呢?另外,準確度都是99.1%,真的需要用這樣的「組合特徵」嗎?讓我們來看看讓模型複雜化之前的結果,也就是尚未使用任何特徵產製的Session 2 — 最佳模型XGBoost結果如下圖:

前三項特徵為:

  • GDP_cap
  • Price_first_item_purchased
  • Campaign is false

進一步思考,兩個XGBoost的準確率都是99.1%,但重要特徵卻不同;而Random Forest在幾項實驗中,從98.1%逐步提升至99.0%,與XGBoost匹敵。為什麼Random Forest能逐步提升準確率,而XGBoost維持平盤但選擇了不同的特徵呢?當然最終的問題是:面對這麼多個模型,倒底該選哪一個呢?

其實這些問題就是個無法依賴AutoML來選擇的「議題」了。就隨機森林而言,其演算法是靠隨機抽取特徵來建立一片決策「森林」,再靠投票來決定最終結果,前三項特徵中皆有「第一次購買物品的價格」。利用名列前茅的各模型來看,GDP_cap皆入選、Campaign is false(未納入行銷活動)也入選於兩個XGBoost中;由此可推論Session 2的結果已經不錯了,在準確率相同的基礎下,或許不需要過分複雜化的模型。另考量XGboost的原理是強化原本較弱的特徵,或可解釋Campaign is false入選XGBoost卻非Random Forest的原因;同時,「行銷活動」與「客戶流失」之間的關係可從常理推論。因為各Session的準確率差別不大,而XGBoost一直穩定獲勝,且建模的潛規則告訴我們 — 簡單就是美!作者認為Session 2的結果就可以了,實在不需要過份複雜化。

想表達的重點是:雖有AutoML,但現階段仍有很多事需要依賴「人」來完成,例如前述的模型判讀困難與決擇。AutoML是基於原有機器學習流程,利用程式編寫或軟體開發來簡化部分繁瑣費時的作業,讓建模花費的時間、精力能更專注於各項「機器」無法完成的項目上,達到省時、提升效率的目標。不僅讓「獨角獸」的AI/資料科學人才能夠發揮更大的效用,也能縮短非建模人才與機器學習的距離,讓建立組織內的資料科學團隊更容易。

希望以上內容對讀者們了解AutoML及機器學習建模的流程有些幫助,之後會陸續分享與AI、資料科學有關的文章,有興趣的讀者可Follow我。感謝您的支持。

後記

上述案例是為了撰寫本文而做的,把「BA快速入門」課程的結果加入Feature Generation多跑了兩次,竟然出現有趣的現象,真是大出意料之外呀!不過,通常會去玩Feature Engineering是因為準確度不夠;建模、調校花的時間也是成本,除非有特殊要求或重要效益,一般不會硬要去追求那1%的進步。另外,對模型的解釋作者也並未花太多時間研究,僅憑Gut feeling — 如有繆誤請多見諒,也歡迎留言指教。

對於「自動化」這回事,也想稍稍分享些經驗。幾年前回台灣後加入了承接專案的公司,在預算吃緊、人力缺乏的狀況下作者也曾主導過一項AutoML的模組開發 — 為ARIMA模型優化參數。其實想要把流程模組化或「產品化」也不是那麼困難,只要能發現高度「重覆性」的「作業」,基本上就可以思考「產品開發」來節省寶貴的人力了。雖然產品並未問世,但原始的程式模組讓我們從花幾週手動建置1個模型,演變成幾小時內自動化建置幾百個模型,包括前端的資料收集、處理、參數優化及結果呈現等。不過,現在坊間各種的套裝軟體、平台,可又比當時開發的小模組方便多了;這也是工業化、工業革命的一環,未來的企業環境想要有競爭力,大概要好好思考如何投入成本後規模化、AI化。

最後想提供想從事建模分析、資料科學的讀者們一些建議:近年的Data Science或AI Democratization(普及化)浪潮,類似Dataiku的這類建模工具、平台紛紛出爐,讓不擅長寫程式的人也可輕鬆作業。點一點、按一按或可滿足一些對高科技的期待,但最終還是需要回歸專業;數學、統計及電腦科學是人工智慧/機器學習發展的基礎,忽略了這些理論很可能將模型建置變成與丟銅板無異。該選擇哪些特徵投入模型?隨機森林為什麼要決定深度(depth)?SVM的Kernel選項代表何意義?試了好多模型準確率都提升不上來,怎麼辦?這些都是在建模過程中需要評估及作出判斷的,如果無法理解背後的理論而無腦選擇,在建模時是無法解決困難的。

或許未來有一天這些事情AI都能解決,但是又會出現另一道難題:AI會取代人類嗎?無怪乎這兩年關於Responsible AI、Explanable AI等話題升温。作者認為,不論科技如何發展,想要正確使用科技,首先需要正確理解科技,才能妥善地讓科技來解決人類的問題。

某天突然想到一些古老技術的失傳,現在想想技術的發展會不會反而讓人類的後代失去思考能力?前人種樹,後人乘涼,但後人却再也不知道如何種樹了!AI發展下去,會不會也變成這樣了呢?

#AutoML #DemocratizeDataScience #Dataiku #AI #MachineLearning

參考資料

  1. H2O AutoML
  2. AutoML on Microsoft Azure
  3. AutoML on Amazon AWS
  4. DEFINITION: automated machine learning (AutoML), Ben Lutkevich, TechTarget SearchEnterpriseAI
  5. The caret package — 6. Available Models, Max Kuhn 2019–03–27 (R autoML package)
  6. The Full Stack Data Scientist: Myth, Unicorn, or New Normal?, Nisha Talagala, Forbes
  7. Stop searching for that data scientist unicorn, Vivian Zhang, InfoWorld
  8. Dataiku DSS 中文說明 — 資拓宏宇(IISI Group)

資料科學線上課程建議

Stanford University on coursera.org

John Hopkins University on coursera.org

University of Illinois at Urbana-Champaign on coursera.org

Udemy.com

--

--

Deborah Deng

Data scientist, decision analyst, operations researcher. Want to share how to use data wisely to produce desirable results.