Azure 「機器學習」初體驗


機器學習 (Machine Learning, (ML)) 是用來解決實務問題的。在本文中,我想嘗試解決的問題是:

「一個腳踏車行,想根據來店客人的基本資料,預測 (predict) 此客人是否會買腳踏車。」

問題定義好之後,就可以開始思考,需要取得哪些可供機器學習的資料,以作為 input 了。我在這使用一份包含了 1 萬個客人的歷史紀錄 (Bike_Buyer_Data_CSV.csv,可在此下載: http://1drv.ms/1FLTSTV)。以下列出前四筆資料:

image

你可以看到在 BikeBuyer 這個欄位,標註了其最後是否有買腳踏車,同時有這個人結婚與否、性別、薪水、教育程度、通勤距離、年紀等資料。

接下來就可以開始使用 Azure 的「機器學習」來規劃預測模型了!

Step 1. 只需要有免費的 Microsoft Account 即可登入使用,無需信用卡:

image

Step 2. 進入 Azure 的「機器學習」頁面: https://studio.azureml.net/Home,或是由你的 Azure management portal 管理畫面選擇「機器學習 (Machine Learning)」服務:

image

Step 3. 匯入資料。

Azure ML 提供了多種資料匯入的方式:

·       Read data from local file.

·       A saved dataset.

·       Azure Blob storage.

·       Read data from Hive.

·       Azure Table.

·       SQL Azure database.

·       HTTP.

在此我僅示範第一種 “Read data from local file”,在畫面左下角選擇「NEW」| 「DATASET」|「FROM LOCAL FILE」:

image

clip_image002

選取本地 CSV 檔案後,以 “Generic CSV File with a header (.csv)” 方式匯入:

image

Step 4. 設計實驗 (Experiment)。

在畫面左下方選擇「NEW」|「EXPERIMENT」,並選擇 Blank Experiment:

image

你可以為這個實驗取一個名字以備日後管理,如「Bike Demo」。然後將剛剛匯入的 “Bike_Buyer_Data_CSV.CSV” 資料,以及以下共 5 種元件,由左側以滑鼠拖拉的方式拉入中間的畫布中:

·       Split

·       Train Model

·       Two-Class Averaged Perceptron

·       Score Model

·       Evaluate Model

[小技巧] 善用左上角的 Search 功能,可直接找到元件!

image

然後大致排列這些元件如以下:

image

接下來就是連連看囉! 一樣透過滑鼠,將各元件間的小圈圈,由上向下連起來,如下圖所示,我們就完成實驗基本的資料流了:

image

各元件的功能、以及各元件的細部參數調整,在此我都不深入解釋,不過各位由字面應可大致了解其功能,其中:

a). 「Split」元件會將資料分成兩部份,左邊那塊是送去「學習」 (Train Model) 的;另外一塊則可用來驗證學習成效 (Score Model)。

b). 我們選擇先以 “Two-Class Averaged Perceptron” 作為學習的方法 (我會在 Step 7. 改變學習方法,讓大家看看不同之處)。

Step 5. 有注意到在「Train Model」元件中的警示標誌嗎? 因為我們還未告訴此實驗是要訓練來預測 (predict) 什麼:

點選「Train Model」|「Launch Column Selector」,然後在 columns names 中選擇 “BikeBuyer”: (因為我們想解決的問題,是預測客人是否會買腳踏車)

image

我們的實驗到此就設計完畢了! 是不是很簡單呢?

Step 6. 測試實驗結果。按下畫面下方的「Run」,即會將此實驗送上 Azure 作計算,你可以即時觀看計算進度,右上角也有總計的花費時間。以這個實驗為例,約 5~8 秒即可跑完:

image

跑完後來看結果吧! 點開「Evaluate Model」下面的小圈圈並選擇「Visualize」:

image

你會看到評估此實驗結果的圖表及數據,包含:

  • ROC

  • Precision/Recall

  • Lift Curve

這些數據及圖表,是用來評估你所設計的實驗模型優劣與否的依據,在此不會討論其細節。我僅以其中的 ROC 曲線為例:其基本原則是,若曲線愈往左上方移動,此模型的準確率愈高 (在此要強調,模型優劣的判定並非單一指標可決定):

image

單純由人眼來判斷當然是不準確的,故我們可以計算 ROC 曲線下方的面積,並以 AUC 來表示 (此例中 AUC = 0.677),原則即是愈大愈好:

image

Step 7. 改變實驗模型。有沒有更好的模型以作更準確的預測呢? 接下來我想要以 ”Two-Class Boosted Decision Tree” 作為另一種學習方式,並比較其成效。

首先將「Train Model」、「Score Model」及「Evaluate Model」選擇後,以Ctrl-C,Ctrl-V 複製貼上。然後再以 Search 來找到 ”Two-Class Boosted Decision Tree” 模組:

image

請大致排列如下圖。並注意,記得刪除由舊模型連至「Train Model」的黃線:

image

最後的完成圖:

image

Step 8. 比較實驗結果。選擇「Run」並等待 Azure 計算完畢後,在 ”Two-Class Boosted Decision Tree” 的「Evaluation Model」中選擇「Visualize」:

image

看到的 ROC 曲線如下:

image

有注意到與之前的學習方式 (Step 6) 的不同之處嗎? 進一步觀察其 AUC = 0.830,亦比此前的值為大:

image

Step 9. 透過 Scoring Model 檢視實驗結果。Step 6 和 8 皆是透過 Evaluation Model 計算機器學習預測理論中的各項評分,作為決策人員判斷模型合適與否的依據。其實您可以透過 Scoring Model –> Visualize 更直觀的看到預測結果。

以下即可看到每一個客人是否會買腳踏車的機率、及其最後預測值 (機率高者預測其會買腳踏車):

image

BikeByer 相對於 Scoring Labels (預測值) 的對照圖,可更直覺的了解到,這個預測模型還有很大的進步空間! Smile

image

Step 10. 發佈為 Web Service。如以下的標準 Data Science Process,最佳模型的建立,總是在反覆不斷的檢討及驗證中所得到的。

image

當驗證完畢之後,就能發佈您的學習成果,讓腳踏車行的應用程式,甚或其他的開發者作使用了。

先點選「Score Model」上方的小圈圈,並選擇 “Set as Publish Input”:

image

再點選「Score Model」下方的小圈圈,並選擇 “Set as Publish Output”:

image

重新再 Run 一次,即可 “PUBLISH WEB SERVICE”:

image

發佈成功之後,會產生 Web Service 的 URL 連結、API Key,同時還有測試頁面供你輸入及測試:

image

image

最貼心的是,還提供 C#, Python 及 R 語言的 sample code!

image

 

延伸閱讀:

1. Microsoft Azure 機器學習官方學習網站 (含教學影片及文件):

http://azure.microsoft.com/zh-tw/documentation/services/machine-learning/

2. TechDays Taiwan 2014 「微軟新世代雲端大數據戰略剖析與 Machine Learning 實例分享」 (中文)

https://channel9.msdn.com/Events/TechDays/TechDays-Taiwan-2014/DCIM310

3. 台灣大學資訊工程系林軒田老師 Coursera 線上課程 (中文) https://www.coursera.org/course/ntumlone

Comments (0)

Skip to main content