为非线性分类器寻找特定于标签的***特征

Posted

技术标签:

【中文标题】为非线性分类器寻找特定于标签的***特征【英文标题】:Finding label-specific top features for non-linear classifier 【发布时间】:2019-06-14 11:04:43 【问题描述】:

是否有任何函数可以给出随机森林/XG Boost 分类器中每个标签的主要特征? classifier.feature_importances_ 仅提供分类器整体的***特征。

寻找类似于 classifier.coef_ 的东西,它为 sklearn 中的 SVM 和朴素贝叶斯分类器提供标签特定的***功能。

【问题讨论】:

【参考方案1】:
import pandas as pd
feature_importances = pd.DataFrame(rf.feature_importances_,
                               index = X_train.columns,
                      columns=['importance']).sort_values('importance',ascending=False)

试试这个!

Or 1 vs Rest 也是一个不错的选择,但需要很多时间。

【讨论】:

【参考方案2】:

首先,随机森林/Xgboost 甚至一个简单的决策树/任何树集成都是一个固有的多类分类模型。因此,它将预测多类输出,而无需在二元分类器之上使用任何包装器(1 vs 1 / 1 vs Rest)(这是逻辑回归/SVM/SGDClassifier 所做的)。

因此,您可以单独获得整体多类分类的特征重要性,而不是单个标签的特征重要性。

如果您真的想知道各个标签的特征重要性,请使用 onevsRest wrapper 和 decisionTree/RandomForest/Xgboost 作为估计器。 这不是推荐的方法,因为与单个决策树相比,结果可能不是最优的。

一些例子here。

【讨论】:

以上是关于为非线性分类器寻找特定于标签的***特征的主要内容,如果未能解决你的问题,请参考以下文章

如何使用线性支持向量机 (SVM) 分类器确定最重要/信息量最大的特征

学习朴素贝叶斯分类器本质上是线性分类器

cs231n笔记:线性分类器

python实现感知机线性分类模型

机器学习算法总结--SVM

SVM面试知识点总结