如何用 p 量化 Logistic 回归中的相对变量重要性?

机器算法验证 物流 重要性
2022-03-07 06:13:27

假设使用逻辑回归模型来预测在线购物者在点击一组在线广告(预测变量:Ad1、Ad2 和 Ad3)后是否会购买产品(结果:购买)。

结果是一个二元变量:1(已购买)或 0(未购​​买)。预测变量也是二元变量:1(点击)或 0(未点击)。所以所有变量都在同一尺度上。

如果 Ad1、Ad2 和 Ad3 的结果系数分别为 0.1、0.2 和 03,我们可以得出结论,Ad3 比 Ad2 更重要,Ad2 比 Ad1 更重要。此外,由于所有变量都在同一尺度上,因此标准化和非标准化系数应该相同,我们可以进一步得出结论,就其对 logit(log-odds)水平的影响而言,Ad2 的重要性是 Ad1 的两倍。

但在实践中,我们更关心如何根据 p(购买概率)水平而不是 logit(log-odds)来比较和解释变量的相对重要性。

因此问题是:是否有任何方法可以用 p 来量化这些变量的相对重要性?

2个回答

对于线性模型,您可以为每个模型参数使用 t 统计量的绝对值。

此外,您可以使用随机福雷斯特之类的东西,并获得一个非常好的特征重要性列表。

如果您使用 R 签出 ( http://caret.r-forge.r-project.org/varimp.html ),如果您使用 python 签出 ( http://scikit-learn.org/stable/auto_examples /ensemble/plot_forest_importances.html#example-ensemble-plot-forest-importances-py )

编辑:

由于 logit 没有直接的方法来做到这一点,您可以为每个预测变量使用 ROC 曲线。

对于分类,对每个预测变量进行 ROC 曲线分析。对于两类问题,对预测数据应用一系列截止值以预测类别。计算每个截止值的敏感性和特异性,并计算 ROC 曲线。梯形法则用于计算 ROC 曲线下的面积。该区域用作变量重要性的度量

在 R 中如何工作的一个例子是:

library(caret)
mydata <- data.frame(y = c(1,0,0,0,1,1),
                 x1 = c(1,1,0,1,0,0),
                 x2 = c(1,1,1,0,0,1),
                 x3 = c(1,0,1,1,0,0))

fit <- glm(y~x1+x2+x3,data=mydata,family=binomial())
summary(fit)

varImp(fit, scale = FALSE)

由于您特别要求对概率尺度进行解释:在逻辑回归中,估计的成功概率由下式给出

π^(x)=exp(β0+βx)1+exp(β0+βx)

β0拦截,β系数向量和x你的观察值。因此,如果您的系数是 0.1、0.2 和 0.3,并且假设没有截距(很可能是不正确的,但为了方便起见),则仅点击广告 1 的人的购买概率为:

exp(0.1)1+exp(0.1)=0.52

仅点击广告 3 的人:

exp(0.3)1+exp(0.3)=0.57

但是,如果该人点击了广告 1 或广告 3,还点击了广告 2(如果这是一个合理的场景),则概率变为

exp(0.1+0.2)1+exp(0.1+0.2)=0.57

exp(0.3+0.2)1+exp(0.3+0.2)=0.62

在这种情况下,概率的变化都是 0.05,但通常这种变化对于不同的水平组合是不一样的。(例如,如果您使用与上述相同的方法,但系数为 0.1、1.5、0.3,您可以很容易地看到这一点。)因此,一个变量在概率尺度上的重要性取决于其他变量的观察水平。这可能使得很难(不可能?)在概率尺度上提出一个绝对的、定量的变量重要性度量。