如何在支持向量机中找到重要因素

Son*_*ang 2 r machine-learning svm

原始数据很大,所以我不能在这里发布。问题是我在 R 中使用包 e1071 来做支持向量机分析。原始数据有100个因子,预测结果为1或0,比如我生成一个10个因子的随机数据框。

for (i in 1:10){
    factor<-c(factor,runif(10,5,10))
}
value<-matrix(factor,nrow=10)
y<-sample(0:1,10,replace=T)
data<-as.data.frame(cbind(y,value))
Run Code Online (Sandbox Code Playgroud)

我做了预测部分,但我想知道如何确定哪些因素(在 10 个因素中)对结果很重要(更相关)。

例如,结果可能是因子 2、4、5,而 10 是对最终结果的贡献。

你能帮我解决这个问题吗?非常感谢。

skw*_*won 5

这个问题的完整答案并不简单。以下是有关此主题的入门示例:

library(rpart)
library(e1071)

cat('Regression tree case:\n')
fit1 <- rpart(Species ~ ., data=iris)
print(fit1$variable.importance)

cat('SVM model case:\n')
fit2 <- svm(Species ~ ., data = iris)
w <- t(fit2$coefs) %*% fit2$SV                 # weight vectors
w <- apply(w, 2, function(v){sqrt(sum(v^2))})  # weight
w <- sort(w, decreasing = T)
print(w)
Run Code Online (Sandbox Code Playgroud)

上面脚本的结果是:

Regression tree case:
 Petal.Width Petal.Length Sepal.Length  Sepal.Width 
    88.96940     81.34496     54.09606     36.01309 

SVM model case:
Petal.Length  Petal.Width Sepal.Length  Sepal.Width 
   12.160093    11.737364     6.623965     4.722632 
Run Code Online (Sandbox Code Playgroud)

您可以看到两个模型的结果变量重要性相似。

这是解释 SVM 结果的众多方法之一。

有关更多信息,请参阅以下论文:“变量和特征选择简介”,http://jmlr.csail.mit.edu/papers/v3/guyon03a.html