如何選擇一個合適的演算法來建立預測模型?

任何在使用機器學習建立模型做預測時,都會彈出一個問題:我應該使用哪種演算法? 每個演算法是怎麼運作的?要怎麼衡量準確性呢?為了回答這些問題,我們收集整理了以下策略地圖,可以提供一個思考方向:

這個問題的答案跟以下因素都有密切的關係:

  • 資料的大小:資料量有多大,想要分析的特徵欄位有多少?
  • 質量和性質:例如預測的是連續形態,還是分類?資料中遺失值多嗎?為什麼會有極端值?特徵的分佈是屬於哪一種呢?
  • 任務的緊迫性:是希望很快就能得到可給的結果,還是可足夠的時間可以來訓練一個更準確的模型呢?
  • 你想要對數據做什麼:是要用來找規則、發現異常、還是做預測?

即使是一位經驗豐富的數據科學家,在嘗試不同的算法之前,也沒辦法確定哪種算法會表現最好。但不是這樣,就可以沒有脈絡的隨意使用演算法。現在工具簡單好用,所以要建立一個"Hello World"的預測模型不難,但要建立一個具有一定準確、有商業價值的預測,就要有點功力了。

下面這張圖是由微軟的資料科學團隊所做出來的,它可以幫助初學者從各種機器學習算法中,有根據的進行選擇,來找到適合解決特定問題的適當演算法。

原始圖可以在這裡下載

在這裡面,有些常見的演算法分類與名詞,給一些非統計背景想進入機器學習的人,簡單說明如下:

監督式學習( Supervised Learning):每筆資料都會加上「標籤」(Label),來跟感興趣特徵(Feature)產生關聯。 分類標籤的範例就是將影像指派為「貓」或「狗」。 連續值標籤的範例則是與中古汽車相關聯的銷售價格。 監督式學習的目標,是利用這些已加上標籤的資料,然後能夠學習到與興趣特徵產生關聯的規則,然後再對沒有標籤的資料,根據這些特徵規則來做出預測標籤。

非監督式學習(Unsupervised Learning):資料中並沒有與其相關聯的「標籤」。非監督式學習演算法的目標在於,把特徵類似的資料歸類在一起。 這樣就可以把資料劃分為幾團 (如 K-Means ),可以查看複雜資料,變得比較簡單。

增強式學習(Reinforcement Learning):透過觀察環境而行動,並會隨時根據新進來的資料逐步修正、以獲得最大利益。 這是在機器人領域中的常見方法,其中在某個時間點的感應器讀數集就是一個資料點,而演算法必須選擇機器人的下一個動作。 它也很適合用於物聯網 (Internet of Things) 應用程式。 此學習演算法也會在短時間內收到獎勵(Reward)訊號,指出決策的好壞程度。 演算法會據此修改其策略,以達到最高的獎勵。 可惜的是Azure ML 中目前還沒有增強式學習演算法模組。

其他相關演算法還有:

  • k-means:分群clustering,找特徵相似的成員歸到同一組
  • C4.5:用來建構決策樹形式的分類器
  • Support vector machines:SVM, 分類器之一
  • Apriori:關聯規則,用於推薦引擎。也就是傳統常說的菜籃分析,尿布與啤酒的故事
  • EM:最大期望值,用於分群評估(expectation-maximization for clustering)
  • PageRank:是一種網絡分析,可以想象用來評估物跟物之間的相對重要性
  • AdaBoost:boosting提升法, 用來提升預測準確度。用於結合多個演算法預測結果進行加權再產出一個結果
  • kNN:分類器之一,用於分類classification
  • Naive Bayes:分類演算法之一,前提假設所有特徵變項彼此間都是獨立沒有關係的
  • CART:分類器之一,用於決策樹分類
  • ANN:人工神經網路(ANN:Artificial Neural Network),或類神經網路,分類器之一,也是現在AI的基礎演算法
  • Regression:迴歸,就是找一個函數,盡量符合連續數值數據呈現出來的規則,然後來做預測

在Azure Machine Learning Studio中,在演算法分類下,依據策略地圖找到適當的演算法,再依據流程架構圖,將找出來最適當的演算法拉到圖中,跟訓練模型(Train Model)模組連在一起,就完成引用一個演算法的流程了。


Azure Machine Learning 流程架構圖 (全圖可在此下載)



留言

這個網誌中的熱門文章

Power BI自動發送報告功能:Power BI Robots上線!! 從頭開始學

利用Power BI與R連結Google表單

如何利用Azure Machine Learning快速建立推薦系統