我有一个不平衡的数据集,由大约 10 百万个文本字符串组成,每个字符串都有数千个由 uni- 和 bigram 创建的特征,此外,我还有字符串长度和字符串的熵作为特征。
它是一个multiclass数据集(40-50 个类别),但它是不平衡的。与最大的类相比,某些类可以小 1000 倍。我已将数据限制为每个类最多 100 万个字符串,否则不平衡可能会更大。
因此,我想使用过采样来改善代表性不足的类的数据。我已经查看ADASYN了SMOTEpythonimblearn包。但是当我运行它时,进程会耗尽我RAM在交换内存中的所有内容,并且在进程被杀死后不久。我假设是因为内存不够。
我现在的问题是如何最好地进行。显然我的数据太大而不能被过度采样。我想到了两个选项,但我无法确定哪个是最“正确”的。
我只派了一个人数不足的班级和最大的班级,并为每个人数不足的班级重复了这一点。我不确定这是否意味着类可能开始重叠。
相反,我对数据进行了欠采样,每类可能低至 10 万个样本。这可能会减少足够的数据,以便我可以对较少表示的类(使用 1k-10k 样本)进行过采样。
我错过了其他更合适的选择吗?