中文名稱:支持向量機 英文名稱:Support Vector Machine
定義(Definition)
一種監督式學習模型, 主要用來做分類(也可以做迴歸),核心目標是: 找出一條「區隔不同類別、且安全距離最大的邊界(超平面)」。
原理與技術
最大化間隔 (Margin)
- 目標是 最大化分類間隔(Margin)不只想「分開資料」,而是想分得越安全越好。
- 策略:在所有能分開資料的線裡,選「間隔最大」的那一條。
- 間隔(Margin):分隔線到最近資料點的距離。距離越大,模型對雜訊越不敏感
- 在硬間隔情況找到能完全分開資料的超平面
- 若資料不可分,用 軟間隔 引入懲罰參數 C,允許部分錯誤但保持間隔大。
- 常用損失函數:合頁損失(Hinge Loss)
支持向量(Support Vectors)
不是所有資料點都同等重要。在 SVM 中,真正決定分隔線位置的,只有:距離分隔線最近的那幾個資料點 → 支持向量 其他資料點就算移動一點,只要不影響這些關鍵點,分隔線也不會改變。 所以,SVM對高維資料表現穩定,不容易被大量不重要資料干擾。
參數 C
- 超參數:控制 「模型對錯誤的容忍程度」
- C = 對「分錯資料」的懲罰有多嚴格。C 越大 → 不准分錯;C 越小 → 可以容忍錯誤。
- 參數 C 用來平衡SVM 的目標:
- 讓分類間隔(Margin)盡量大
- 讓分類錯誤(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 題模擬練習題
- SVM 中哪些樣本決定分類平面?
- A. 所有樣本平均
- B. 支持向量(靠近邊界的樣本)
- C. 只有離群點
- D. 隨機挑的 10%
- 正確答案:B;解析:只有支持向量會影響最終邊界,其餘樣本不改變解。
- 資料不可線性分時如何處理?
- A. 放棄訓練
- B. 使用核技巧(如 RBF、多項式)
- C. 把特徵刪光
- D. 不做標準化
- 正確答案:B;解析:核函數可在高維空間找到可分邊界,標準化仍重要。
- 參數 C 的作用?
- A. 控制輸入維度
- B. 控制錯誤懲罰與間隔取捨,C 大容錯少
- C. 控制學習率
- D. 決定核種類
- 正確答案:B;解析:C 越大越重視分類正確、間隔會變小;越小則容忍更多錯誤換取更大間隔。