提问人:TotorosForest 提问时间:11/17/2023 更新时间:11/17/2023 访问量:8
变量重要性值:如何归一化
Variable importance values: how to normalize
问:
我想确定一组可以预测中风后疼痛(结果)的变量。 我有 >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 ... ...
答: 暂无答案
评论