基准实验中使用的学习器的特征重要性 – mlr

我在R中使用mlr包来比较两个学习器,即随机森林和Lasso分类器,用于二分类任务。我使用嵌套交叉验证来计算性能。然后,我想计算最佳分类器(在本例中为随机森林)的特征重要性。为此,我使用了generateFeatureImportanceData(),其作用是:“通过对比预测性能来估计单个特征或特征组的重要性。对于‘置换重要性’方法,计算特征(或特征组)值置换后性能的变化,并将其与未置换数据的预测进行比较。”由于我指定了measure = auc,输出中的res是否提供了每个特征在其值置换后的auc减少值?

library(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")#指定随机森林的超参数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)                                aucINC2_A                 0.000000e+00INC2_B                 0.000000e+00INC2_F                 0.000000e+00INC2_G                 0.000000e+00INC2_H                 0.000000e+00INC2_I                 0.000000e+00SEX                    0.000000e+00marital               -3.211696e-07inpatient              0.000000e+00CMS_1                  0.000000e+00CMS_2                  0.000000e+00CMS_3                  0.000000e+00CMS_4                  0.000000e+00CMS_5                  0.000000e+00CMS_6                  0.000000e+00CMS_7                  0.000000e+00CMS_8                  0.000000e+00CMS_9                  0.000000e+00CMS_10                 0.000000e+00CMS_11                 0.000000e+00CMS_12                 0.000000e+00CMS_13                 0.000000e+00CMS_14                 0.000000e+00OCS_1                  0.000000e+00OCS_2                  0.000000e+00OCS_3                  0.000000e+00OCS_4                  0.000000e+00OCS_5                  0.000000e+00OCS_6                  0.000000e+00OCS_7                  0.000000e+00OCS_8                  0.000000e+00OCS_9                  0.000000e+00OCS_10                 0.000000e+00OCS_11                 0.000000e+00reta                   0.000000e+00MH_F1                 -1.051220e-03CP_1BA                 0.000000e+00CP_1BS                 0.000000e+00MIXCLINICAL3           0.000000e+00MIXCLINICAL2           0.000000e+00MIXDS52Simpt           0.000000e+00MIXDS53Simpt           0.000000e+00PAN                    0.000000e+00OBS                    0.000000e+00PHO                    0.000000e+00GAD                    0.000000e+00EAT_0                  0.000000e+00ADHD                   0.000000e+00BORDERLINEPERSONALITY  0.000000e+00AlcoolProbUse          0.000000e+00SubstanceProbUse       0.000000e+00BMI                   -2.954760e-06DEP_AGE               -7.996641e-04NBD_P                 -1.669455e-03NBDEP                 -8.671578e-06NBSUI                 -2.055485e-06NBHOS                 -8.091225e-03DURDEP                -1.380869e-04SEV_M                 -3.083132e-03SEV_D                  0.000000e+00CMS_sum                0.000000e+00TOTMIXDSM5             0.000000e+00GAF                   -1.170663e-05Age                   -1.172269e-06Comorbidities_sum      0.000000e+00

绝对值最高的特征是否是最重要的特征?auc值为零是否意味着该特征对于当前分类任务无关紧要?谢谢。


回答:

一个特征的得分是通过从模型的正常预测得分中减去使用置换特征获得的预测得分来获得的。

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

Related Posts

神经网络反向传播代码不工作

我需要编写一个简单的由1个输出节点、1个包含3个节点的…

值错误:y 包含先前未见过的标签:

我使用了 决策树分类器,我想将我的 输入 作为 字符串…

使用不平衡数据集进行特征选择时遇到的问题

我正在使用不平衡数据集(54:38:7%)进行特征选择…

广义随机森林/因果森林在Python上的应用

我在寻找Python上的广义随机森林/因果森林算法,但…

如何用PyTorch仅用标量损失来训练神经网络?

假设我们有一个神经网络,我们希望它能根据输入预测三个值…

什么是RNN中间隐藏状态的良好用途?

我已经以三种不同的方式使用了RNN/LSTM: 多对多…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注