微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多标签文本分类的分数不等于一

如何解决多标签文本分类的分数不等于一

我目前正在使用 Fast-BERT 进行多标签文本分类任务。 作为输出,我获得了每个类别的概率:

('S5',0.92626953125),('S17',0.0162200927734375),('S8',0.0150146484375),('S9',0.0142822265625),('S10',0.013275146484375),('S6',0.0129241943359375),('S11',0.01132965087890625),('S3',0.01129150390625),('S14',0.01078033447265625),('S15',0.01024627685546875),('S12',0.01016998291015625),('S1',0.010009765625),('S16',('S7',0.0099334716796875),('S2',0.0095977783203125),('S13',0.007904052734375),('S4',0.0074310302734375)

由于概率是逐类计算的,所以所有概率之和不等于1而是大于1。 我想知道,将所有这些概率放在相同的基数(等于 1 或 100%)以便在图表中更容易表示的更好解决方案是什么。

我提到我已经尝试在 Numpy 库的帮助下“规范化”我的数组,但结果是一样的,总和总是大于 1。

解决方法

您混淆了多类和多标签分类。

对于多标签分类,目标是为输入分配一些标签(例如 StackOverflow 上的标签)。可能没有正确的,可能有很多正确的。训练目标是每个标签的二元交叉熵,每个标签都是独立预测的,得分可以在 0 到 1 之间。

鉴于您希望分数总和为 1,您可能希望使用多类分类。在这种情况下,给定集合中的一个标签被分配给输入。输出是单分类分布,训练目标是分类交叉熵。

使用 Fast-Bert,只需将 multi_label 设置为 False

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。