我正在为具有 5000 多个类别的序列标记任务设计一个 scikit 学习分类器,训练数据至少为 8000 万,并且每年可能会增长到额外的 1 亿。我已经尝试过所有类别,但它会生成大约 100 GB 二进制文件的分类器。所以我认为每个类别都有一个分类器会很有帮助,也可以帮助我微调每个类别的特征,从而提高准确性,但这意味着每个类别都有 5k+ 个分类器。那么如何处理这种大数据需求以及在这种情况下使用哪些增量分类器,考虑到我将继续获得额外的训练数据以及可能发现新类别的事实?
特征数量约为 100+,并且由于序列标记任务,训练样本的连续序列共享相同的特征值。特征值主要是基于文本的,并且大多数是分类的,具有大基数的基于长文本的值,即许多特征可能具有大量可能的值。
可用 RAM 为 32gb,带有 8 核 CPU。在小范围内,我尝试了多项式 NB 和线性 SGD,其稀疏矩阵非常稀疏。使用 scikit 学习 Dictvectorizer 对特征字典进行向量化。熊猫数据框也有助于优化整体配置吗?
由于涉及的数据规模,我只使用了大约 20% 的数据。而特征本身是来自 500MB 输入数据的 56GB 数据。对于受限的训练数据,精度也很低,没有达到 12% 以上,召回率也很低(1-2%)。已经通过 vowpal wabbit 并找到了 SEARN 任务,但似乎它现在在最新版本中不再可用。