SVM: 使用kernels(核函數)的整個SVM算法過程


將所有的樣本都選做landmarks

一種方法是將所有的training data都做為landmarks,這樣就會有m個landmarks(m個trainnign data),這樣features就是某個x(可以是trainning data/cross validation data/test data里面的)與這些landmarks之間的距離的遠近程度的描述。

landmarks選定后得出新的features向量

給出一個x,則通過這些landmarks來計算features向量,和之前的類似,將f0=1;

對於在training data里面的x(i)則通過kernel函數映射后變為f1(i),f2(i).....fm(i)(m個trainning data,m個landmarks),對於fi(i),由高斯核函數計算得出1

如何minimize cost function得出parameters-- θ

我們根據核函數計算出new features f(有m+1維):m個landmarks(m個data set),+1是f0=1

cost function與之前的有些不同,因為我們用了新的features,所以z不是θTx(i)而是θTf(i);后面的正則化項因為θ為m+1維,不對θ0正則化,即從θ1-m進行累加

這兒需要注意的是在使用SVM與核函數時,不是使用θTθ來表示parameters的平方的累加,而是使用θT(M為依賴於采用的某個核函數的矩陣),為另一種略有區別的距離度量方式,不使用||θ||2進行最小化,而是最小化另一種類型的度量(參數向量θ的變尺度形式,這種變化和核函數有關),這樣使得SVM有效率的運行,之所以這樣做是為了適應大的數據集,因為當我們的數據集很大的時,landmarks就會很多,θ的維數也會很大,這樣計算θ就會很慢,所以做了這樣的優化。

kernels能應用到其它算法嗎?如logistic regression等?可以將kernels應用到其它算法,但是用於SVM的計算技巧卻不能較好的推廣到其它算法(如logistic regression),所以將kernels應用到logistic regression時,會變得非常慢。

SVM與kernels是相配的,而logistic regression與kernels會十分慢。

一些計算小技巧是人們專門為使用kernels的SVM來開發的

如何確定SVM的一些參數(如C與高斯核函數的σ2)--bias與variance之間的權衡

C=1/λ,λ為正則化參數,當C大時,表示λ小,則會high variance,low bias(overfitting)

當C小是,表示λ大,則會high bias, low variance(underfitting)

σ2為高斯核函數的參數,用來表示f(新的features)與x之間變化是平緩的還是急劇的。

大的σ2,表示參數的值隨着x的變化而變化平緩,所以會出現underfitting(high bias,lower variance)

小的σ2,表示參數的值隨着x的變化而變化急劇所以會出現overfitting(high variance,lower bias)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM