如何找到逻辑回归模型的特征的重要性?

mgo*_*kal 33 python machine-learning scikit-learn logistic-regression

我有一个由逻辑回归算法训练的二元预测模型.我想知道哪些特征(预测因子)对于正面或负面类的决定更重要.我知道有一些coef_参数来自scikit-learn包,但我不知道它是否足够重要.另一件事是我如何coef_根据负面和正面类别的重要性来评估价值观.我还读到了标准化的回归系数,我不知道它是什么.

可以说,有一些特征,如肿瘤的大小,肿瘤的重量等,以决定恶性或非恶性的测试案例.我想知道哪些特征对恶性而非恶性预测更重要.它有道理吗?

KT.*_*KT. 44

在线性分类模型(逻辑是其中之一)中感受给定参数的"影响"的最简单选项之一是考虑其系数的大小乘以数据中相应参数的标准差. .

考虑这个例子:

import numpy as np    
from sklearn.linear_model import LogisticRegression

x1 = np.random.randn(100)
x2 = 4*np.random.randn(100)
x3 = 0.5*np.random.randn(100)
y = (3 + x1 + x2 + x3 + 0.2*np.random.randn()) > 0
X = np.column_stack([x1, x2, x3])

m = LogisticRegression()
m.fit(X, y)

# The estimated coefficients will all be around 1:
print(m.coef_)

# Those values, however, will show that the second parameter
# is more influential
print(np.std(X, 0)*m.coef_)
Run Code Online (Sandbox Code Playgroud)

获得类似结果的另一种方法是检查模型拟合标准化参数的系数:

m.fit(X / np.std(X, 0), y)
print(m.coef_)
Run Code Online (Sandbox Code Playgroud)

请注意,这是最基本的方法,并且存在许多用于发现特征重要性或参数影响的其他技术(使用p值,引导分数,各种"判别指数"等).

我很确定你会在https://stats.stackexchange.com/上得到更多有趣的答案.

  • 负系数意味着相应特征的较高值将分类更多地推向负类. (10认同)
  • 谢谢你的解释。还有一件事,m.coef_ 的负值是什么意思?这是否意味着它对否定类的决定更具歧视性?对于正值也有同样的问题。 (4认同)
  • 并且,更一般地说,注意"如何理解(已经适合的)X型模型中的特征的重要性"和"如何理解数据中最有影响的特征"的问题是不同的.根据您的拟合过程,您最终可能会得到相同数据的不同模型 - 某些模型可能会认为某些功能更重要,而另一些模型则更重要.当您的模型首先以某种"有效"的方式进行估算时,"在模型中"的重要特征仅在"一般数据中"很重要. (2认同)
  • 特别是,如果数据中最重要的特征对输出具有非线性依赖性,则大多数线性模型可能无法发现这一点,无论您如何逗弄它们。因此,最好记住建模和模型解释之间的差异。 (2认同)