支持向量機
一、是什麼
支持向量機,support vector machine,簡稱SVM。是經典機器學習的一個重要分類算法,用於完成數據分類。
進一步描述:它是通過找出一個決策超平面(二維空間指直線,三維空間指平面,超過三維的就是超平面瞭),將已有訓練數據集劃分開,然後對於新數據,根據數據是位於超平面的哪一側完成判斷,得到新數據的分類。
因此基礎的svm算法是一個二分類算法,至於多分類任務,多次使用svm即可解決。
二、直觀理解
以二維空間為例,*代表一類數據,o代表另一類數據,我們希望找到一條直線,可以將兩類數據區分開。這樣的直線有很多,有沒有一條直線是最好的呢?我們希望分類的直線不僅能將數據分類開來,還能離兩類數據盡量的遠,這樣再有新數據進來也不至於出錯,還能很好的將數據完成分類。
如上圖所示,我們要找的就是到兩類最近數據點距離最大的平面。離平面最近的點叫做支持向量,因為一旦確定,隻有它們起到瞭支撐分類的作用,其他距離遠的點已不再關註。我們的任務就是找不同的點做為支持向量,使中間的間隔最大化,找到最大間隔後,間隔的中間就是要找的超平面。
一句話概括:使得距離超平面最近的點到超平面的距離最大。(有點拗口)
三、可處理問題
1.線性可分類問題
包括
a直接線性可分
b軟間隔(數據不理想,有噪聲數據,容忍一些誤差仍看成是線性可分的)
2.非線性(線性不可分)問題
將低維不可分是數據轉化為高維,變得線性可分,然後用線性可分的方法求解,利用核函數技巧簡化計算
四、原理詳解
理解支持向量機用到瞭很多知識點,首先將涉及知識點整理如下:
1.線性可分的數學描述
2.函數間隔、幾何間隔(其中函數間隔是支持向量機提出的定義,不是已有的數學定義)
3.凸二次規劃
4.軟間隔
5.拉格朗日解決條件極值
6.對偶方法
7.核函數
8.smo算法:smo算法是一種用於解決支持向量機訓練過程中所產生優化問題的算法(本文未詳細解釋,有興趣可自行查找資料)
解釋支持向量機原理的過程依次用到瞭上述的知識點,因此按照介紹知識點的順序同時逐步深入講解其原理,解釋過程以手寫方式提供
1
2
3
4
5
6
7
總結:支持向量機算法是在訓練數據集上找到分類的超平面,然後將新數據帶入超平面,根據結果大於0小於0判斷屬於哪一類。完全線性可分問題可以直接找到超平面,考慮數據有噪聲,加入軟間隔仍然可以求解;線性不可分時可以對數據升維,達到線性可分,升維帶來的映射函數不可知問題可利用核技巧解決。
算法實際應用中平衡誤差和最大間隔的系數C是超參數,核函數也是需要我們指定的,所以這是svm中用到的兩個經驗參數。
附:原問題與拉格朗日對偶問題
1
2.
3.
4.
5.
6.
7.
拉格朗日對偶解釋的圖片來自以下鏈接:
https://blog.csdn.net/weixin_41960890/article/details/105254796