如何在词嵌入层之前应用 SMOTE 技术(过采样)

Posted

技术标签:

【中文标题】如何在词嵌入层之前应用 SMOTE 技术(过采样)【英文标题】:How to apply SMOTE technique (oversampling) before word embedding layer 【发布时间】:2019-04-22 09:06:26 【问题描述】:

如何在 LSTM 中的词嵌入层之前应用 SMOTE 算法。

我有一个文本二进制分类问题(Good(9500) 或 Bad(500) 审查,总共有 10000 个训练样本,它是不平衡的训练样本),意思是当我使用 LSTM 和预训练的词嵌入时(100每个单词的维度空间)也是如此,因此每个训练输入都有一个单词的 id(当文本描述少于 50 个单词时,总共有 50 个 id,填充为零,当描述超过 50 个字符时修剪为 50)字典。

以下是我的一般流程,

输入 - 1000(批量)X 50(序列长度) 词嵌入 - 200(唯一词汇词)X 100(词表示) 词嵌入层之后(LSTM 的新输入) - 1000(批量)X 50(序列)X 100(特征) LSTM 1000(批量)X 100(单位)的最终状态 应用最终层 1000(batch) X 100 X [100(units) X 2 (output class)]

我只想在 SMOTE 的帮助下为差评生成更多数据

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。 在 stackexchange 上找到了这篇文章,它建议调整类分布的权重而不是过采样。显然这是 LSTM / RNN 中处理类不平衡的标准方法。

https://stats.stackexchange.com/questions/342170/how-to-train-an-lstm-when-the-sequence-has-imbalanced-classes

【讨论】:

以上是关于如何在词嵌入层之前应用 SMOTE 技术(过采样)的主要内容,如果未能解决你的问题,请参考以下文章

过采样算法之SMOTE

过采样:Python 中二进制和分类数据的 SMOTE

Pyspark 中的过采样或 SMOTE

如何在CV-ing数据集中实现基于比率的SMOTE过采样

spark实现smote近邻采样

从信用卡欺诈模型看不平衡数据分类数据层面:使用过采样是主流,过采样通常使用smote,或者少数使用数据复制。过采样后模型选择RFxgboost神经网络能够取得非常不错的效果。模型层面: