相关疑难解决方法(0)

使用scikit确定每个要素对特定类预测的贡献

我正在使用scikit额外的树分类器:

model = ExtraTreesClassifier(n_estimators=10000, n_jobs=-1, random_state=0)
Run Code Online (Sandbox Code Playgroud)

一旦模型被拟合并用于预测类,我想找出每个特征对特定类预测的贡献.我如何在scikit中学习呢?是否可以使用额外的树分类器或我是否需要使用其他模型?

python scikit-learn

16
推荐指数
3
解决办法
7438
查看次数

如何获得特定预测的逻辑回归特征的相对重要性?

我正在使用Logistic回归(在scikit中)来解决二进制分类问题,并且我有兴趣能够解释每个单独的预测.更确切地说,我有兴趣预测正类的概率,并测量每个特征对该预测的重要性.

使用系数(Betas)作为衡量重要性通常是一个坏主意,如此回答,但我还没有找到一个好的选择.

到目前为止,我发现的最好的是以下3个选项:

  1. 蒙特卡罗选项:修复所有其他特征,重新运行预测,用训练集中的随机样本替换我们要评估的特征.这样做了很多次.这将建立正类基线概率.然后与原始运行的正类概率进行比较.差异是衡量功能的重要性的指标.
  2. "留一法"分类器:要评估功能的重要性,首先要创建一个使用所有功能的模型,然后再创建另一个使用除被测试功能之外的所有功能的模型.使用两种模型预测新观察结果.两者之间的区别在于该功能的重要性.
  3. 调整后的测试数据:根据此答案,通过"系数的大小乘以数据中相应参数的标准差"对特征的重要性进行排序.

所有选项(使用贝塔,蒙特卡罗和"留一出")对我来说似乎都是糟糕的解决方案.

  1. 蒙特卡洛依赖于训练集的分布,我找不到任何支持它的文献.
  2. "留一个"很容易被两个相关的特征欺骗(当一个缺席时,另一个将介入补偿,两者都将被赋予0重要性).
  3. 调整后的贝塔听起来似乎有道理,但我找不到任何支持它的文献.

实际问题:在决策时,使用线性分类器解释每个要素的重要性的最佳方法是什么?

快速注释#1:对于随机森林这是微不足道的,我们可以简单地使用prediction + bias分解,正如在这篇博文中精美地解释的那样.这里的问题是如何使用线性分类器(如Logistic回归)进行类似的操作.

快速注释#2:stackoverflow上有很多相关的问题(1 2 3 4 5).我无法找到这个具体问题的答案.

machine-learning feature-selection scikit-learn logistic-regression coefficients

5
推荐指数
1
解决办法
1518
查看次数