[英]Limit the number of support vectors in R svm package e1071?
我在軟件包e1071中使用了svm函數。 據我了解,svm的基本功能可以將兩個線性可分離的類與一個超平面分開(支持向量)。 更高級的功能使您可以執行數值回歸和非線性分離。 當我開始在某些數據上對其進行測試時,我無法理解為什么模型的輸出是龐大的支持向量集。 當我在一些非常簡單的測試示例上運行它時,我得到了相同的結果。 這是一個例子:
X = rnorm(1000)
Y = rnorm(1000)
data = data.frame(X, Y, Z = as.factor(X + Y > 0))
model = svm(formula = Z ~ X + Y, data = data, kernel = "linear")
結果如下:
Call:
svm(formula = Z ~ X + Y, data = data, kernel = "linear")
Parameters:
SVM-Type: C-classification
SVM-Kernel: linear
cost: 1
gamma: 0.5
Number of Support Vectors: 102
顯然,此示例只能通過一個支持向量進行線性分離。 如果不確定,可以運行:
ggplot(data, aes(X, Y, col = Z)) + geom_point()
102個支持向量的含義是什么? 為什么支持向量的數量不是參數?
謝謝
軟保證金和硬保證金 svm之間有區別。 這由成本參數控制,該參數對支持向量違反邊際約束的程度進行了懲罰。 因此,僅在成本參數非常大的情況下,才能獲得最少數量的支持向量(三個而不是一個)。 嘗試例如cost參數的值> 10000,您將獲得三個支持向量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.