用于对短文本进行分类的复杂模型

机器算法验证 机器学习 分类 数据挖掘 文本挖掘
2022-03-31 06:08:14

我有大约 30000 个书名分配到 6 个类别,我想构建可扩展且准确的分类器。到目前为止,我只能使用 Naive Baye 和LibLINEAR分类器,它们在 10 倍 CV 后都给了我(几乎)相同的精度和召回值,分别为 0.8 和 0.7。

我想知道如果我使用更复杂的模型是否能够做得更好。问题是复杂模型的时间复杂度似乎随着训练实例的数量超线性增加。例如,SVM(来自 WEKA 的 SMO 实现)已经在该数据上运行了过去 3 小时,而 Naive Baye 和 LibLINEAR 分别在大约 15 分钟和 40 分钟内完成。

我正在尝试为短文本分类(推特、短信等)构建一个通用框架,因此将对不同的数据集进行许多实验。我需要可扩展且运行良好的技术(我们都不是 :-))。有什么建议么?

另一个问题是关于降维的。当我预处理我的文本时,我会应用词干提取、停用词删除并将文本转换为 tf-idf 矢量表示。降维技术(尤其是信息增益)似乎再次花费了非常长的时间。任何可扩展的方式来进行特征选择?通过 tf-idf 进行修剪会得到可接受的方法吗?

编辑1:通过“信息增益”,我的意思是信息增益目前我没有做任何功能选择。

2个回答

您的 SVM 实现是并行的吗?一个简单的想法是将你的 10 倍 CV 拆分到 10 台机器(或内核)上。这应该会将算法的运行时间减少到其当前运行时间的近 1/10。

“信息增益”是什么意思?您是否尝试在未删除任何特征的数据集上应用 LibLINEAR?

您需要做的第一件事是弄清楚您的泛化错误的来源。是“偏差”还是“差异”?(或者可能是别的什么?)如果是方差,你的训练集对于你想要完成的任务可能很小,你可能需要更多的训练数据。如果是偏差,那么更改为不同的模型或更改 SVM 的参数可能会帮助您获得更好的结果。