← M03 機器學習入門 M03 機器學習入門

M03.05|常見演算法:決策樹、隨機森林、SVM、KNN

四大經典演算法各有絕招,選對武器才能打對仗

常見演算法:決策樹、隨機森林、SVM、KNN

🎙️ Podcast(中文)

0:00 / 0:00

一句話搞懂

決策樹是一連串「是/否」問題的邏輯流程圖;隨機森林是多棵決策樹組成的投票委員會;SVM 是在資料點之間畫出「最寬安全通道」的分隔線;KNN 則是「你跟誰最近,你就像誰」的鄰居投票法。四種演算法各有擅場,沒有最好,只有最適合。


白話解說

決策樹(Decision Tree):20 問猜謎遊戲

你玩過「20個問題」猜謎遊戲嗎?對方心中想一個東西,你只能問「是」或「否」,在有限次數內猜出答案。決策樹的邏輯完全一樣。

運作方式

從資料集出發,演算法不斷問「哪個問題能最有效地把資料分開?」例如判斷一顆螺絲是否合格:

是否直徑 > 5mm?
├── 是 → 長度是否 > 30mm?
│         ├── 是 → 合格
│         └── 否 → 不合格
└── 否 → 表面是否有裂痕?
          ├── 是 → 不合格
          └── 否 → 合格

每個分叉點叫做「節點」,最終的結論叫做「葉節點」。

優點

  • 結果可視覺化,人類可以直接閱讀規則
  • 不需要特徵縮放(數據不用標準化)
  • 同時支援分類與迴歸問題

缺點

  • 容易「過度擬合」(把訓練資料記太熟,遇到新資料就失靈)
  • 對數據的微小變動很敏感,樹的結構可能差很多
  • 深度太大時,規則變得複雜難以解釋

隨機森林(Random Forest):委員會投票

單棵決策樹容易過度擬合,就像只聽一位專家的意見,可能因為偏見而判斷失誤。隨機森林的想法很簡單:建立許多棵不同的決策樹,讓它們「少數服從多數」投票決定最終答案。

運作方式

  1. 從原始資料中隨機抽樣,建立多個訓練子集(稱為「自助抽樣 Bootstrap」)
  2. 每個子集訓練出一棵決策樹,且每次分叉時只從隨機選出的特徵子集中挑問題
  3. 分類問題:多數票決(100棵樹有67棵說合格 → 合格)
  4. 迴歸問題:取平均值

想像工廠品管:與其讓一位師傅判斷品質,不如讓 100 位師傅各自根據不同抽樣的樣品、聚焦不同的檢測項目,最後投票決定。集體智慧大幅降低單一判斷失誤的風險。

優點

  • 大幅降低過度擬合風險
  • 對雜訊和異常值具有較強的抵抗力
  • 可以輸出「特徵重要性」,告訴你哪些變數最關鍵
  • 通常不需要太多調參就能有不錯的表現

缺點

  • 模型變成「黑盒子」,無法像單棵決策樹那樣直接解讀規則
  • 訓練和預測速度比單棵決策樹慢(樹越多越慢)
  • 需要較大的記憶體儲存多棵樹

SVM(支援向量機,Support Vector Machine):畫出最寬的安全通道

想像你在白板上有一堆紅點和藍點,你要畫一條線把它們分開。問題是:有無數條線都能把它們分開,哪條最好?SVM 的答案是:畫那條離兩邊點都「最遠」的線,也就是讓「安全通道最寬」的那條。

運作方式

  • 決策邊界:分隔兩個類別的直線(或高維度中的超平面)
  • 支援向量:距離決策邊界最近的那些資料點,整個邊界的位置就由這些點「撐起來」,故稱支援向量
  • 最大邊界(Margin):SVM 的核心目標——讓支援向量到決策邊界的距離盡量大,分類才最穩健

核技巧(Kernel Trick)

如果資料在原本空間裡無法用直線分開(例如環形分布),SVM 可以用「核函數」把資料投射到更高維度,在高維空間中找到能分開的超平面,再投影回來。常見核函數有:線性核、多項式核、RBF(高斯核)。

優點

  • 在高維度資料(如文字分類)表現優秀
  • 即使訓練資料不多,也能得到良好的泛化效果
  • 對於非線性問題,核技巧提供靈活的解決方案

缺點

  • 大規模資料集(百萬筆以上)訓練很慢
  • 核函數與超參數(C、gamma)的選擇需要經驗與調參
  • 輸出是決策邊界,不直接給出機率,解釋性較低

KNN(K 最近鄰,K-Nearest Neighbors):問問鄰居

KNN 的邏輯是人類直覺中最接近「物以類聚」的算法:你想知道一個新來的陌生人是哪一類,就去看他最近的 K 個鄰居是哪一類,多數決

運作方式

  1. 計算新資料點與訓練集中所有點的距離(通常用歐式距離)
  2. 找出距離最近的 K 個點
  3. 分類:K 個鄰居中哪個類別最多,就預測該類別
  4. 迴歸:取 K 個鄰居的數值平均

K 值的選擇

  • K 太小(如 K=1):對雜訊敏感,容易過度擬合
  • K 太大:邊界變模糊,可能欠擬合
  • 實務上常用交叉驗證選出最佳 K,奇數 K 可避免平票

優點

  • 演算法本身極為簡單,幾乎沒有訓練階段
  • 能自然處理多分類問題
  • 可以直接理解:「因為這 K 個鄰居大多是良品,所以預測為良品」

缺點

  • 預測時需要計算與所有訓練資料的距離,大型資料集速度很慢
  • 對特徵的量綱(scale)非常敏感,必須事先標準化
  • 高維度時距離計算失去意義(維度詛咒)

四大演算法比較總表

比較項目 決策樹 隨機森林 SVM KNN
解釋性 極高
準確率
訓練速度 慢(大資料) 無訓練階段
預測速度 慢(大資料)
抗過擬合
需要特徵縮放 不需要 不需要 必須 必須
適合資料規模 中小 中大 中小
支援非線性 是(核技巧)

應用場景:台灣製造業品質檢測

台灣製造業(PCB 板、精密零件、食品包裝)長期面臨人力品檢的挑戰。以下用「PCB 板瑕疵分類」情境,比較四種演算法的實際選用考量。

情境設定

工廠每日生產 10 萬片 PCB 板,需將板子分類為:良品輕微瑕疵(可修)報廢品。 特徵包含:焊點直徑、銅箔厚度、表面反光率、線路間距、歷史批次編號等 15 個特徵。

四大演算法在品質檢測中的應用比較

演算法 在 PCB 品檢的應用 優勢 限制 建議情境
決策樹 建立「品管規則手冊」,如「焊點直徑 < 0.3mm 且偏移 > 0.1mm → 報廢」 規則可直接轉成 SOP,品管師傅能理解並驗證 規則可能不完整,新型態瑕疵適應慢 初期建立可解釋基線模型;主管審核用
隨機森林 綜合所有感測器數值,投票決定瑕疵等級 高準確率(通常 90%+),對感測器雜訊有抵抗力;可輸出特徵重要性,找出最關鍵的品質指標 無法直接告訴工程師「為什麼這片是廢品」 自動化分類流水線;需要高準確率的主力模型
SVM 針對「良品 vs. 輕微瑕疵」的邊界分類(邊界不清晰時特別有效) 在訓練樣本較少時(如罕見瑕疵類型)仍能找到穩健邊界 調參困難;資料量增加後訓練時間大幅上升 罕見瑕疵辨識;小批量樣本的特殊品類
KNN 「這片板子的焊點特徵和資料庫中哪幾片最像?那些片子是什麼結果?」 新增瑕疵樣本後立即生效(不需重新訓練);可追溯「依據哪幾筆歷史紀錄判定」 需要即時計算距離,速度不適合高速產線;需要特徵縮放 原型快速驗證;需要可追溯依據的審計場景

實際建議

台灣製造業導入 AI 品檢的最佳實務通常是「組合使用」:

  1. 先用決策樹建立可解釋的基線模型,確認工程師理解並信任 AI 的邏輯
  2. 主力採用隨機森林作為自動化分類引擎,追求高準確率
  3. SVM 處理邊緣案例(良品與輕微瑕疵的模糊地帶)
  4. KNN 用於「相似案例查詢」,讓品管人員理解判定依據

常見誤區

誤區一:隨機森林一定比決策樹好

很多初學者認為隨機森林既然是決策樹的集合,準確率一定更高,應該永遠選隨機森林。這個想法在大多數情況下是對的,但有幾個例外:

  • 需要解釋性:法規要求、品管 SOP、醫療診斷輔助等場景,必須能對利害關係人解釋「為什麼這樣判定」。隨機森林的結果難以解釋,單棵決策樹反而是更合適的選擇。
  • 資源限制:在邊緣運算設備(如工廠產線上的嵌入式系統)中,記憶體和運算資源有限,單棵決策樹的推論速度遠快於森林。
  • 資料量極少:訓練資料不足 100 筆時,隨機森林的抽樣機制可能反而讓每棵樹的訓練資料更少,效果不見得更好。

正確觀念:在有明確可解釋性需求、運算資源受限、或資料量極少的情況下,決策樹可能是更好的選擇。


誤區二:KNN 沒有訓練階段,所以很快

KNN 是所謂的「懶惰學習」(Lazy Learning)——訓練時幾乎什麼都不做,只把所有資料存起來。有些人誤以為這讓 KNN 既快又省事,是個萬用的選擇。

實際上,KNN 把所有計算量都推到了預測階段。每次預測一筆新資料,都必須計算它與訓練集中所有資料點的距離,找出最近的 K 個。若訓練集有 100 萬筆、特徵有 50 個,每次預測都是一次龐大的計算。

此外,KNN 對特徵縮放極度敏感。若「焊點直徑(單位:公釐)」和「歷史批次編號(四位數字)」不做標準化,批次編號的數值範圍遠大於直徑,距離計算會被批次編號主導,讓模型判斷失去意義。

正確觀念:KNN 訓練快,但預測慢;適合小資料集的快速原型,不適合大規模即時推論。使用前務必做特徵標準化。


誤區三:SVM 只能做直線分類

SVM 的教科書常用直線將兩群點分開的圖例,讓人誤以為它只能處理線性可分的問題,遇到圓形、月牙形等複雜分布就沒辦法了。

事實上,SVM 的「核技巧」正是為了解決這個問題而設計的。透過 RBF(徑向基函數)核或多項式核,SVM 能在更高維度的空間中找到分隔超平面,等效於在原始空間中形成非線性的決策邊界。

另一個常見誤解是認為 SVM 只支援二元分類(是/否)。其實可以透過「一對一」或「一對多」策略將 SVM 延伸到多分類問題,sklearn 等主流工具都已內建這個功能。

正確觀念:選擇適當的核函數,SVM 可以處理各種非線性問題;多分類問題也可透過策略組合處理。關鍵在於核函數與超參數的選擇需要經驗與調參。


小練習

練習一

台中某家精密機械廠商要預測齒輪的磨損等級(分為:正常、輕磨損、需更換三類),訓練資料共有 5,000 筆,特徵包含振動頻率、轉速、溫度、電流等 8 個數值型特徵。工廠主管要求「AI 的判斷必須能讓維修工程師理解原因,並轉成維修 SOP」。請問哪個演算法最適合作為主要模型

A. KNN,因為不需要訓練,隨時可以調整 B. SVM,因為 8 個特徵屬於高維度,SVM 最擅長 C. 決策樹,因為可以直接解釋規則,符合可解釋性需求 D. 隨機森林,因為準確率最高,主管最重視結果

正確答案:C. 決策樹 題目明確指出「必須讓工程師理解原因,並轉成維修 SOP」,這是強烈的可解釋性需求。決策樹的規則可以直接讀取,例如「振動頻率 > 150Hz 且溫度 > 80°C → 需更換」,可以直接轉成檢修判斷手冊。 - A 錯誤:KNN 雖然靈活,但預測依賴距離計算,無法轉成規則型 SOP,且 5,000 筆資料預測速度也會是問題。 - B 錯誤:8 個特徵不算高維度;SVM 的決策邊界更難解釋給維修工程師。 - D 錯誤:雖然隨機森林準確率高,但由數百棵樹投票的結果難以轉成可理解的規則。 補充:若準確率不夠,可以先以決策樹建立 SOP 基線,再用隨機森林輔助做第二道自動篩選。

練習二

某食品工廠導入 AI 偵測餅乾外觀瑕疵,瑕疵種類分為:正常、碎裂、燒焦、形狀異常四類。以下是不同演算法在同一資料集(10,000 筆)的實驗結果:

演算法 訓練準確率 測試準確率 訓練時間
決策樹(深度不限) 99.8% 74.3% 2 秒
隨機森林(100 棵) 97.5% 91.2% 45 秒
SVM(RBF 核) 93.1% 90.8% 210 秒
KNN(K=3) 95.2% 78.6% 0 秒(訓練)

請問從表格中可以觀察到哪種現象?決策樹的問題是什麼?應該選哪個演算法部署到產線?

觀察到的現象:決策樹嚴重過度擬合 決策樹(深度不限)的訓練準確率高達 99.8%,但測試準確率只有 74.3%,差距達 25.5%。這是典型的「過度擬合」現象——決策樹把訓練資料「背」起來了,包括噪音和偶然特徵,導致遇到新資料(測試集)時表現大幅下滑。 KNN(K=3)同樣有過度擬合傾向(訓練 95.2% vs 測試 78.6%),K 值太小時對訓練資料附近的雜訊非常敏感。 **建議部署:隨機森林** - 測試準確率最高(91.2%),且訓練與測試的差距僅 6.3%,泛化能力良好 - SVM 測試準確率相近(90.8%),但訓練時間長達 210 秒,若日後需要定期重新訓練模型(因為瑕疵型態改變),成本較高 - 隨機森林 45 秒的訓練時間在可接受範圍,且可輸出特徵重要性,幫助工程師了解哪些外觀特徵最能區分瑕疵種類 補充:決策樹的過度擬合問題可透過「剪枝」(限制最大深度、最少葉節點樣本數)改善,之後可與隨機森林比較是否仍有差距。