標籤:

諸如「拉普拉斯這樣的積分變換中的核函數」與「SVM中用來分類的核函數」是一回事么?

兩者似乎都叫核函數 但是我又不甚理解積分變換中核函數的意義。有知友能幫忙回答一下,或者推薦能解答的參考書目么?


這完完全全就是一回事呀!這是典型的再生核 Hilbert 空間理論(RKHS)!

由於 RKHS 理論相對比較基礎,所以還請題主好好看書!

我列出一個 RKHS 中關鍵的理論方程:

f(x)=int_{w in mathcal{D}} K(x,w) f(w) dw

就是他,這就是 SVM 中核函數構造分界面方程的基本原理,只不過由積分寫成了求和。

f(x) = sum_i alpha_i y_i  K(x, x_i)

然而,正交級數變換,也是同樣的道理,比如 Fourier 變換:

f(vec w) = int_{ vec x in mathcal{R}^n} f(vec x) e^{-j<vec w, vec x>} d vec x

其中核函數為:K(vec x,vec y) = e^{-j<vec x, vec y>}.

這都是最基本的 RKHS 理論,推薦樓主看幾本基礎的書:

1.MIT 出的《Learning with Kernels》

2.Rudin 的《Functional Analysis》


看了 @肖寒 的答案之後,我開始覺得傅里葉變換和SVM的核函數有點兒深層聯繫了。

@肖寒 說,使用核函數的一般方法是f(x)=int_{w in mathcal{D}} K(x,w) f(w) dw

先看傅里葉變換:f(vec w) = int_{ vec x in mathcal{R}^n} f(vec x) e^{-j<vec w, vec x>} d vec x

傅里葉變換的作用,是把一個對象在一個域中的表示形式轉換成在另一個域中的表示形式。

在這兩個域中,這個對象的表示形式都是一個標量值函數(自變數可以不是標量)。

而核函數起到的作用是把兩個域(例如時域和頻域)聯繫起來:它有兩個自變數,分別是兩個域中的元素。給定一個域中的一個元素,核函數就變成另一個域中的一個基函數。

再看SVM:f(x) = sum_i alpha_i y_i  K(x, x_i)

我之所以之前沒有看出它與一般形式的聯繫,是因為我把一個數據點當成了「一個對象」。

事實上,應當把「一個分類器」當成「一個對象」。

能夠表示這個對象的一個域,就是測試數據點所處的空間mathbb{R}^d,一個分類器可以用這個域上的一個標量值函數表達,某點處的函數值就是該點到判別邊界的距離。

而另一個域,則是訓練數據的集合D = { x_1, ldots, x_n }。同一個分類器在這個域上的表示形式也是一個標量函數,其定義域就是D,在x_i處的取值為alpha_i y_i

給定D中的一個元素x_iK(x,x_i)就變成一個自變數為x in mathbb{R}^d的標量值函數,它是域mathbb{R}^d中的一個基。

給定mathbb{R}^d中的一個元素xK(x,x_i)就變成一個自變數為x_i in D的標量值函數,它是域D中的一個基。

當然,傅里葉變換和SVM的核函數也有不同點。

在傅里葉變換中,核函數在兩個域中導出的基都是完備、正交的;在SVM中則不然。


這玩意惡寒,卷積,各種變換(拉屎,傅里葉,Z,hilbert-huang,wavelet....),filter,svm的升降維度全都可以套進這個框架裡面。他們怎麼想出來的,太可怕了。


推薦閱讀:

SVM的核函數如何選取?
SVM(支持向量機)屬於神經網路範疇嗎?
現在還有必要對SVM深入學習嗎?

TAG:SVM |