我有一个 NLP 任务,我正在使用 xgboost(R 实现)来处理。
在描述我的怀疑之前,我会给你一些背景:
我有一个文档语料库,我使用术语 x 术语矩阵聚类方法进行了主题发现。对于每个文档,我得到一个使用文档中的术语计算的主题分数(带有 TfIdf 分数)。然后对于每个文档,我选择得分最高的主题。
接下来的步骤是创建一个模型,给定术语 x 文档得分矩阵和每个文档的最佳主题,预测最佳主题。
我尝试了两种不同的方法:
- 多类模型,其中一个主题与每个文档相关联;
- 一对一的模型系列,每个主题一个,其中每个文档都被标记为属于或不属于某个主题。
以下是使用 AUC 的两种方法的结果:
i topic single multi
1 1 Topic.nv1 0.9564445 0.9880821
2 2 Topic.nv10_Topic.wv9 0.9848492 0.9969546
3 3 Topic.nv11 0.9174293 0.9741100
4 4 Topic.nv12_Topic.wv11 0.9874073 0.9967725
5 5 Topic.nv13_Topic.wv10 0.9509909 0.9916768
6 6 Topic.nv14_Topic.wv12 0.9864622 0.9959161
7 7 Topic.nv15 0.7333333 0.9333333
8 8 Topic.nv2_Topic.wv3 0.9590279 0.9877953
9 9 Topic.nv3_Topic.wv5 0.9448966 0.9879057
10 10 Topic.nv4_Topic.wv2 0.9521490 0.9908656
11 11 Topic.nv5_Topic.wv6 0.9761665 0.9946294
12 12 Topic.nv6 0.9439377 0.9889028
13 13 Topic.nv7_Topic.wv4 0.9656248 0.9926163
14 14 Topic.nv8 0.9673726 0.9944970
15 15 Topic.nv9_Topic.wv8 0.9716538 0.9929586
16 16 Topic.wv1 0.9610704 0.9925414
17 17 Topic.wv7 0.9765398 0.9904255
可以看出,多类方法系统地优于其他方法。注意:这些是训练集的表现。
这有明确的理论原因吗?