Sin*_*ver 4 artificial-intelligence classification machine-learning multilabel-classification data-science
我有一个简单的数据集,包含20个功能和8个可能的标签.但是,对于某些记录,可能有多个正确的标签.我想训练这个模型,使预测的标签是可能的标签之一.什么是实现这一目标的好方法?
示例:请考虑以下记录:
[color: grey; legs:2; wings:2; mass: 120g;....]
Run Code Online (Sandbox Code Playgroud)
一些记录被标记为"麻雀",而其他一些记录被命名为"鸟".在测试期间,我不关心这些标签中的哪一个被分配给记录,只要它是其中之一.
这当然取决于模型,但如果您使用的是具有交叉熵损失的神经网络,则完全有可能.在通常情况下,标签是单热矢量[0, ..., 0, 1, 0, ... 0].它的概率解释是目标类i具有概率1.0(以及0.0所有其他类).
没有什么可以阻止你定义标签[0, ..., 0, 0.5, 0, ..., 0, 0.5, 0, ... 0]:正确的类是i概率0.5和j概率0.5.因此,该模型得知这两个标签对于给定的输入都是正确的.训练模型后,您甚至可以输出两个或更多类,例如概率高于的所有类threshold.或者你总是可以选择最大可能类,在这种情况下可以选择任何一个类.
请注意,此技巧(称为软类)仅适用于概率模型,并非所有机器学习算法都是概率性的.所以模型的选择在这里很重要.