Azure 「機器學習」:我該用哪種演算法 (algorithms)?

在「Azure 「機器學習」初體驗」一文中,我們了解到如何透過 Azure ML 工具,很快的完成一個實驗 (Experiment)。基本上是遵循以下流程:

image

上圖的紅框 (apply Algorithms) 則是本文所要介紹的重點。也就是,我該在實驗中選擇哪一種演算法,來解決問題呢?

Azure ML 將內建的演算法分為三種類型:Classification (分類), Regression (迴歸分析) 以及 Clustering (分群):

image

1. Classification (分類): 如字義所見,即是透過機器學習,預測結果是屬於哪一種類別的方法。最常見的情境就是二分法了,亦即可以回答 True/False 或 Positive/Negative 的問題,比如:

  • 現有的中x電信客戶,會不會轉去遠x電信呢?

  • 客戶有沒有潛在升級或加購產品的商機呢?

以下是 Azure ML 所內建提供的 Classification 演算法 (竟然有類神經網路啊!! 回想到以前在交大修這門課時的熬夜歲月 ><…):

幾種不同「二分法 (Two-Class)」 Classification 演算法的示意圖:

f:id:TJO:20140106225421p:plain

(圖片來源: https://tjo-en.hatenablog.com/entry/2014/01/06/234155 )

2. Regression (迴歸分析): 與前者 Classification 方法的不同之處,在於 Regression 演算法通常是預測出一個「數值」。 比如:明天的台北股市收盤價是多少? 如何根據所在城市、坪數、學區等來預測房價? 都是適合使用 Regression 演算法的問題。

Azure ML 提供的 Regression 演算法包括:

image

例如我想以汽車馬力 (horsepower) 來預測耗油量 (miles per gallon),以下即是透過 Linear Regression 演算法的預測示意圖:

image

(圖片來源: “Predictive Analytics with Microsoft Azure Machine Learning: Build and Deploy Actionable Solutions in Minutes”)

3. Clustering (分群): 通常是用來處理「沒有正確答案」的問題,這種問題該怎麼辦呢? Clustering 能將有相同特徵者叢集在一塊。 比如:Facebook 辨別使用者屬於哪些不同的群組 (運動愛好者、通勤族、蘿莉控…等),以滿足廣告投放商的需求。

以下是原始資料,及以 K-means Clustering 分群之後的示意圖:

_images/kmeans_2d.png

(圖片來源: https://pypr.sourceforge.net/kmeans.html )

小結:

所以回到最初的問題,當我們在設計 Machine Learning 實驗時,要如何決定使用哪種演算法呢?

  • 如果您的問題能夠以 Yes/No 來回答 => Classification (分類)

  • 如果您期望的解答是一個數值的話 => Regression (迴歸分析)

  • 如果您想將具相同特性的資料群集分類 => Clustering (分群)

但請注意,以上僅是大致的判斷法則,仍請各位能徵詢資料科學家的專業意見,選擇最合適的演算法。

另外,有注意到文章標題中的 algorithms 用了複數嗎? 是的,在實際的應用模型中,多種演算法被合併使用是很常見的 (如: Amazon 的情緒分析模型)。

練習題:

最後各位要不要猜猜看,以下這 3 種預測或應用,主要是用了什麼演算法呢?

1. 如左圖,照張狗的照片即可辨別出,這隻狗是屬於哪個品種。 (羅得西亞背脊犬- 影片連結: https://www.youtube.com/watch?v=zOPIvC0MlA4#t=45)

imageimage

2. 2014 年的第 86 屆奧斯卡金像獎共 24 獎項中,在頒獎典禮前針對入圍者給出一個得獎的機率,最後成功預測了 21 個!

3. 蘇格蘭是否要脫離英國的獨立公投,是 2014 年屬一屬二的國際新聞,在投票前預測結果

註: 本文介紹的演算法分類中,前兩類 (Classification & Regression) 都是屬於「監督式學習」(Supervised Learning);Clustering 則是屬於「非監督式學習」(Unsupervised Learning) 的範疇。

再註: Azure ML 基本上是根據學習的方法 (如監督式學習/非監督式學習),以及可被應用的方式來作分類。故各位可以注意到,如決策樹 (Decision Tree) 或類神經網路 (Neural Network) 等,可分別被應用到 Classification 或是 Regression 的類別中,以解決不同類型的問題。

延伸閱讀:

1. Azure 「機器學習」FAQ,以及實際應用模型

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

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

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

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

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