使用输出量化的多标签分类

数据挖掘 机器学习
2022-02-14 10:40:59

问题陈述

事实上,为了训练多标签数据集的网络,通常使用单热向量输出。

例子:

狗 [1 0 0]

猫 [0 1 0]

兔子 [0 0 1]

因此,我们增加了权重矩阵的大小以及所需的训练时间。


问题:有没有一种方法可以使用一个输出并将其量化为不同的类?

例子:

0 <= 输出 < =1

狗 [0.0 - 0.33]

猫 [0.33 - 0.66]

兔子 [0.66 - 1]

2个回答

TL;博士

坏主意,不要那样做。

解释

1)您在不存在的类中引入了排序。基本上,在您的示例中,您是在说:“dog接近cat”,“cat接近rabbit”,但“远离” ,这dog您的网络需要学习的额外学习功能。rabbit

例如,如果网络输出0.35,那么它是类cat,但它也接近dog和远离rabbit

2) 另一个问题,有些结果是无法表示的。

例如,如果您将范围更改为:

0 <= 输出 < =1

猫 [0.0 - 0.33]

兔子 [0.33 - 0.66]

狗 [0.66 - 1]

您将如何表示以前的相同示例(“它是类cat,但它也接近dog和远离rabbit。”)?变得不可能了。

使用以前的表示,您可以:

output = [0.5, 0.0, 0.5] # cat, rabbit, dog

您如何将其映射到新范围 wherecat = [0.0-0.33]dog = [0.66-1.0]我们可以选择中间的 ( 0.5) 吗?不,因为那是 class rabbit

结论

通过这样做,您可以减少最终层中的权重数量(很好),但是,您会引入需要学习的依赖关系,并且某些结果是不可表示或不可解释的。

执行一种标签编码,然后对列进行规范化。