我试图计算一个观察值的每个属性对逻辑回归给出的最终概率的贡献。我已经用我的数据集训练了Python的sklearn逻辑回归。现在我正在用它对实时数据集进行预测。我想知道每个属性(X)对sklearn的predict_proba方法给出的最终预测的贡献程度。
以下是通过逻辑回归计算概率的公式。
ln p/(1-p)=α+ β^T X
p; 1的概率α; 偏置β^T; 系数转置X; 属性值
回答:
二元逻辑回归
假设是二元逻辑回归,事情相当简单;您对输入的每个特征都有权重,经过训练后,这些权重会增加或减少概率。
假设您有4
个特征,输出为0
或1
。假设训练后的这些特征的系数分别为:
[0.0, -2.2, 1.3, -0.45]
在这里,您可以轻松看出,第二个(从0
开始编号)特征的权重为1.3
,如果此输入特征对于特定示例大于零,则会增加概率(换句话说,特征2
与概率呈正相关)。
另一方面,第一个特征(-2.2
)与概率呈负相关,而第零个特征无论其值如何,对概率结果都没有影响。
您可以通过以下方式获取这些系数/权重:
clf.coeffs_
假设您的LogisticRegression
名为clf
。
多项逻辑回归
一般来说,多项逻辑回归将有一个特征矩阵,每行代表一个标签的概率。
再一次,假设您想将输入分类为5
个类别之一,并且有34
个输入特征,假设学习后的权重矩阵如下所示:
[ [0.1, 2.2, -0.1, 0.133], # 类别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]
您可以看到特征0
和2
与输出标签3
的概率呈正相关,而特征1
和3
呈负相关。
偏置
偏置贡献了先验知识。假设所有权重为零。在二元情况下,只有一个偏置,因此它会输出较小的概率(负偏置)或较大的概率(正偏置)。
在多项情况下,每个类别都有一个偏置,但其作用类似。
系数的贡献
您可以将权重归一化到[-1, 1]
范围内,其中最大的负权重对输出零概率的影响最大,最高的正权重对输出概率为1的影响最大。