【问题标题】:Meaningfully interpreting BaseN encoded feature importances有意义地解释 BaseN 编码的特征重要性
【发布时间】:2021-11-24 10:13:09
【问题描述】:

我有用户出生地的数据,特别是城市。由于我的数据集中有几千个城市,因此我寻找 OneHot 编码的替代方案,因为我不想为单个列添加数千列到我的数据集中。我发现 BaseN 编码是 OneHot 的一个很好的替代方案,所以我选择了它。我用基数 4 对数据进行了编码,所以现在我有数字列 City_0、City_1 等,而不是字符串列 City。

但是,在使用随机森林分类器对数据集建模后,我发现某些 City_# 变量是最重要的特征之一。但是我如何解释这个结果呢?由于城市已被编码为 4 个单独的列,我如何得出实际结论(例如,哪些城市对我的目标变量影响最大)?有没有一种方法,或者我通过这种方式对城市进行编码完全失去了可解释性?

【问题讨论】:

标签: machine-learning encoding interpretation base-n


【解决方案1】:

您可以使用SkLearn2PMML 包将您的管道导出为PMML 数据格式;在转换过程中,BaseN编码被撤消,这样可以很容易地看到哪些城市在哪个方向流动。

转换示例:

from sklearn2pmml import sklearn2pmml
from sklearn2pmml.pipline import PMMLPipeline

mapper = ColumnTransformer([
  ("cat", BaseNEncoder(base = 4), cat_cols),
  ("cont", "passthrough", cont_cols)
])
classifier = RandomForestClassifier()
pipeline = PMMLPipeline([
  ("mapper", mapper),
  ("classifier", classifier)
])
pipeline.fit(X, y)
pipeline.pmml_feature_importances_ = classifier.feature_importances_
pipeline.configure(numeric = True)
sklearn2pmml(pipeline, "MyInterpretablePipeline.pmml")

如果您将转换选项切换为numeric = False,则 BaseN 编码将完全撤消,以便将城市名称直接嵌入到 RF 数据结构中。

在任何情况下,PMML 都是最人性化的数据格式,用于持久化拟合的 ML 管道。 PMML 是 XML 的子集,因此可以使用任何文本编辑器打开、查看和编辑这些文件。

【讨论】:

    猜你喜欢
    • 2016-02-23
    • 2017-02-24
    • 2019-05-30
    • 2017-09-24
    • 2019-06-09
    • 2019-04-29
    • 2023-03-26
    • 2018-12-14
    • 2021-12-23
    相关资源
    最近更新 更多