不寫 code 也能做 ML ? - Azure Machine Learning Studio 介紹

Ashe Liao
Ashe’s tech talks
11 min readMay 31, 2019

第二篇教學文章更新囉! 第二篇文章使用兩種分類算法來預測生存率,有興趣的朋友可以點這邊查看

Azure Machine Learning Studio,是 ML 初學者的好用工具之一。因為完全不用寫程式,透過簡單的拖拉方式就能直接調用 Studio內建的模組做機器學習,大幅降低了學習門檻。

以下我們將簡單介紹如何在 Azure 平台上使用 Azure Machine Learning Studio,並實際示範一個範例。

# 手把手教學 — 環境設定

首先,請登入 Azure Portal,並點選左側的 Create a resource 後輸入 Azure Machine Learning Studio Workspace

點選建立後,填寫以下資訊。需注意在啟用 Machine Learning Studio 時,會同時啟用一個 Azure Storage 來儲存所有資料。Azure Storage 啟用後,會在同一個資源群組中,請不要更改任何金鑰、移動位置或刪除,將導致整個服務停止運作。

[以下為官網資訊]
Machine Learning Studio 依賴您提供的 Azure 儲存體帳戶,才能在執行工作流程時儲存中繼資料。 建立工作區之後,如果儲存體帳戶遭到刪除,或存取金鑰變更,工作區會停止運作,並且該工作區中的所有實驗將會失敗。
如果您不小心刪除儲存體帳戶,請使用與所刪除儲存體帳戶相同的區域中的相同名稱來重新建立儲存體帳戶並重新同步存取金鑰。 如果您變更了儲存體帳戶存取金鑰,請使用 Azure 入口網站在工作區中重新同步處理存取金鑰。

建立成功後,可以在右上角看到提示,點選提示可進入 Machine Learning Studio 的工作區。

點選 Additional Links 中的 Launch Machine Learning Studio,就可以跳轉到 Machine Learning Studio 。如果還沒有登入過 Machine Learning Studio,這邊需要登入,登入後點藍色的 my experiments 就可以開始使用 Machine Learning Studio 囉!

#手把手教學

在這個範例中,我們將使用一個經典的資料集 — Telecom Churn,Kaggle 上有非常相似的資料集和競賽,我們將透過這個資料集的顧客行為模式來預測顧客最後是否會跳出合約(轉約)到其他間電信公司,這次使用的資料集請於此處下載。

針對此種二元分類問題,Machine Learning Studio 根據資料多寡和模型特性,有許多可以使用的模型。除了分類問題外,Machine Learning Studio 也可以解決回歸、多元分類、分群甚至異常偵測。

總的來說,有許多模型可以使用,官方也有一篇教學文章在討論如何選擇適合的演算法,也有提供 cheat sheet 可以查看。

回到這次的示範,我們首先要在工作區中先建立一個實驗,點擊左下角的+號就可以新增一個 Blank Experiment。

Machine Learning Studio 提供了拖拉式的模組,透過模組間的相互作用,就可以達成訓練模型並預測結果的目的。講左側的模組拖拉到右側類似 Workflow 的流程圖上,就可以一步一步建立起機器學習的模型。

一般來說,要建立機器學習的步驟共有以下幾點:

  1. 匯入資料
  2. 選擇要使用的 Columns
  3. 清理資料
  4. 資料前處理(資料型態轉換)
  5. 切分資料為訓練及測試資料集
  6. 匯入模型
  7. 訓練模型
  8. 評分模型
  9. 評估模型(和評分模型的不同之處在於,評估模型會計算出該模型的MAE / RMSE 等值,提供更直觀的模型評估方式)

以上 9 點,都可以透過 Machine Learning Studio 的模組來進行操作,完全不需要寫程式。

點擊下方的+號,再點選 Dataset,就可以從本地端匯入剛剛下載的資料集

上傳完畢後,就可以在左側的選單中依序點擊 Saved Datasets > My Datasets > 剛剛上傳的資料集,並將該資料及拖拉到右側的流程圖中。

至此,我們就完成第一步的匯入資料了!

接著,我們要對資料進行一系列的選擇和前處理,首先我們要先選擇需要用的 columns。要處理特徵選擇的問題,已經有非常多“挑變數”的方法(Lasso / RFECV…),但由於這邊文章是以 ML 新手的角度出發,我們將直接用手動選擇。未來如果有機會,會再寫一篇以 Azure Machine Learning Service 和 Azure notebook 配合的深入介紹。

要選擇變數時,在左側的搜尋頁面中輸入 Select Columns in Dataset ,並將這個模組拖到右側的工作流程圖中。

拖拉到定點並把兩個模組連起來後,會發現新拉過來的模組右側出現一個紅色的驚嘆號。這個驚嘆號就是在提醒我們還有參數沒有填入,以這個模組來說,就是還沒有填入我們想要的變數有哪些。

因此,請點選右邊的 column selector 來選擇需要的欄位,column selector 也提供了根據變數資料型態來選擇變數的功能,例如只選擇數字型態的欄位。

我們使用手動選擇變數欄位的方式,只有剩下一些亂數資料和無關緊要的年月日不選擇,其他全數選擇,接著按右下角的勾勾就設定完成這個模組了。

數年的統計學訓練讓我學會一件很重要的事情,千萬不要小看任何一個變數的影響力。由於是初學者教學,我們只使用手動選擇的方式,但這樣其實是非常危險的,還是要使用一些統計學方法來協助我們選擇變數,盡可能排除人為的影響。

接著,我們要清理資料中的缺失值,同樣的在 Machine Learning Studio 上也有模組可以直接套用,在左側選單中搜尋 Clean missing data,並把該模組拖到右方的流程圖中和上一個模組接上。

右側的選單可以微調缺失值的定義以及補上的方式,可以用平均數 / 中位數 也可以直接填入想要的值,填補的欄位和方式我們按照預設的選擇,不需要更動。

接著下一步是資料型態轉換,傳統上在做分類問題時使用的隨機森林有個缺點,資料型態必須是 numeric 的值才有辦法餵入模型,因此在 Notebook 上常常要做一系列的資料型態轉換。

但在 Machine Learning Studio 中有一個神奇的功能,Edit meta data。這個模組可以自動把選定的欄位轉換成 category 的資料,就不需要再做複雜的資料型態轉換,可以直接以類別資料型態餵入模型,是相當方便的功能。

在左側選單中搜尋 Edit meta data,拖到右側的流程圖中和上一個模組接上後,在右側按下 Launch column selector,並按照下圖選取要轉成類別型態的欄位。

接著繼續設定資料轉換的型態,分別在 Categorical 選擇 Make categorical 以及 Fields 選取 Features,設定完成應該如下圖。

完成資料清洗和型態轉換後,下一步就是切分資料集為訓練資料及及測試資料集。

在左側選單搜尋 Split data,拖到右側的流程圖中和上一個模組接上後,在右側選單按照下圖設定。我們設定了百分之 70 的資料屬於訓練資料集,下剩的屬於測試資料集,並且按亂數來切分。如果要確保每次切分的結果相同,可以設定 Random seed 參數為一個不為 0 的正整數。

Random seed for sampling: Optionally, type an integer to use as a seed value.This option is important if you want the rows to be divided the same way every time. The default value is 0, meaning that a starting seed is generated based on the system clock. This can lead to slightly different results each time you run the experiment.

切分完資料集後,就可以引入我們想使用的模型了!

由於我們最後要預測的是[0, 1]分類的二元分類問題,我們將使用內建的 Two-Class Boosted Decision Tree,也有許多精巧的機器學習模型像 Light GBM 以及 XGboost 可以透過匯入的方式在 Studio 中使用。

在左側選單中搜尋 Two-Class Boosted Decision Tree,並拖入右側流程圖。

把模型引入後,就可以開始訓練模型,在左側選單中搜尋 Train model並拖到右側的流程圖中,按照下圖方式連接。

接著,在右側選單點選 Launch column selector。因為我們要預測的目標欄位是客戶是否流失,也就是 churn 這個欄位。因此,我們在 column selector 中選擇 churn。

按下右下角的勾勾後,就可以發現原先的紅色驚嘆號已經消失,也就代表我們已經設定完成這個模組。

接著,我們需要評分訓練完畢的模型,在左側選單中搜尋 Score model 並按照下圖方式連接。

這樣的連接方式代表我們將訓練資料集所訓練出的模型,利用測試資料集的資料做預測,也就會有兩條線連接到 Score model。

評分完畢後,最後一步就是將模型進行最後的評估。左側選單中搜尋 Evaluate model,拖到右側按照下圖方式連接後,就完成所有的設定了!

以上,經過九個模組的設定後,我們終於完成所有前置作業,最後再按幾個按鈕,就可以讓整個服務 run 起來囉!

按下下方黑色選單的 Save 先進行存檔,接著再按下 Run,整個服務就會開始進行運算,畫面則會變成下圖的樣子。

運算完畢後,會回到原本的畫面,流程圖的右上角會有一個綠色的勾勾,每一個模組也都有綠色勾勾,代表所有模組都運算完畢。

如果接下來有更動或加入任何一個模組,請記得都要再進行存檔以及重新 Run 一次。

接著,請對最後一個 Evaluate model 模組按下右鍵並依序選擇 Evaluation Results > Visualize,就可以看到模型最後的預測結果。

上圖就是透過 Studio 所計算出的結果,包含美美的ROC曲線、混淆矩陣、Accuracy / Precision / Recall 以及最後的 F1 score。甚至可以看到預測資料型態的分佈。

如果要看每一筆資料的預測結果呢?在上一個模組 Score model 按下右鍵並依序選擇 Evaluation Results > Visualize,就可以看到每一筆資料的預測結果。

# 結論

以上,我們透過 Azure Machine Learning Studio 示範了電信客戶流失率的資料集,透過 Studio 強大的機器學習服務預測了客戶是否會流失。

但 Studio 的功能只有這樣嗎?下一篇文章,我們會教學如何把訓練完的模型部署成 Web Application,讓任何人都可以使用你的模型!

如果你覺得這系列的文章對你有幫助的話,請不吝拍手或留言,你的支持是我寫 Medium 的最大動力。

--

--

Ashe Liao
Ashe’s tech talks

Azure Solution Specialist, Microsoft Taiwan | Microsoft 15th MTC TAI | NTU BDSRC RA, DSSI TA