支持向量機——內核
對於非線性“Decision Boundary”
如果用傳統的多項式回歸,有
\[{h_\theta }\left( x \right) = {\theta _0} + {\theta _1}{x_1} + {\theta _2}{x_2} + {\theta _3}{x_1}{x_2} + {\theta _4}x_1^2 + {\theta _5}x_2^2 + \cdot \cdot \cdot \]
並且,想要
\[{h_\theta }\left( x \right) = \left\{ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
1&{{\theta _0} + {\theta _1}{x_1} + \cdot \cdot \cdot \ge 0}
\end{array}}\\
{\begin{array}{*{20}{c}}
0&{{\theta _0} + {\theta _1}{x_1} + \cdot \cdot \cdot < 0}
\end{array}}
\end{array}} \right.\]
這時,把hθ(x)寫成如下形式
\[\begin{array}{l}
{h_\theta }\left( x \right) = {\theta _0} + {\theta _1}{f_1} + {\theta _2}{f_2} + {\theta _3}{f_3} + {\theta _4}{f_4} + {\theta _5}{f_5} + \cdot \cdot \cdot \\
{f_1} = {x_1},{f_2} = {x_2},{f_3} = {x_1}{x_2},{f_4} = x_1^2,{f_5} = x_2^2,...
\end{array}\]
那麽問題來了,有沒有與這些f不同或比現在這些f更好的選擇呢?(比“相乘”、“平方”等更好或不同)
內核
這裏為了方便理解,在給定x的情況下,只計算三個新的特征。
這三個特征是根據三個給定的“landmarks”:l(1),l(2),l(3)計算出來的(“landmarks”如何確定稍後再說)。
這裏假設x只有兩個特征x1和x2(這裏忽略x0=1)
給出x後,分別計算x與l(1),l(2),l(3)的“similarity”
\[\begin{array}{l}
{f_1} = similarity\left( {x,{l^{\left( 1 \right)}}} \right) = \exp \left( { - \frac{{{{\left\| {x - {l^{\left( 1 \right)}}} \right\|}^2}}}{{2{\sigma ^2}}}} \right)\\
{f_2} = similarity\left( {x,{l^{\left( 2 \right)}}} \right) = \exp \left( { - \frac{{{{\left\| {x - {l^{\left( 2 \right)}}} \right\|}^2}}}{{2{\sigma ^2}}}} \right)\\
{f_3} = similarity\left( {x,{l^{\left( 3 \right)}}} \right) = \exp \left( { - \frac{{{{\left\| {x - {l^{\left( 3 \right)}}} \right\|}^2}}}{{2{\sigma ^2}}}} \right)
\end{array}\]
這裏的“similarity”函數就是“內核”,這種內核又稱為“高斯內核”。
這個內核函數的作用是什麽?
對於
\[{f_1} = similarity\left( {x,{l^{\left( 1 \right)}}} \right) = \exp \left( { - \frac{{{{\left\| {x - {l^{\left( 1 \right)}}} \right\|}^2}}}{{2{\sigma ^2}}}} \right) = \exp \left( { - \frac{{\sum\limits_{j = 1}^n {{{\left( {{x_j} - l_j^{\left( 1 \right)}} \right)}^2}} }}{{2{\sigma ^2}}}} \right)\]
當x≈l(1)時:
\[{f_1} \approx \exp \left( { - \frac{{{0^2}}}{{2{\sigma ^2}}}} \right) \approx 1\]
當x距離l(1)比較遠時
\[{f_1} \approx \exp \left( { - \frac{{l\arg enumbe{r^2}}}{{2{\sigma ^2}}}} \right) \approx 0\]
同理,可以得到x與經過“內核”函數後的結果。
用圖比較直觀的理解
假設
\[\begin{array}{l}
{l^{\left( 1 \right)}} = \left[ {\begin{array}{*{20}{c}}
3\\
5
\end{array}} \right]\\
{f_1} = \exp \left( { - \frac{{{{\left\| {x - {l^{\left( 1 \right)}}} \right\|}^2}}}{{2{\sigma ^2}}}} \right)
\end{array}\]
當σ2=1時
內核函數的示意圖如圖中上半部分,可以看出當x距離l(1)越近,f1越接近於1,越遠越接近於0.
而對於不同的σ來說,圖形的形狀不相同
當σ2=0.5時
當σ2=3時
它們的區別在於當x距離l距離變化時f的變化“快慢”不同。
舉具體例子
給出x;給出l(1),l(2),l(3)
支持向量機會計算f1,f2,f3
現假設經過訓練後得到的參數值θ0=-0.5,θ1=1,θ2=1,θ3=0。
則當x距離l(1)較近時(圖中紅點)f1≈1,f2≈0,f3≈0,hθ(x)≈0.5≥0,則預測結果為1
同理當為圖中綠點時,預測結果為0;黃點時,預測結果為1.
最終支持向量機會得到如圖黑色曲線那樣的“Decision Boundary”。
如何選定l?
支持向量機會選取所有的樣本作為l,也就是如果有m個樣本,既有m個l(1),...,l(m)。
經過處理後,支持向量機現在的任務是
\[\underbrace {\min }_\theta \left\{ {C\left[ {\sum\limits_{i = 1}^m {{y^{\left( i \right)}}{\mathop{\rm Cos}\nolimits} {t_1}\left( {{\theta ^T}{f^{\left( i \right)}}} \right) + \left( {1 - {y^{\left( i \right)}}} \right){\mathop{\rm Cos}\nolimits} {t_0}\left( {{\theta ^T}{f^{\left( i \right)}}} \right)} } \right] + \frac{1}{2}\sum\limits_{j = 1}^n {\theta _j^2} } \right\}\]
SVM的參數選擇
對於C(相當於1/λ):
- 比較大的C,會出現“低偏差”,“高方差”。這會陷入“過擬合”情況;
- 比較小的C,會出現“高偏差”,“低方差”,這會陷入“欠擬合”情況。
對於σ2:
比較大的σ2,特征f會變化的比較“順滑”,會出現“高偏差”,“低方差”,這會陷入“欠擬合”情況;
比較小的σ2,特征f會變化的比較“快速”,會出現“低偏差”,“高方差”。這會陷入“過擬合”情況。
內核選擇
除了高斯內核,還有“線性內核”也就是沒有內核(θTx)。
支持向量機——內核