【问题标题】:Feature importance of learner used in benchmark experiment - mlr基准实验中使用的学习器的特征重要性 - mlr
【发布时间】:2020-04-11 22:56:34
【问题描述】:

我在 R 中使用 mlr 包在二元分类任务中比较两个学习器,即随机森林和套索分类器。我使用嵌套交叉验证来计算性能。然后,我想计算特征对最佳分类器的重要性,在这种情况下是随机森林。为了实现这一点,我使用generateFeatureImportanceData(),其中:“通过对比预测性能来估计单个特征或特征组的重要性。对于方法“permutation.importance”,通过排列特征(或一组)的值来计算性能变化特征)并将其与对未切割数据的预测进行比较。”正如我指定的measure = auc 一样,输出 res 是否提供了每个特征的 auc 的减少,因为它的值是通过置换其值来实现的?

库(easypackages)

libraries("mlr","purrr","glmnet","parallelMap","parallel")

data = read.table("data_past.txt", h = T)

set.seed(123)

task = makeClassifTask(id = "past_history", data = data, target = 
"DIAG", positive = "BD")

#specifying hyperparameters for random forest
ps_rf = makeParamSet(makeIntegerParam("mtry", lower = 4, upper = 
16),makeDiscreteParam("ntree", values = 1000))

ctrl_rf = makeTuneControlRandom(maxit = 10L)

inner = makeResampleDesc("RepCV", fold = 10, reps = 3, stratify = TRUE)

lrn_rf = makeLearner("classif.randomForest", predict.type = "prob", 
fix.factors.prediction = TRUE)

lrn_rf = makeTuneWrapper(lrn_rf, resampling = inner, par.set = ps_rf, 
control = ctrl_rf, measures = auc, show.info = FALSE)

parallelStartMulticore(36)

ft_im = generateFeatureImportanceData(task = task, method = 
"permutation.importance", learner = lrn_rf, measure = auc) 

parallelStop()

t(ft_im$res)
                                auc
INC2_A                 0.000000e+00
INC2_B                 0.000000e+00
INC2_F                 0.000000e+00
INC2_G                 0.000000e+00
INC2_H                 0.000000e+00
INC2_I                 0.000000e+00
SEX                    0.000000e+00
marital               -3.211696e-07
inpatient              0.000000e+00
CMS_1                  0.000000e+00
CMS_2                  0.000000e+00
CMS_3                  0.000000e+00
CMS_4                  0.000000e+00
CMS_5                  0.000000e+00
CMS_6                  0.000000e+00
CMS_7                  0.000000e+00
CMS_8                  0.000000e+00
CMS_9                  0.000000e+00
CMS_10                 0.000000e+00
CMS_11                 0.000000e+00
CMS_12                 0.000000e+00
CMS_13                 0.000000e+00
CMS_14                 0.000000e+00
OCS_1                  0.000000e+00
OCS_2                  0.000000e+00
OCS_3                  0.000000e+00
OCS_4                  0.000000e+00
OCS_5                  0.000000e+00
OCS_6                  0.000000e+00
OCS_7                  0.000000e+00
OCS_8                  0.000000e+00
OCS_9                  0.000000e+00
OCS_10                 0.000000e+00
OCS_11                 0.000000e+00
reta                   0.000000e+00
MH_F1                 -1.051220e-03
CP_1BA                 0.000000e+00
CP_1BS                 0.000000e+00
MIXCLINICAL3           0.000000e+00
MIXCLINICAL2           0.000000e+00
MIXDS52Simpt           0.000000e+00
MIXDS53Simpt           0.000000e+00
PAN                    0.000000e+00
OBS                    0.000000e+00
PHO                    0.000000e+00
GAD                    0.000000e+00
EAT_0                  0.000000e+00
ADHD                   0.000000e+00
BORDERLINEPERSONALITY  0.000000e+00
AlcoolProbUse          0.000000e+00
SubstanceProbUse       0.000000e+00
BMI                   -2.954760e-06
DEP_AGE               -7.996641e-04
NBD_P                 -1.669455e-03
NBDEP                 -8.671578e-06
NBSUI                 -2.055485e-06
NBHOS                 -8.091225e-03
DURDEP                -1.380869e-04
SEV_M                 -3.083132e-03
SEV_D                  0.000000e+00
CMS_sum                0.000000e+00
TOTMIXDSM5             0.000000e+00
GAF                   -1.170663e-05
Age                   -1.172269e-06
Comorbidities_sum      0.000000e+00

绝对值最高的特征是否越重要? auc 的零值是否意味着该特征与手头的分类任务无关?谢谢。

【问题讨论】:

  • 由于您的问题只是关于结果的统计解释,而不是关于如何让某些东西运行/面临编码错误,请考虑在将来在stats.stackexchange.com 上发布此类问题 :)
  • 对您的代码的一些评论:benchmark() 调用和所有事先的包装对您的问题并不重要,它只是关于 generateFeatureImportanceData() 调用(不依赖于前者) .还请考虑将来将您的代码格式化为大约 80 的宽度,以避免读者长时间水平滚动。谢谢!

标签: r machine-learning feature-selection mlr


【解决方案1】:

特征的分数是通过将模型的正常预测分数减去使用置换特征获得的预测分数来获得的。

因此,AUC 下降 = 0 的特征是无关紧要的,因为它们不会带来任何附加值(它们与纯粹的随机噪声一样重要)。另一方面,具有最高绝对值的特征是最重要的,因为改变它们对分数的影响最大。

【讨论】:

  • 您能否再谈几点? 1)“auc”列中的绝对值之和(即手头的指标)是否应该等于被测精益者的整体表现? 2)应该如何选择正确的迭代次数(函数中的“nmr”参数)?如果您能向我推荐任何好的来源,我将不胜感激。谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-02-27
  • 2020-10-07
  • 2014-03-11
  • 1970-01-01
  • 2019-11-07
  • 2016-11-26
  • 2021-01-06
  • 2013-08-15
相关资源
最近更新 更多