簡體   English   中英

SVM:成本參數VS。 支持向量數

[英]SVM: Cost parameter VS. number of support vectors

我正在使用庫e1071在R中訓練SVM模型,在這里我更改了成本函數並觀察了得到的支持向量的數量。

library("e1071")
library("mlbench")
data(Glass, package="mlbench")
svm.model <- svm(Type ~ ., data = Glass, cost = 0.00100, gamma= 1)
sum(svm.model$nSV)
#[1] 208
svm.model <- svm(Type ~ ., data = Glass, cost = 1, gamma= 1)
sum(svm.model$nSV)
#[1] 183
svm.model <- svm(Type ~ ., data = Glass, cost = 100000, gamma= 1)
sum(svm.model$nSV)
#[1] 172

我的問題如下:這里的成本參數是否等於軟裕量SVM的雙重Lagrange公式中的C參數? 如果這些參數相同,那么我們不應該觀察到越來越多的支持向量嗎?

“但是,就像在任何正則化方案中一樣,在這里至關重要的是,為懲罰因子C選擇合適的值。如果太大,對不可分離點的懲罰就會很高,並且我們可能會存儲許多支持向量和過度擬合如果它太小,我們可能不合身。” Alpaydin(2004),第224頁

給出的示例表明,成本參數越大,我們得到的支持向量就越少。 那么,這里出了什么問題?

[編輯1]我與提到的圖書館的編輯交換了一些電子郵件,他舉了一個反例。

“基本上,是的,但這不是線性的,請嘗試:”

N = sapply(1:1000,function(i)svm(Species〜。,data = iris,cost = i)$ tot.nSV)圖(N)

我從圖書館創建者那里得到了這個答案:

基本上,是的,但這不是線性的,請嘗試:

N = sapply(1:1000,function(i)svm(Species〜。,data = iris,cost = i)$ tot.nSV)

積(N)

您的直覺是絕對正確的,但您需要了解分類算法在無限維度空間中跳舞,而您對此一無所知。 將C從1更改為1000可能會在宇宙的不同部分采用分類邊界-從字面上看-。 嘗試在較小的C范圍內進行實驗,看看它如何變化。 我從256000、128000、64000,...,32、16、8、4、2(每次減半)中選擇了C,發現C = 15、8、4等周圍存在有趣的行為。您會發現有數百個點符合條件成為支持向量,並且曲面可以按照您想要的任何方式彎曲。 因此,增加“ C意味着更多支持向量”規則僅在統計上是正確的。 SV的確切數量將取決於如何放置點以及如何彎曲曲面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM