【发布时间】:2015-12-06 05:53:01
【问题描述】:
我正在使用 R 中的 C5 算法构建客户流失模型。在完成模型并成功预测数据后,我如何知道每个客户流失的前 3 个重要预测因素?所以我知道模型将 A、B、D、F 分类为正面而其他分类为负面的原因。有可能吗?
谢谢。
【问题讨论】:
标签: r classification
我正在使用 R 中的 C5 算法构建客户流失模型。在完成模型并成功预测数据后,我如何知道每个客户流失的前 3 个重要预测因素?所以我知道模型将 A、B、D、F 分类为正面而其他分类为负面的原因。有可能吗?
谢谢。
【问题讨论】:
标签: r classification
许多模型都有内置方法来衡量预测变量对模型的总体影响。 caret 包包含一个用于计算或返回这些值的通用类,包括 C5.0、JRip、PART、RRF、RandomForest、bagEarth、classbagg 、cubist、dsa、earth、fda、gam、gbm、glm、glmnet、lm、multinom、mvr、nnet、pamrtrained、plsda、randomForest、regbagg、rfe、rpart、sbf 和 train。
例如,
> library(caret)
> set.seed(1401)
> ctrl <- trainControl(method = 'repeatedcv' , number = 6, , repeats = 2 , classProbs = TRUE)
> C5fit <- train(x = iris[, 1:4], y = iris$Species, method = "C5.0", metric = "ROC", trControl = ctrl)
> varImp(C5fit, scale = FALSE)
C5.0 variable importance
Overall
Petal.Width 100
Sepal.Width 0
Petal.Length 0
Sepal.Length 0
【讨论】:
您可以在模型中绘制树。如果您使用单个 C5.0 树,这为您提供了一种简单的方法来提供树的确切推理。
library(C50)
set.seed(1401)
C5tree <- C5.0(x = iris[, 1:4], y = iris$Species, trials = 1) # A single C50 tree
C5imp(C5tree)
plot(C5tree, trial = 0)
如果您使用提升(即训练树时的试验 > 1),那么由于树的数量,这种方法可能过于复杂。
C5boosted <- C5.0(x = iris[, 1:4], y = iris$Species, trials = 3) # Boost three trees
C5imp(C5boosted)
# Plot each of the trees
for(i in 0:2){ # trials starts counting at 0, see ?plot.C5.0
plot(C5boosted, trial = i)
}
相反,您可以依赖变量重要性来生成重要变量的一般报告,或使用部分依赖图来显示一个变量相对于所有其他变量的(非线性)影响。我建议看看 CRAN 上的包 pdp。
【讨论】: