变量重要性值:如何归一化

Variable importance values: how to normalize

提问人:TotorosForest 提问时间:11/17/2023 更新时间:11/17/2023 访问量:8

问:

我想确定一组可以预测中风后疼痛(结果)的变量。 我有 >20 个协变量。 我拟合了 3 个 ML 模型:弹性网络、随机森林和梯度提升。从每个模型中,我都获得了可变的重要性值。但是,我想对每个 ML 方法的重要性值 (%) 进行归一化,或者找到每个变量对结果的相对重要性 (%)。

这是我拥有的代码示例,但无法获得我预期的结果: set.seed(20231116)

使用交叉验证训练弹性网络模型

elastic_net_cv_model <- cv.glmnet(x_train, y_train, alpha = 0.5, lambda = seq(0.01, 1, length = 100))

根据交叉验证结果找到最佳 lambda 值

best_lambda_elastic_net <- elastic_net_cv_model$lambda.min

使用最佳 lambda 值训练弹性网络模型

elastic_net_model <- glmnet(x_train, y_train, alpha = 0.5, lambda = best_lambda_elastic_net)

从弹性网络模型中获取系数

系数 <- coef(elastic_net_model)

提取每个特征的系数

feature_coefficients <- as.matrix(系数)[-1, ]

对系数进行归一化,使绝对值之和等于 1

normalized_importance <- feature_coefficients / sum(abs(feature_coefficients))

打印或使用规范化的重要性值

打印(normalized_importance)

请查看一些结果以了解为什么我需要获得归一化的重要性值 (%)

弹性网络如下所示: 年龄 0.00000 性别 -0.12460 出生国 -0.1283 ... ...

随机森林: 年龄 34.08 性别 13.11 出生国家/地区 11:00 ... ...

变量 归一化

评论


答: 暂无答案