不會寫程式也能做! 以 Azure Machine Learning Studio預測鐵達尼號乘客生存率

Ashe Liao
Ashe’s tech talks
10 min readJun 4, 2020

這篇教學文章是 Azure Machine Learning Studio 系列的第二篇文章(第一篇請點我)。希望透過類似的流程,但使用不同的資料集讓大家熟悉二元分類模型的使用方式,下一篇文章開始會使用回歸演算法來預測一些連續值。

資料集介紹

鐵達尼號乘客生存率資料集,是資料科學平台 — Kaggle上歷久彌新的資料集,從開放資料及至今已經超過20000組團隊參與預測,是非常適合新朋友的資料集,可點此處查看 Kaggle 上的這項競賽

下圖可以看到前幾筆資料的各特徵值和其分佈,基本上比較重要的欄位有以下幾個。

  1. 艙等 (Pclass)
  2. 性別 (Sex)
  3. 年齡 (Age)
  4. 兄弟姊妹 + 另一伴人數 (Sibsp)
  5. 父母及小孩人數 (Parch)
  6. 船費 (Fare)
  7. 登船港口 (Embarked)
  8. 存活與否 (Survived)
Dataset overview
Dataset overview

機器學習的基本概念就是將前7項當成特徵(x),來去預測第8項(y)。用最基礎的二元一次方程式來描述,可以將機器學習想像成透過下圖的方程式來訓練模型,模型就能夠在給定各項x的特徵下,預測該名乘客是否能夠生存(y)。

手把手教學

Azure Machine Learning Studio 是一項建構在微軟雲端平台 — Azure 的雲端服務。因此,需要有 Azure 的帳號及在此處登入

還沒有 Azure 帳號的朋友,可以參考這篇教學文章,使用學生信箱註冊就可以開始有免費的100美金可以使用 Azure Machine Learning Studio 囉!

Step 1 — 環境設定

進入 Azure Portal 後,點擊 + 號來新增一項服務。

接著,在搜尋框中輸入 Machine Learning Studio (classic) Workspace 並按下搜尋,就可以找到這項服務。

按下建立後,開始輸入新建此服務需要填寫的各項資訊,需要特別注意的是Machine Learning Studio 有提供一個免費的定價層,基本上可以幾乎免費的使用(只需要付工作區的儲存服務費用),第一次建立的朋友別忘了選擇免費定價層。

全部填寫完畢後,就可以按下建立並等待服務建立完成。

服務建立完成後,就可以在 Azure Portal 首頁看到建立完成的服務。點選建立好的服務後,再點選啟動Machine Learning Studio,就可以進入Machine Learning Studio的操作平台。

Step 2 — Machine Learning Studio 設定

進入 Machine Learning Studio 後,點選下方 + 號,並依序選擇 Dataset > From local file 上傳資料集,我們這次會使用的資料集可於此處下載,下載後上傳其中的 train.csv 作為本次使用的資料集。

上傳完資料集後,接著需要新增一個空白的實驗以開始進行部署,點選下方 + 號,並選擇 Blank Experiment,就會跳出下方畫面。

Step 3 — 開始使用 Machine Learning Studio

左側工具列點選 Saved Datasets > My Datasets 並將剛剛新增的 csv 檔拖曳到畫面中央。

接著選擇欄位,因為是面向初學者的教學,我們並不會使用到特徵工程的模組,也不會透過 Lasso, RFECV 等方式挑選變數,我們僅用手動的方式將幾個不使用的模組挑出不用。

左側工具列選擇 Select Columns in Dataset,和前一個模組連線後,右側打開Column selector,並將 PassengerID, Name, Ticket, Cabin 四個欄位挑出不用,選擇完畢後按右下角打勾即完成此動作。

下一步是清理缺失值,左側工具列選擇 Clean Missing Data,並將其和上一個模組連線。連線後同樣於右側打開 Column selector,選擇將所有數字格式的欄位做缺失值填補,選擇完畢後按右下角打勾即完成此動作。

接著,右邊欄位可以選擇要以何種值填補,此處我選擇以中位數填補。

下一步驟是資料型態轉換,因為隨機森林模型並無法認得 string 這種格式,換句話說,機器並不懂「male」背後的意義為何。我們需要使用 Edit Metadata 這個模組來將字串轉換成數字,也就是說透過將 male 轉換成 0 ,female 轉換成 1,機器就能了解 male 和 female 是兩種不同的屬性,進而能夠利用這種屬性作為判斷的條件之一。

左側工具列選擇 Edit Metadata,右側選擇所有欄位,並將欄位轉換為類別型態資料以及將資料轉換為特徵值。

完成資料前處理後,接著就可以開始切分資料集。我的習慣是讓訓練資料集佔7成,測試資料集佔3成的比重,大家可以依照個人習慣做調整。

左側工具列選擇 Split data,Fraction 調整為 0.7。在每個樣本獨立的情況下,我會將 Randomized split 的條件打開,以確保資料隨機性。

下一步就可以匯入模型,首先我們仍使用上一篇文章介紹過的 Two-Class Boosted Decision Tree 這種二元分類的決策樹模型,這種模型的優點是計算速度快,同時也能兼顧準確率。

右側有些超參數可以調整,我們可以先忽略這些模型優化的選項。

模型匯入後,就可以開始訓練模型。左側工具列選擇 Train model,並按照下圖方式連線後,右側記得要打開 Column selector 將 Survived 這個欄位挑出作為我們要預測的目標函數(y)。

模型訓練完畢後,接著就可以做模型得分和評估,左側工具列搜尋 Score model,並將其依照下圖方式連線,這步驟不需要做額外的調整。

Score model 可以看出每一筆資料預測的結果為何,但如果要看模型整體的混淆矩陣和準確度,我們需要另一個模組 Evaluate model 來查看這些訊息。

在左側工具列搜尋 Evaluate model 並將其依下圖方式連線,同樣這步驟也不需要做額外的調整。

到這邊我們就完成整個資料流的設計,接著可以開始訓練模型了。

Step 4 — Run!

下方工具列選擇 Run並點擊,就可以看到 Azure Machine Learning Studio 開始進行運算。

等待一小段時間後,可以看到每個模組旁都顯示了一個小小的綠色勾勾,就代表已經成功運行完畢。

如果我想看模型整體的預測結果,可以對 Evaluate model 這麼模組按一下右鍵並選擇 Evaluation results > Visualize。

可以看到模型整體的運算結果如下圖,包含混淆矩陣以及各項性能指標。

如果要看單一筆資料的預測結果,也可以對上一個模組 Score model 按一下右鍵並選擇 Evaluation results > Visualize,就可以看到每一筆資料預測的結果為何。

Appendix. 引入另一種模型

做完以上步驟,就已經成功訓練出一個可以讀取鐵達尼號乘客資訊並預測乘客生存率的二元分類模型了。但如果我們想試看看不同模型的結果,在 Azure Machine Learning Studio 有沒有機會做到呢?

答案是可以的。我們只需要再重新引入一個模型,並重新訓練該模型和評估模型,就可以知道另一種模型的表現結果如何。

左側工具列搜尋 Two-Class Decision Forest,並將 train model, score model, evaluate model 全數拖拉至右側並依下圖方式連線,注意拖拉 train model 模組時,需打開 Column selector 將 Survived 這個欄位挑出作為我們要預測的目標函數(y)。

下圖的右側連線方式為將 Two-Class Decision Forest 模型引入後,將同樣切分後的訓練資料集匯入此模型做訓練,並將測試資料集匯入 score model 做預測,最後透過 evaluate model 查看模型的成效。

全數設定完畢後,同樣點擊下方的 Run 並察看結果。

從下圖中可以看到,新的模型準確度略遜於原先的模型,其 F1- score 為0.688,較先前模型低了0.01。

結語

透過以上的教學文章,我們使用了兩種不同的模型來預測在給定乘客特徵值的情況下,該名乘客最後能否幸運的在鐵達尼號上活下來。

透過 Visualize 中的 cross-tab 功能,我們可以將乘客生存率和性別做比較,可以發現預測出的女性生存率 (female 1 / female (0+1)) 確實大過於男性生存率(male 1 / male (0+1)),這點和原先資料集的特徵相符合。

另外,頭等艙乘客(Pclass = 1)的生存率也較一般艙等(Pclass = 3)的生存率要高上許多。

其他還有非常多有趣的 insight 可以觀察,期待大家可以透過這篇教學張,學習到基礎的資料分析技能以及體驗到資料分析的有趣之處。

更重要的是,我們利用 Machine Learning Studio 就可做完所有資料分析和機器學習的流程,完全不需要動手寫程式,對於新手來說是很好的第一步!

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

--

--

Ashe Liao
Ashe’s tech talks

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