【问题标题】:Encoding a lot of categorical variables编码很多分类变量
【发布时间】:2020-10-17 03:55:19
【问题描述】:

我有 1000 万个分类变量(每个变量有 3 个类别)。对这 1000 万个变量进行编码以训练深度学习模型的最佳方法是什么? (如果我使用一种热编码,那么我最终将拥有 3000 万个变量。此外,具有一个输出的嵌入层没有意义(它类似于整数编码,这些类别之间没有顺序)和具有两个输出的嵌入层差别不大。通常,当类别数量很多时,我们使用嵌入层)。请给我你的意见。

【问题讨论】:

    标签: deep-learning nlp embedding


    【解决方案1】:

    您应该将此问题视为词嵌入,其中您也有很多实体(通常为 30-5 万)。

    为每个类别进行随机嵌入,维度为 100-300。使用三元组损失或类似的东西来训练嵌入。基本上,创建一对有效的嵌入,或一对嵌入和输入。对于词向量,这些词是在上下文窗口中同时出现的词(它们在一个句子中彼此靠近)。然后随机选择一些其他不相关的单词。训练网络,使有效对比随机对更近(余弦距离);您可以尝试不同的损失函数,但基本上有效对越接近,随机对越远,损失越低。

    但是,我会考虑您是如何提出问题的。你真的有 1000 万个类别吗?为什么你的标签比任何人类语言中的单词都多?如果您可以将它们分组到层次结构中,以便在多个阶段使用更少的标签,您的模型将更加有效。

    【讨论】:

    • 感谢您的评论。正如我所解释的,我有 1000 万个变量(每个变量都是一个具有 3 个类别的分类变量)。那么,我为什么要为每个类别选择随机嵌入,维度为 100-300????!!!!
    • 我明白你说你有 1000 万个变量,但真的吗?你确定你不能把它分解一些吗?你的类别甚至应该代表什么?继续前进,我说使用随机嵌入作为初始值设定项,因为这就是词向量的作用——它可以让您避免一次性嵌入的问题,同时仍然表示许多项目。
    【解决方案2】:

    您是否已经使用序数编码器?这将对类别进行编码,但不会增加变量的数量。

    【讨论】:

      猜你喜欢
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 2016-03-19
      • 2020-04-30
      相关资源
      最近更新 更多