svm新增一列自身複製的特徵後,作為支撐向量的樣本點會改變嗎?

時間 2021-06-08 23:14:12

1樓:Zhang Yao

這個問題挺有意思的,有點面試題的感覺,稍微推導了一下,結論如下。

【太長不看】

對於Hard Margin的Linear SVM,支援向量是不變的。

還是Hard Margin的情況,加了Kernel的SVM,則要看Kernel的具體形式,大多數情況支援向量也是不變的。

對於Soft Margin的情況,則不一定。取決於罰引數C的大小。

細節如下,還是假定讀者對SVM有一定了解。

1. Hard Margin Linear SVM

優化問題如上,即假設問題線性可分。記最優解為 。現在我們假設對第k列特徵複製了乙份,則問題變為

顯然, 是乙個可行解,且與原問題有相同的目標函式值。那能不能再給力點?

當然可以,只要我們滿足 就能保證解依然可行,因為此時約束條件不等式左側的值是不會變的。在這之中, 可以取到最小的目標函式值,即複製特徵後的問題的最優解。由於約束中不等號左邊的值不變,使得不等式等號成立的樣本還是那幾個,也即支援向量不會發生變化

舉個1維的例子看一下,1,2,3一共3個正樣本(y=1),-1,-2,-3一共3個負樣本(y=-1),顯然分割超平面應該在零點的位置,即b=0。複製乙份特徵,變到二維平面上就是對角線上的6個點,分割超平面顯然也是條135度的過零點的直線。支援向量始終是離得最近的2個點。

最優解和最優值都直接畫在圖上了。

類似的,複製任意多份特徵都會保有著相同的支援向量。

2. +Kernel

但對於有些indefinite kernel,比如Epanechnikov Kernel(已經超出傳統SVM的範疇了),這個結論估計就不成立了。

3. Soft Margin

還是只看線性下的原問題。

直接用前面1維的例子,資料還是-3,-2,-1,1,2,3,取罰引數C=0.2。此時的最優解 ,-1和1對應的兩個點的鬆弛變數為0.

5,其餘為0,此時最優值為 。支援向量為-2,-1,1,2四個。

如果我們還按照之前的思路,對於擴充的問題,取 ,則目標函式的第一項可以從0.125變為0.0625,關於鬆弛變數的值不變,為0.

2,此時我們可以將目標函式值減少到0.2625,且支援向量不變。然而這並不是最優解。

我們發現,如果將關於w的第一項稍微放大一點點,第二項鬆弛變數之和會有一定的減少,恰巧可以得到最優解,此時,鬆弛變數已經只剩下-1和1兩個了。

如果C=0.1,最優解分別為0.5和(0.25, 0.25),目標函式值為0.225和0.1625,支援向量均為-2,-1,1,2。

如果C=0.3,最優解分別為0.6和(0.5, 0.5),目標函式值為0.42和0.25,支援向量均為-1和1,但對應的鬆弛變數是不同的。

如果C>=0.5,最優解又變回了1和(0.5, 0.5),對應了Hard Margin時的情況。

因此,支援向量是否會變,取決於罰引數C的大小!

pandas如何新增一列,對相同的行賦同乙個值?

peter 利益相關,我是pandas 貢獻者。import pandas aspd import numpy asnp from functools import lru cache from itertools import permutationsdf pd.DataFrame data pe...

如何用stata將單元格的一列拆成多列 如下圖所示,求大神解答 ?

何冬州楊巔楊豔華典生 在stata中,我想有必要找到 能找到簡潔一些的方案來實現。在excel中可以在C1中輸入公式 index A A,2 row 2 column A1 然後選中C1 D1及向下的單元格,按ctrl R向右填充,按F2加ctrl 回車向下填充。注 不再建議在excel2003中使...

哪一列國際列車經過的國家最多?

時光之末 古早時期的東方快車,即巴黎至伊斯坦堡 金鑼落淚 的豪華旅遊列車,似乎經過不少國家,但不一定最多。參照某卡車遊戲 東方快車 成就,依次停靠如下城市 巴黎 斯特拉斯堡 髪 慕尼黑 獨 維也納 奧 布達佩斯 匈 布加勒斯特 羅,金鑼再落淚 君堡 土,金鑼三落淚 當中可能會路過斯洛伐克,以及肯定路...