【问题标题】:Logistic Regression - Calculate how much each attribute contributed to final probability逻辑回归 - 计算每个属性对最终概率的贡献程度
【发布时间】:2020-04-03 13:22:51
【问题描述】:

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

这是logreg计算概率的公式。

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

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

【问题讨论】:

    标签: python machine-learning scikit-learn statistics logistic-regression


    【解决方案1】:

    二元逻辑回归

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

    假设您有4 功能并输出01。假设在训练之后,这些特征的系数分别是:

    [0.0, -2.2, 1.3, -0.45]
    

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

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

    您可以通过发布获得这些系数/权重

    clf.coeffs_
    

    前提是您的LogisticRegression 被命名为clf

    多项逻辑回归

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

    再一次,假设您要将输入分类为5 类和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则为负相关。

    偏差

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

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

    系数的贡献

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

    【讨论】:

    • 嗨@szymon-maszke 感谢您的回答。说得通。假设逻辑回归给出了类为 1 的概率,它是 0.8。我想知道每个功能贡献了多少 0.8。这样数字加起来就是 0.8。我知道我会使用系数。但简单地将它们与值相乘并不能给出答案。
    • @DominikŽulovecSajovic 您必须以这个特定示例并乘以权重来查看哪个特征对整体概率的贡献。如果您在那之后添加偏差并将所有内容相加,您将得到一个 logit(非归一化概率)。对那个值应用 sigmoid 会给你这个0.8 概率。
    猜你喜欢
    • 2015-05-04
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 2017-03-03
    • 2013-06-05
    相关资源
    最近更新 更多