中文名稱:支持向量機 英文名稱:Support Vector Machine

定義(Definition)

一種監督式學習模型, 主要用來做分類(也可以做迴歸),核心目標是: 找出一條「區隔不同類別、且安全距離最大的邊界(超平面)」

原理與技術

最大化間隔 (Margin)

  • 目標是 最大化分類間隔(Margin)不只想「分開資料」,而是想分得越安全越好
  • 策略:在所有能分開資料的線裡,選「間隔最大」的那一條。
  • 間隔(Margin):分隔線到最近資料點的距離。距離越大,模型對雜訊越不敏感
  • 在硬間隔情況找到能完全分開資料的超平面
  • 若資料不可分,用 軟間隔 引入懲罰參數 C,允許部分錯誤但保持間隔大。
  • 常用損失函數:合頁損失(Hinge Loss)

支持向量(Support Vectors)

不是所有資料點都同等重要。在 SVM 中,真正決定分隔線位置的,只有:距離分隔線最近的那幾個資料點 → 支持向量 其他資料點就算移動一點,只要不影響這些關鍵點,分隔線也不會改變。 所以,SVM對高維資料表現穩定,不容易被大量不重要資料干擾。

參數 C

  • 超參數:控制 「模型對錯誤的容忍程度」
  • C = 對「分錯資料」的懲罰有多嚴格。C 越大 → 不准分錯;C 越小 → 可以容忍錯誤。
  • 參數 C 用來平衡SVM 的目標:
    1. 讓分類間隔(Margin)盡量大
    2. 讓分類錯誤(Misclassification)盡量少
  • 在概念上,C 可以視為正則化強度的反向控制:
    • C 大 → 正則化弱 → 模型更自由
    • C 小 → 正則化強 → 模型被限制
C 大C 小
容忍度對錯誤「零容忍」可以容忍部分錯誤
準確率訓練準確率高訓練準確率可能下降
過擬合分隔線會為了少數點而彎曲
容易過擬合
分隔線較平滑、保守
泛化能力較好,但可能欠擬合

線性 vs 非線性(Kernel 技巧)

線性 SVM

如果資料本來就可以用一條直線(或平面)分開,那就直接找最佳分隔線。

非線性 SVM(Kernel SVM)

  • 如果資料「彎彎曲曲」,直線分不開怎麼辦?把資料投影到更高維度,再用直線分。這個轉換技巧就叫做 Kernel(核函數)
  • 對非線性資料,透過 核技巧(Kernel Trick) 在隱式高維空間計算內積
  • 常用核:
    • 線性(Linear):資料大致線性
    • 多項式(Polynomial):資料有曲線關係
    • RBF:最常見,能處理複雜非線性關係
    • 高斯

SVM 的過擬合

SVM 天生就有「防過擬合」的設計思維:

  • 最大化間隔 → 提升泛化能力
  • 只關心支持向量 → 不被雜訊牽著走 但如果 Kernal 太複雜或參數設定不當,一樣可能過擬合。

SVM 的優點

  • 適合高維資料(特徵多)
  • 泛化能力佳
  • 在資料量中小時表現好
  • 對分類邊界要求嚴謹

SVM 的限制

  • 資料量非常大時,訓練成本高
  • 對參數與 Kernel 選擇敏感
  • 解釋性不如決策樹 直觀

應用領域

  • 文字分類:垃圾郵件、情感分類,因高維稀疏向量配合線性核效果好。
  • 圖像分類(小樣本):HOG/SIFT 特徵配 SVM,用於早期人臉/行人辨識或缺乏大資料的場景。
  • 生物資訊:基因表達數據高維少樣本,用 RBF 核分類疾病亞型。
  • 欺詐與異常偵測:用 One-Class SVM 尋找偏離常態的樣本。
  • 時間序列回歸:SVR 預測價格、需求,對非線性關係有一定彈性。 共通重點:確保特徵縮放、選擇合適核函數並透過交叉驗證調 C/gamma;資料太大時可改用線性 SVM 或其他模型以降低計算。

3 題模擬練習題

  1. SVM 中哪些樣本決定分類平面?
    • A. 所有樣本平均
    • B. 支持向量(靠近邊界的樣本)
    • C. 只有離群點
    • D. 隨機挑的 10%
    • 正確答案:B;解析:只有支持向量會影響最終邊界,其餘樣本不改變解。
  2. 資料不可線性分時如何處理?
    • A. 放棄訓練
    • B. 使用核技巧(如 RBF、多項式)
    • C. 把特徵刪光
    • D. 不做標準化
    • 正確答案:B;解析:核函數可在高維空間找到可分邊界,標準化仍重要。
  3. 參數 C 的作用?
    • A. 控制輸入維度
    • B. 控制錯誤懲罰與間隔取捨,C 大容錯少
    • C. 控制學習率
    • D. 決定核種類
    • 正確答案:B;解析:C 越大越重視分類正確、間隔會變小;越小則容忍更多錯誤換取更大間隔。