關於SVM中的幾點解惑
之前曾經在知乎上問過一個ml phd幾個問題,問題如下:
1.SVM模型中,假如通過高斯核這樣的可以把樣本空間向無限多維對映的核函式,對映之後,樣本空間一定可分麼?之所以有這個疑惑,是因為我曾經記得有一個老師說:無論樣本空間多麼不可分,只要對映的維數足夠高,就一定可分。
解答:高斯核函式的確是把樣例對映到無限多維,並且也一定可以使得樣例線性可分(不過這裡有一個前提,前提就是同樣的樣例不能即既被標記為正例,又被標記為負例)。
2.如果第一個問題的回答是yes,那在SVM中又為什麼需要使用鬆弛變數和懲罰因子呢,既然使用核函式對映之後,一定可分,那也就不會出現一個負樣例跑到正樣例區域這樣的事情了。用鬆弛變數 又有什麼意義呢?
解答:使用鬆弛變數和懲罰因子的意義在於避免overfitting,使得模型泛化性更好。由於資料有一些噪聲,我們不希望我們的model對這些噪聲過於敏感。
關於1,2問題,知乎王贇 Maigo的解答是這樣的:
理論上來講,維度足夠高以後,確實是幾乎一定線性可分。
但是不排除有特殊情況,比如有一正一負兩個樣本的特徵完全一樣。
更重要的是,實際應用中我們並不需要追求完美的線性可分;費了很大的力氣完美分割了兩個類,很可能意味著overfitting。
所以,我們通過鬆弛變數和懲罰因子的平衡,讓SVM自己學習到哪些樣本是值得分開的,哪些樣本是可以弄錯的(把它弄對花的代價太大)。這樣才能獲得可推廣的模型。
PS:之前一直不太明白這一點。覺得如果把資料向無限多維進行對映的話,樣例一定線性可分,既然這樣,
3.看到很多機器學習包,會使用sigmoid核和高斯核,他們都是向無限多維度進行對映的。但是也許資料本身對映到100維就好了呢,為什麼要對映到無限多維呢?
解答:1.因為在很多時候,我們並無法確定,資料到底對映到多少維算合適。比如你想把資料對映到100維,你打算怎麼對映呢,你又怎麼確定每一維是什麼樣呢。2.因為從計算的簡便性來說,要遍歷所有的核空間,逐一嘗試不同的維度,是需要大量的時間的。3.其次,因為機器學習包是開源的,所以要適應各種不同型別的資料。
4.在機器學習中,懲罰因子是人工設定的,而鬆弛變數是模型優化得到的麼?
解答:對的!懲罰因子需要人工設定。而鬆弛變數和w一樣,是模型優化得到的(通過smo演算法)!
5.在SVM中利用核函式對映,一般會對映到多少維度呢,這個維度有辦法估量麼?
解答:n階多項式可以把d維對映到d^n這個數量級的維數;其它核一般都是對映到無限維。
2.假如我資料是100萬維,利用核函式對映到高緯度,會不會高緯度比100萬維還要小?
解答:不會。
3.對於不同的核函式,比如sigmoid維度,高斯核,多項式核,他們對映資料到高緯的能力是怎樣的呢?
解答:它們都對映到無限維,而且一般不去研究對映本身,因為這個對映是隱含的。有些核函式有其適用的場景(比如chi-square核函式適用於histogram(直方圖)特徵),但實際應用中一般都是挨個試一下,選最好的。