2023年07月05日 16:31:02
閱讀數:56376
本文對核方法(kernel method)進行簡要的介紹。
核方法的主要思想是基於這樣乙個假設:「在低維空間中不能線性分割的點集,通過轉化為高維空間中的點集時,很有可能變為線性可分的」 ,例如下圖
左圖的兩類資料要想在一維空間上線性分開是不可能的,然而通過f(x)=(x-a)(x-b)把一維空間上的點轉化為右圖上的二維空間上,就是可以線性分割的了。
然而,如果直接把低維度的資料轉化到高維度的空間中,然後再去尋找線性分割平面,會遇到兩個大問題,一是由於是在高維度空間中計算,導致curse of dimension問題;二是非常的麻煩,每乙個點都必須先轉換到高維度空間,然後求取分割平面的引數等等;怎麼解決這些問題?答案是通過核戲法(kernel trick)。
(pku, shinningmonster, sewm)
kernel trick: 定義乙個核函式k(x1,x2) = , 其中x1和x2是低維度空間中點(在這裡可以是標量,也可以是向量),\phi(xi)是低維度空間的點xi轉化為高維度空間中的點的表示,< , > 表示向量的內積。
這裡核函式k(x1,x2)的表達方式一般都不會顯式地寫為內積的形式,即我們不關心高維度空間的形式。核函式巧妙地解決了上述的問題,在高維度中向量的內積通過低維度的點的核函式就可以計算了。這種技巧被稱為kernel trick。這裡還有乙個問題:「為什麼我們要關心向量的內積?」,一般地,我們可以把分類(或者回歸)的問題分為兩類:引數學習的形式和基於例項的學習形式。
引數學習的形式就是通過一堆訓練資料,把相應模型的引數給學習出來,然後訓練資料就沒有用了,對於新的資料,用學習出來的引數即可以得到相應的結論;
而基於例項的學習(又叫基於記憶體的學習)則是在**的時候也會使用訓練資料,如knn演算法。而基於例項的學習一般就需要判定兩個點之間的相似程度,一般就通過向量的內積來表達。從這裡可以看出,核方法不是萬能的,它一般只針對基於例項的學習。
緊接著,我們還需要解決乙個問題,即核函式的存在性判斷和如何構造? 既然我們不關心高維度空間的表達形式,那麼怎麼才能判斷乙個函式是否是核函式呢?
mercer 定理:任何半正定的函式都可以作為核函式。所謂半正定的函式f(xi,xj),是指擁有訓練資料集合(x1,x2,...xn),我們定義乙個矩陣的元素aij = f(xi,xj),這個矩陣式n*n的,如果這個矩陣是半正定的,那麼f(xi,xj)就稱為半正定的函式。這個mercer定理不是核函式必要條件,只是乙個充分條件,即還有不滿足mercer定理的函式也可以是核函式。常見的核函式有高斯核,多項式核等等,在這些常見核的基礎上,通過核函式的性質(如對稱性等)可以進一步構造出新的核函式。svm是目前核方法應用的經典模型。
上述是目前我所理解到的核方法的主要精神。
核方法 kernel method 的主要思想
本文對核方法 kernel method 進行簡要的介紹。核方法的主要思想是基於這樣乙個假設 在低維空間中不能線性分割的點集,通過轉化為高維空間中的點集時,很有可能變為線性可分的 例如下圖 左圖的兩類資料要想在一維空間上線性分開是不可能的,然而通過f x x a x b 把一維空間上的點轉化為右圖上...
BFS的主要思想
dfs之前在回溯法中已經介紹過了 bfs主要是用佇列實現,具體模版是入隊第乙個元素,當佇列不為空時進行迴圈,如果需要記錄每層的資料 層數 就儲存佇列的長度,在佇列不為空的迴圈裡進行for長度的迴圈,先出隊第乙個元素,進行條件判斷,滿足條件的節點入隊。bfs主要應用於二叉樹層次遍歷相關 二叉樹的右檢視...
區間DP的主要思想
區間動態規劃問題一般都是考慮,對於每段區間,他們的最優值都是由幾段更小區間的最優值得到,是分治思想的一種應用,將乙個區間問題不斷劃分為更小的區間直至乙個元素組成的區間,列舉他們的組合 求合併後的最優值。設f i,j 1 i j n 表示區間 i,j 內的數字相加的最小代價 最小區間f i,i 0 乙...