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

任何在使用機器學習建立模型做預測時,都會彈出一個問題:我應該使用哪種演算法? 每個演算法是怎麼運作的?要怎麼衡量準確性呢?為了回答這些問題,我們收集整理了以下策略地圖,可以提供一個思考方向: 這個問題的答案跟以下因素都有密切的關係: 資料的大小: 資料量有多大,想要分析的特徵欄位有多少? 質量和性質: 例如預測的是連續形態,還是分類?資料中遺失值多嗎?為什麼會有極端值?特徵的分佈是屬於哪一種呢? 任務的緊迫性: 是希望很快就能得到可給的結果,還是可足夠的時間可以來訓練一個更準確的模型呢? 你想要對數據做什麼: 是要用來找規則、發現異常、還是做預測? 即使是一位經驗豐富的數據科學家,在嘗試不同的算法之前,也沒辦法確定哪種算法會表現最好。但不是這樣,就可以沒有脈絡的隨意使用演算法。現在工具簡單好用,所以要建立一個"Hello World"的預測模型不難,但要建立一個具有一定準確、有商業價值的預測,就要有點功力了。 下面這張圖是由微軟的資料科學團隊所做出來的,它可以幫助初學者從各種機器學習算法中,有根據的進行選擇,來找到適合解決特定問題的適當演算法。 原始圖可以在 這裡下載 在這裡面,有些常見的演算法分類與名詞,給一些非統計背景想進入機器學習的人,簡單說明如下: 監督式學習( Supervised Learning): 每筆資料都會加上「標籤」(Label),來跟感興趣特徵(Feature)產生關聯。 分類標籤的範例就是將影像指派為「貓」或「狗」。 連續 值標籤的範例則是與中古汽車相關聯的銷售價格。 監督式學習的目標,是利用這些已加上標籤的資料,然後能夠學習到與 興趣特徵產生關聯的規則,然後再對沒有標籤的資料,根據這些特徵規則來做出預測標籤。 非監督式學習(Unsupervised Learning): 資料中並沒有與其相關聯的「標籤」。 非監督式學習演算法的目標在於,把特徵類似的資料歸類在一起。 這樣就可以把 資料劃分為幾團 (如 K-Means ),可以查看複雜資料,變得比較簡單。 增強式學習( Reinforcement Learning): 透過觀察環境而行動,並會隨時根據新進來的資料逐步修正、以獲得最大利益。 這是在機器人領域中的常見方法,其中在某個時間點的感應器讀數集就...