【问题标题】:How to encode a categorical feature with high cardinality?如何编码具有高基数的分类特征?
【发布时间】:2021-09-21 15:23:18
【问题描述】:

我陷入了一个包含一些具有高基数的分类特征的数据集中。 像'item_description' ... 我读到了一些叫做散列的技巧,但它的主要思想仍然模糊且难以理解,我还读到了一个名为“功能引擎”的库,但我并没有真正找到可以解决我的问题的东西。 请问有什么建议吗?

【问题讨论】:

  • 项目描述是长字符串吗?有意义的英文字符串?

标签: python machine-learning


【解决方案1】:

选项:

i) 使用目标编码。

ii) 使用实体嵌入: 简而言之,这种技术用一个向量来表示每个类别,然后训练得到该类别的特征。

iii) 使用 Catboost:

额外:有一种散列技巧技术也可能会有所帮助:https://booking.ai/dont-be-tricked-by-the-hashing-trick-192a6aae3087?gi=3045c6e13ee5

【讨论】:

    【解决方案2】:

    您可以查看category_encoders。那里有许多不同的编码器,可用于将具有高基数的列编码为单个列。其中有所谓的贝叶斯编码器,它使用来自目标变量的信息来转换给定的特征。例如,您有TargetEncoder,它使用贝叶斯原理将分类特征替换为给定目标的期望值,然后是该类别采用的值,这与LeaveOneOut 非常相似。您还可以检查基于CatBoostEncodercatboost,这是特征编码的常见选择。

    【讨论】:

      【解决方案3】:

      对于像“item_description”这样本质上是文本变量的变量,检查this paper和对应的Python package

      或者干脆在网上搜索“脏分类变量”,如果有疑问,文章和软件包来自 Sklearn 的主要开发人员之一 Gal Varoquaux。

      【讨论】:

        猜你喜欢
        • 2015-11-25
        • 2022-10-05
        • 2016-01-07
        • 2017-12-11
        • 2018-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多