如何找到哪些列影响 R 中的预测

sal*_*ter 6 r naivebayes

比如说,我正在使用朴素贝叶斯在 R 中开发机器学习模型。所以我将使用 naiveBayes 包构建一个模型,如下所示

model <- naiveBayes(Class ~ ., data = HouseVotes84)
Run Code Online (Sandbox Code Playgroud)

我还可以通过打印模型来打印模型的权重。

我按如下方式进行预测,这给了我一个作为预测的类

predict(model, HouseVotes84[1:10,], type = "raw")
Run Code Online (Sandbox Code Playgroud)

但是,我的问题是,有没有办法查看哪些列对这个预测影响最大?因此,我可以了解导致学生不及格的最重要因素是什么,例如,如果这是响应变量,而各种可能的因素是其他预测变量列。

我的问题是对于 R 中的任何包,上面的 naiveBayes 只是一个例子。

cha*_*ers 3

答案取决于您想要如何进行功能选择

如果它是模型构建过程的一部分,而不是一些事后分析,您可以使用caret特征选择包装方法来确定最佳特征子集,以通过递归特征消除、遗传算法等进行建模,或使用单变量分析进行过滤。


如果它是仅基于您的预测的事后分析的一部分。那么这取决于你所使用的模型类型。caret也支持这个功能仅兼容型号才

对于svm,除了线性核之外,确定系数的重要性非常重要。我不知道有任何尝试尝试对svm一般情况进行某种功能排名,无论语言如何(请告诉我它是否存在!!)。

使用rpart(如问题中标记的那样),您可以直观地查看节点。节点越高越重要。这可以在包中完成caret

library(rpart)
library(caret)
fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
caret::varImp(fit)
#        Overall
#Age    5.896114
#Number 3.411081
#Start  8.865279
Run Code Online (Sandbox Code Playgroud)

naiveBayes您可以从模型输出中看到它。你只需要认真凝视:

data(HouseVotes84, package = "mlbench")
model <- naiveBayes(Class ~ ., data = HouseVotes84)
model
#
#Naive Bayes Classifier for Discrete Predictors
#
#Call:
#naiveBayes.default(x = X, y = Y, laplace = laplace)
#
#A-priori probabilities:
#Y
#  democrat republican 
# 0.6137931  0.3862069 
#
#Conditional probabilities:
#            V1
#Y                    n         y
#  democrat   0.3953488 0.6046512
#  republican 0.8121212 0.1878788
#
#            V2
#Y                    n         y
#  democrat   0.4979079 0.5020921
#  republican 0.4932432 0.5067568
Run Code Online (Sandbox Code Playgroud)

非常简短的一瞥表明,至少V1看起来是一个比 更好的变量V2