將所有的樣本都選做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的平方的累加,而是使用θTMθ(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)