簡體   English   中英

得到線性SVM回歸線的方程

[英]get equation of linear SVM regression line

在回歸的情況下,我很難找到一種方法來獲得線性SVM模型的方程,因為大多數問題都涉及分類......我已經適應了插入包。

1-單變量病例

set.seed(1)
fit=train(mpg~hp, data=mtcars, method="svmLinear")
plot(x=mtcars$hp, y=predict(fit, mtcars), pch=15)
points(x=mtcars$hp, y=mtcars$mpg, col="red")
abline(lm(mpg~hp, mtcars), col="blue")

這給出了紅色=實際,黑色=擬合和藍色線的圖是經典回歸。 在這種情況下,我知道我可以從2個點手動計算SVM預測線,但有沒有辦法從模型結構直接得到方程? 我實際上需要像這樣的等式y = a + b x(這里mpg =?+?* hp ),其值為原始比例。

在此輸入圖像描述

2-多元

相同的問題,但有2個因變量( mpg~hp+wt )謝謝,

是的,我相信有。 看一下這個類似的答案 ,但不使用插入符號庫。 如果將svp = fit$finalModel添加到示例中,您應該能夠幾乎完全遵循它。 我在下面的數據中應用了類似的技術。 由於庫在運行時縮放數據,因此我將數據縮放以適應矢量圖。

require(caret)

set.seed(1)
x = model.matrix(data=mtcars, mpg ~ scale(hp)) #set up data
y = mtcars$mpg

fit=train(x, y, method="svmLinear") #train

svp = fit$finalModel #extract s4 model object

plot(x, xlab="", ylab="")
w <- colSums(coef(svp)[[1]] * x[unlist(alphaindex(svp)),])
b <- b(svp)
abline(b/w[1],-w[2]/w[1], col='red')
abline((b+1)/w[1],-w[2]/w[1],lty=2, col='red')
abline((b-1)/w[1],-w[2]/w[1],lty=2, col='red')

在此輸入圖像描述

而你的第二個問題:

x = model.matrix(data=mtcars, mpg ~ scale(hp) + scale(wt) - 1) #set up data
fit=train(x, y, method="svmLinear") #train

svp = fit$finalModel #extract s4 model object

plot(x, xlab="", ylab="")
w <- colSums(coef(svp)[[1]] * x[unlist(alphaindex(svp)),])
b <- b(svp)
abline(b/w[1],-w[2]/w[1], col='red')
abline((b+1)/w[1],-w[2]/w[1],lty=2, col='red')
abline((b-1)/w[1],-w[2]/w[1],lty=2, col='red')

在此輸入圖像描述

編輯

上面的答案涉及繪制邊界,而不是線性SVM回歸線。 要回答這個問題,獲得這條線的一個簡單方法是提取預測值並繪制回歸圖。 實際上你只需要幾個點來獲取該行,但為了簡單起見,我使用了以下代碼。

abline(lm(predict(fit, newdata=mtcars) ~ mtcars$hp), col='green')

要么

abline(lm(predict(fit) ~ mtcars$hp), col='green')

在此輸入圖像描述

暫無
暫無

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

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