支持向量機(svm)

支持向量機

一、是什麼

支持向量機,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

赞(0)