我正在研究一个多标签文本分类问题(目标标签总数 90)。数据分布具有长尾和类别不平衡以及大约 190 万条记录。目前,我正在处理具有相似目标分布的大约 10 万条记录的小样本。我正在使用 OAA 策略(一对一)。我在数据上尝试了许多算法。
目前,每个标签至少有 5000 个数据行。类不平衡很高,最常见的标签大约有 80k 条记录,而最罕见的只有一个数据行,我在建模中没有考虑。该数据集包含来自学术期刊的文本。它有标题和摘要列。
我正在使用 HashingVectorizer(特征数 2**20,字符分析器)来生成特征,并使用 TSVD 来降低维度(n_components=200)。
LinearSVC(class_weight='balanced') # Got many warnings that it could not converge. I came to know that it may due to data not scaled properly. How can I scale text data??
LogisticRegression(solver='lbfgs') # Converged very quickly
RandomForestClassifier(n_estimators=40,class_weight="balanced") # Train time ~2hr
我注意到 LinearSVC 具有良好的召回率(更少的误报),而 Logistic 和 RF 具有良好的精度(更少的误报)分数。谁能帮助我找出这些分数背后的原因以及如何改进它们。
目前,由于计算资源有限,我没有使用深度学习/变压器模型。