说,我正在研究R中使用朴素贝叶斯的机器学习模型。所以我将使用naiveBayes包构建一个模型,如下所示
model <- naiveBayes(Class ~ ., data = HouseVotes84)
我也可以通过打印模型打印出模型的重量。
我做的预测如下,这给了我一个类作为预测
predict(model, HouseVotes84[1:10,], type = "raw")
但是,我的问题是,有没有办法看到哪个列最能影响这个预测?所以,我可以了解学生在课堂上失败的最重要因素是什么,比如,那是否是响应变量,各种可能的因素是其他预测因素列。
我的问题是R中的任何包,上面的naiveBayes只是一个例子。
答案 0 :(得分:3)
答案取决于您希望如何执行feature selection。
如果它是模型构建过程的一部分而不是某些事后分析,您可以使用caret
及其feature selection wrapper方法来确定使用递归特征分解建模的最佳特征子集,遗传算法等,或使用单变量分析进行过滤。
如果它是您的事后分析的一部分,仅基于您的预测。那么它取决于您使用的模型类型。 caret
仅支持this functionality兼容型号!
对于svm
,除线性内核外,确定系数的重要性高non-trivial。我不知道有任何尝试尝试对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
使用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
非常简短的一瞥显示,至少V1
看起来比V2
更好。