当有多个正确标签时,如何训练机器学习分类模型?

Posted

技术标签:

【中文标题】当有多个正确标签时,如何训练机器学习分类模型?【英文标题】:How to train a machine learning classification model when there are more than one correct label? 【发布时间】:2018-10-28 01:04:50 【问题描述】:

我有一个包含 20 个特征和 8 个可能标签的简单数据集。然而,对于某些记录,可能有不止一个正确的标签。 我想训练这个模型,使预测的标签是可能的标签之一。什么是实现这一目标的好方法?

示例:考虑以下记录:

[color: grey; legs:2; wings:2; mass: 120g;....]

一些记录被标记为“Sparrow”,而其他一些记录被标记为“Bird”。在测试期间,我不在乎这些标签中的哪一个被分配给记录,只要它是其中之一。

【问题讨论】:

【参考方案1】:

这当然取决于模型,但如果您使用具有交叉熵损失的神经网络,则完全有可能。通常情况下,标签是一个单热向量[0, ..., 0, 1, 0, ... 0]。它的概率解释是目标类是i,概率为1.0(以及所有其他类的0.0)。

没有什么能阻止您定义标签[0, ..., 0, 0.5, 0, ..., 0, 0.5, 0, ... 0]:正确的类是i,概率为0.5j,概率为0.5。因此,模型知道这两个标签对于给定的输入都是正确的。模型训练好后,你甚至可以输出两个或更多类,例如所有概率高于threshold的类。或者您总是可以选择最大可能的类别,在这种情况下,可以选择任一类别。

请注意,此技巧(称为 soft classes)仅适用于 概率 模型,并非所有机器学习算法都是概率性的。所以模型的选择在这里很重要。

【讨论】:

我确实在使用具有交叉熵损失的神经网络。你的回答很有帮助。我会尝试你推荐的方法。

以上是关于当有多个正确标签时,如何训练机器学习分类模型?的主要内容,如果未能解决你的问题,请参考以下文章

Mooc机器学习-02监督学习

机器学习分类算法模型训练与测试工具

机器学习学习分类及常用分类算法

机器学习入门 - 基本概念

机器学习基础4--评估线性分类

Python 与金融数据|生成机器学习的标签和特征