SVM支援向量機的理解

2021-09-10 15:54:00 字數 3068 閱讀 8974

support vector machine

為什麼一定要研究線性分類?

首先說一下為什麼對資料集一定要說線性可分或線性不可分,難道不可以非線性分開嗎?想要非線性分開當然可以,實際上svm只是把原來線性不可分的資料點對映到乙個新的空間,轉換為在新空間中線性可分資料來進行分類的。如果返回到原來資料的空間中,其實還是非線性分開的。但是,那為什麼不直接在原資料空間中進行非線性分開,而是非要轉到新的空間進行線性分開呢?首先,非線性分開比線性分開要複雜很多。線性分開只要一條直線或乙個平面之類的就可以了,可以說是曲線中最簡單的表現形式。而非線性分開的情況就多了去了。僅就二維空間而言,曲線、折線、雙曲線、圓錐曲線、波浪線,以及毫無規律的各種其他曲線太多,沒有辦法進行統一的處理。即便能夠針對某乙個具體問題處理得到了非線性分類結果,也無法很好的推廣到其他情形,這樣,每針對乙個具體問題就要數學家專門來建個曲線模型,太麻煩而且也沒有那麼多時間精力。因此,採用線性分類一是因為它簡單,性質很容易研究透徹;二是因為它推廣能力強,研究透了之後,其他所有問題都迎刃而解,無需建立其他模型。所以,雖然svm多了將原始資料對映到新空間這一步驟,看起來增加了工作量,而且如何去尋找新的對映空間看著也不是很容易,但是,總體來說,研究透了之後就會比其他方法省很多力氣。

svm的思想是什麼?

2.1 硬間隔支援向量機

svm中最關鍵的思想之一就是引入和定義了「間隔」這個概念。這個概念本身很簡單,以二維空間為例,就是點到分類直線之間的距離。假設直線為y=wx+b,那麼只要使所有正分類點到該直線的距離與所有負分類點到該直線的距離的總和達到最大,這條直線就是最優分類直線。這樣,原問題就轉化為乙個約束優化問題,可以直接求解。這叫做硬間隔最大化,得到的svm模型稱作硬間隔支援向量機。

2.2 軟間隔支援向量機

但是新問題出現了,在實際應用中,我們得到的資料並不總是完美的線性可分的,其中可能會有個別雜訊點,他們錯誤的被分類到了其他類中。如果將這些特異的噪點去除後,可以很容易的線性可分。但是,我們對於資料集中哪些是雜訊點卻是不知道的,如果以之前的方法進行求解,會無法進行線性分開。是不是就沒辦法了呢?假設在y=x+1直線上下分為兩類,若兩類中各有對方的幾個噪點,在人的眼中,仍然是可以將兩類分開的。這是因為在人腦中是可以容忍一定的誤差的,仍然使用y=x+1直線分類,可以在最小誤差的情況下進行最優的分類。同樣的道理,我們在svm中引入誤差的概念,將其稱作「鬆弛變數」。通過加入鬆弛變數,在原距離函式中需要加入新的鬆弛變數帶來的誤差,這樣,最終的優化目標函式變成了兩個部分組成:距離函式和鬆弛變數誤差。這兩個部分的重要程度並不是相等的,而是需要依據具體問題而定的,因此,我們加入權重引數c,將其與目標函式中的鬆弛變數誤差相乘,這樣,就可以通過調整c來對二者的係數進行調和。如果我們能夠容忍雜訊,那就把c調小,讓他的權重降下來,從而變得不重要;反之,我們需要很嚴格的雜訊小的模型,則將c調大一點,權重提公升上去,變得更加重要。通過對引數c的調整,可以對模型進行控制。這叫做軟間隔最大化,得到的svm稱作軟間隔支援向量機。

2.3 非線性支援向量機

之前的硬間隔支援向量機和軟間隔支援向量機都是解決線性可分資料集或近似線性可分資料集的問題的。但是如果噪點很多,甚至會造成資料變成了線性不可分的,那該怎麼辦?最常見的例子是在二維平面笛卡爾座標系下,以原點(0,0)為圓心,以1為半徑畫圓,則圓內的點和圓外的點在二維空間中是肯定無法線性分開的。但是,學過初中幾何就知道,對於圓圈內(含圓圈)的點:x2+y2≤1,圓圈外的則x2+y2>1。我們假設第三個維度:z=x2+y2,那麼在第三維空間中,可以通過z是否大於1來判斷該點是否在圓內還是圓外。這樣,在二維空間中線性不可分的資料在第三維空間很容易的線性可分了。這就是非線性支援向量機。

這是svm非常重要的思想。對於在n維空間中線性不可分的資料,在n+1維以上的空間會有更大到可能變成線性可分的(但並不是一定會在n+1維上線性可分。維度越高,線性可分的可能性越大,但並不完全確保)。因此,對於線性不可分的資料,我們可以將它對映到線性可分的新空間中,之後就可以用剛才說過的硬間隔支援向量機或軟間隔支援向量機來進行求解了。這樣,我們將原問題變成了如何對原始資料進行對映,才能使其在新空間中線性可分。在上面的例子中,通過觀察可以使用圓的方程來進行對映,但在實際資料中肯定沒有這麼簡單。如果都可以觀察出規律來,那就不需要機器來做svm了。。

實際中,對某個實際問題函式來尋找乙個合適的空間進行對映是非常困難的,幸運的是,在計算中發現,我們需要的只是兩個向量在新的對映空間中的內積結果,而對映函式到底是怎麼樣的其實並不需要知道。這一點不太好理解,有人會問,既然不知道對映函式,那怎麼能知道對映後在新空間中的內積結果呢?答案其實是可以的。這就需要引入了核函式的概念。核函式是這樣的一種函式:仍然以二維空間為例,假設對於變數x和y,將其對映到新空間的對映函式為φ,則在新空間中,二者分別對應φ(x)和φ(y),他們的內積則為<φ(x),φ(y)>。我們令函式kernel(x,y)=<φ(x),φ(y)>=k(x,y),可以看出,函式kernel(x,y)是乙個關於x和y的函式!而與φ無關!這是乙個多麼好的性質!我們再也不用管φ具體是什麼對映關係了,只需要最後計算kernel(x,y)就可以得到他們在高維空間中的內積,這樣就可以直接帶入之前的支援向量機中計算!真是媽媽再也不用擔心我的學習了。。

得到這個令人歡欣鼓舞的函式之後,我們還需要冷靜一下,問問:這個kernel函式從哪來?他又是怎麼得到的?真的可以解決所有對映到高維空間的問題嗎?

這個問題我試著回答一下,如果我理解對的話。核函式不是很好找到,一般是由數學家反向推導出來或拼湊出來的。現在知道的有多項式核函式、高斯核函式、字串核函式等。其中,高斯核函式對應的支援向量機是高斯徑向基函式(rbf),是最常用的核函式。

rbf核函式可以將維度擴充套件到無窮維的空間,因此,理論上講可以滿足一切對映的需求。為什麼會是無窮維呢?我以前都不太明白這一點。後來老師講到,rbf對應的是泰勒級數展開,在泰勒級數中,乙個函式可以分解為無窮多個項的加和,其中,每乙個項可以看做是對應的乙個維度,這樣,原函式就可以看做是對映到了無窮維的空間中。這樣,在實際應用中,rbf是相對最好的乙個選擇。當然,如果有研究的話,還可以選用其他核函式,可能會在某些問題上表現更好。但是,rbf是在對問題不了解的情況下,對最廣泛問題效果都很不錯的核函式。因此,使用範圍也最廣。

這樣,對於線性不可分的資料,也可以通過rbf等核函式來對映到高維,甚至無窮維的空間中而變得線性可分,通過計算間隔和鬆弛變數等的最大化,可以對問題進行求解。當然,在求解中,還有一些數學的技巧來簡化運算,例如,使用拉格朗日乘子來將原問題變換為對偶問題,可以簡化計算。這些在實驗中用不到,而且數學原理有點困難,就先不講了。

支援向量機(SVM)

簡介 術語 支援向量機 svm 是乙個類分類器,正式的定義是乙個能夠將不同類樣本在樣本空間分隔的超平面。換句話說,給定一些標記 label 好的訓練樣本 監督式學習 svm演算法輸出乙個最優化的分隔超平面。首先我們假定有乙個未知的欲分類的集合,可以進行分割,但是我們不知道分割的函式 超平面,也叫真實...

支援向量機SVM

支援向量機svm support vector machine 是機器學習領域的乙個有監督的學習模型。一 簡介 支援向量機建立在統計學習理論的基礎之上。統計學習理論 statistical learning theory簡稱slt 是一種處理小樣本的統計理論 為研究有限樣本情況下的統計模式識別和更廣...

SVM支援向量機

在機器學習領域,很多時候會用到分類的一些演算法,例如knn,貝葉斯。我們可以把分類的樣本簡單除暴的分為兩種型別。線性可分和非線性可分。可以使用乙個非常簡單的例子來解釋什麼是線性可分,什麼是線性不可分。a 線性可分的2類樣本 b 非線性可分的2類樣 已知乙個線性可分的資料集,其中x表示乙個n維向量,當...