🎙️ Podcast(中文)
一句話搞懂
決策樹是一連串「是/否」問題的邏輯流程圖;隨機森林是多棵決策樹組成的投票委員會;SVM 是在資料點之間畫出「最寬安全通道」的分隔線;KNN 則是「你跟誰最近,你就像誰」的鄰居投票法。四種演算法各有擅場,沒有最好,只有最適合。
白話解說
決策樹(Decision Tree):20 問猜謎遊戲
你玩過「20個問題」猜謎遊戲嗎?對方心中想一個東西,你只能問「是」或「否」,在有限次數內猜出答案。決策樹的邏輯完全一樣。
運作方式:
從資料集出發,演算法不斷問「哪個問題能最有效地把資料分開?」例如判斷一顆螺絲是否合格:
是否直徑 > 5mm?
├── 是 → 長度是否 > 30mm?
│ ├── 是 → 合格
│ └── 否 → 不合格
└── 否 → 表面是否有裂痕?
├── 是 → 不合格
└── 否 → 合格
每個分叉點叫做「節點」,最終的結論叫做「葉節點」。
優點:
- 結果可視覺化,人類可以直接閱讀規則
- 不需要特徵縮放(數據不用標準化)
- 同時支援分類與迴歸問題
缺點:
- 容易「過度擬合」(把訓練資料記太熟,遇到新資料就失靈)
- 對數據的微小變動很敏感,樹的結構可能差很多
- 深度太大時,規則變得複雜難以解釋
隨機森林(Random Forest):委員會投票
單棵決策樹容易過度擬合,就像只聽一位專家的意見,可能因為偏見而判斷失誤。隨機森林的想法很簡單:建立許多棵不同的決策樹,讓它們「少數服從多數」投票決定最終答案。
運作方式:
- 從原始資料中隨機抽樣,建立多個訓練子集(稱為「自助抽樣 Bootstrap」)
- 每個子集訓練出一棵決策樹,且每次分叉時只從隨機選出的特徵子集中挑問題
- 分類問題:多數票決(100棵樹有67棵說合格 → 合格)
- 迴歸問題:取平均值
想像工廠品管:與其讓一位師傅判斷品質,不如讓 100 位師傅各自根據不同抽樣的樣品、聚焦不同的檢測項目,最後投票決定。集體智慧大幅降低單一判斷失誤的風險。
優點:
- 大幅降低過度擬合風險
- 對雜訊和異常值具有較強的抵抗力
- 可以輸出「特徵重要性」,告訴你哪些變數最關鍵
- 通常不需要太多調參就能有不錯的表現
缺點:
- 模型變成「黑盒子」,無法像單棵決策樹那樣直接解讀規則
- 訓練和預測速度比單棵決策樹慢(樹越多越慢)
- 需要較大的記憶體儲存多棵樹
SVM(支援向量機,Support Vector Machine):畫出最寬的安全通道
想像你在白板上有一堆紅點和藍點,你要畫一條線把它們分開。問題是:有無數條線都能把它們分開,哪條最好?SVM 的答案是:畫那條離兩邊點都「最遠」的線,也就是讓「安全通道最寬」的那條。
運作方式:
- 決策邊界:分隔兩個類別的直線(或高維度中的超平面)
- 支援向量:距離決策邊界最近的那些資料點,整個邊界的位置就由這些點「撐起來」,故稱支援向量
- 最大邊界(Margin):SVM 的核心目標——讓支援向量到決策邊界的距離盡量大,分類才最穩健
核技巧(Kernel Trick):
如果資料在原本空間裡無法用直線分開(例如環形分布),SVM 可以用「核函數」把資料投射到更高維度,在高維空間中找到能分開的超平面,再投影回來。常見核函數有:線性核、多項式核、RBF(高斯核)。
優點:
- 在高維度資料(如文字分類)表現優秀
- 即使訓練資料不多,也能得到良好的泛化效果
- 對於非線性問題,核技巧提供靈活的解決方案
缺點:
- 大規模資料集(百萬筆以上)訓練很慢
- 核函數與超參數(C、gamma)的選擇需要經驗與調參
- 輸出是決策邊界,不直接給出機率,解釋性較低
KNN(K 最近鄰,K-Nearest Neighbors):問問鄰居
KNN 的邏輯是人類直覺中最接近「物以類聚」的算法:你想知道一個新來的陌生人是哪一類,就去看他最近的 K 個鄰居是哪一類,多數決。
運作方式:
- 計算新資料點與訓練集中所有點的距離(通常用歐式距離)
- 找出距離最近的 K 個點
- 分類:K 個鄰居中哪個類別最多,就預測該類別
- 迴歸:取 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 品檢的最佳實務通常是「組合使用」:
- 先用決策樹建立可解釋的基線模型,確認工程師理解並信任 AI 的邏輯
- 主力採用隨機森林作為自動化分類引擎,追求高準確率
- SVM 處理邊緣案例(良品與輕微瑕疵的模糊地帶)
- 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. 隨機森林,因為準確率最高,主管最重視結果
練習二
某食品工廠導入 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 秒(訓練) |
請問從表格中可以觀察到哪種現象?決策樹的問題是什麼?應該選哪個演算法部署到產線?