逻辑回归——计算每个属性对最终概率的贡献程度

Logistic Regression - Calculate how much each attribute contributed to final probability

我正在尝试计算观察的每个属性对逻辑回归给出的最终概率的贡献程度。我在我的数据集上训练了 pythons sklearn 逻辑回归。现在我用它来对实时数据集进行预测。我想知道每个属性 (X) 对 sklearns predict_proba 方法给出的最终预测有多大贡献。

这里是logreg计算概率的公式。

ln p/(1-p)=α+ β^T X

p;为 1 的概率 α;偏见 β^T;转置系数 X;属性值

二元逻辑回归

假设二元逻辑回归很容易;您对输入的每个特征都有权重,在训练后增加或减少概率。

假设您有 4 个特征并输出 01。假设经过训练后,这些特征的系数分别为:

[0.0, -2.2, 1.3, -0.45]

在这里,您可以很容易地看到,如果特定示例的输入特征大于零(或者,在其他词,特征2与概率正相关)。

另一方面,第一个特征 (-2.2) 与概率呈负相关,而第零个特征无论其值如何都对概率结果没有影响。

你可以通过发布

获得那些coefficients/weights
clf.coeffs_

前提是您的 LogisticRegression 名为 clf

多项逻辑回归

一般来说,多项逻辑回归会有一个特征矩阵,每一行代表一个标签的概率。

再一次,假设您想要 class 将输入验证为 5 classes 和 34 输入特征之一,让我们假设学习的权重矩阵看起来像这个:

[
    [0.1, 2.2, -0.1, 0.133], # Features of class 0
    [-2, -1.1, 0, 4.56],
    [-0.1, 0, 0.3, 0.4],
    [3.3, -2, 15, -9.4],
    [0.45, 0.5, 0.66, 5.5],
]

现在您可以应用与上述相同的想法;让我们来看看这些 4 特征中的每一个如何影响输出标签 3 的概率,所以我们采用这一行:

[3.3, -2, 15, -9.4]

并且可以看到特征02与输出标签概率3呈正相关,而特征13呈负相关.

偏差

偏见有助于先验知识。假设所有权重为零。在二进制情况下,只有一个偏差,因此它会输出小(负偏差)概率或大(正偏差)概率。

在多项式情况下,每个 class 都有一个偏差,但它的工作原理类似。

系数的贡献

您可以将权重归一化到 [-1, 1] 范围内,最大的负权重对输出零概率的影响最大,最高的正权重对输出概率的影响最大。