结合异构数字和文本特征

数据挖掘 神经网络 回归 决策树 伯特 嵌入
2022-03-01 11:35:19

我们要解决“给定两个对象”形式的回归问题xy,预测他们的分数(将其视为相似性)w(x,y)"。我们有 2 种类型的功能:

  • 对于每个对象,我们有大约 1000 个数值特征,主要有以下类型: 1)“历史分数信息”,例如历史均值w(x,)直到我们使用该功能为止;2) 0/1 特征表示是否对象x具有特定的属性等。
  • 对于每个对象,我们都有一个描述该对象的文本(描述不可靠,但仍然有用)。

显然,在预测一对分数时(x,y),我们可以同时使用特征xy.

我们目前正在使用以下设置(我省略了验证/测试):

  • 对于文本,我们计算它们的 BERT 嵌入,然后根据嵌入向量之间的相似度(例如它们之间的余弦相似度)生成特征。
  • 我们将数据集拆分为微调和训练数据集。微调数据集可能是空的,意味着没有微调。
  • 使用微调数据集,我们微调 BERT 嵌入。
  • 使用训练数据集,我们训练决策树来预测分数。

我们比较以下方法:

  • 没有 BERT 功能。
  • 使用 BERT 功能,但没有微调。预测准确性有一些合理的改进。
  • 使用 BERT 功能,进行微调。改进非常小(当然,仅使用 BERT 特征的预测得到了改进)。

问题:我在这种方法中缺少一些简单的东西吗?例如,也许有更好的方式来使用文本?其他使用嵌入的方法?与决策树相比更好的方法?

我试图做很多事情,但没有任何成功。我期望提供改进的方法如下:

  • 微调嵌入以预测两者之间的差异w(x,y)和意思w(x,). 动机是我们已经有一个特征“意味着w(x,)",这是一个对象的基线x,并且我们对与该均值的偏差感兴趣。

  • 使用 NN 代替决策树。即,我使用几个密集层将嵌入向量转换为特征,如下所示:

     nn.Sequential(
          nn.Linear(768 * 2, 1000),
          nn.BatchNorm1d(1000),
          nn.ReLU(),
          nn.Linear(1000, 500),
          nn.BatchNorm1d(500),
          nn.ReLU(),
          nn.Linear(500, 100),
          nn.BatchNorm1d(100),
          nn.ReLU(),
          nn.Linear(100, 10),
          nn.BatchNorm1d(10),
          nn.ReLU(),
      )
    

    之后,我结合了这些新的10功能与2000我已经拥有的功能,并在它们之上使用类似的架构:

      nn.Sequential(
          nn.Linear(10 + n_features, 1000),
          nn.BatchNorm1d(1000),
          nn.ReLU(),
          nn.Linear(1000, 500),
          nn.BatchNorm1d(500),
          nn.ReLU(),
          nn.Linear(500, 100),
          nn.BatchNorm1d(100),
          nn.ReLU(),
          nn.Linear(100, 1),
      )
    

但结果是,与决策树相比,我的预测要差得多。是否有更适合我的情况的架构?

0个回答
没有发现任何回复~