超过 600 个类的大型数据集的多类分类

数据挖掘 机器学习 支持向量机 逻辑回归 多类分类 word2vec
2022-02-14 00:17:18

我正在尝试为包含 100 万行的多类分类训练文本数据。清理数据后,我使用 Word2Vec 特征的稀疏矩阵(特征大小为 300)

我拥有的数据是 1. ID 2. Dictionary 3. Label

字典大小从 10 键到 900 键不等

我在字典列上遵循的步骤是:

将字典转换为字符串 仅从字符串中获取好的标记 去除停用词 词干 Word2Vec 模型训练,特征大小为 300。 Word2Vec 特征生成 标签编码 将特征向量转换为 Numpy 数组 将 Numpy 数组转换为 (1114220, 300) 的稀疏矩阵 尝试过 OneVsRest 模型用于训练 onevsrest = OneVsRestClassifier(SVC(probability=True) , n_jobs=-1)

onevsrest.fit(稀疏矩阵,df.labels)

我运行这个模型将近两天,它被自动杀死了

我也尝试过逻辑回归

lr = LogisticRegression(penalty ='l1' , C=1 ,dual=False , solver='saga' , n_jobs=-1)

lr.fit(稀疏矩阵,df.labels)

我仍然面临同样的问题(模型继续训练 2 天并被杀死)

难道我做错了什么?或者有没有更好的方法来解决这类问题?

2个回答

一般来说,我已经看到 SVM 在文本分类任务中表现良好。为什么不首先尝试使用 TF-IDF 代替 Word2vec。假设您有一个带有术语 T1、T2 和 T3 的句子 D1。首先将其表示为 TF-IDF 并进行分类。此链接可能会有所帮助https://www.analyticsvidhya.com/blog/2018/04/a-comprehensive-guide-to-understand-and-implement-text-classification-in-python/ 然后您将知道问题是否出在内存问题或您的 word2vec 方法。

尝试卡方或基于熵的分类,即任何非线性的。与线性模型(回归或 SVM)相比,它们更稳健、更精确且与人类相关。您还可以对文档和/或特征(单词、术语、向量)的基础进行聚类。另一个想法是通过主题发现,以便您可以识别在重要方式上密切相关的术语。