首先多标签分类是什么?
让我们来看看下面的图片。
如果问你这幅图中有什么?
有房子,有树,有山,有云。
当然没有人,没有太阳,没用动物。那么这样图片就可以如下标签化。
房子 | 树 | 山 | 云 | 人 | 太阳 | 动物 | |
---|---|---|---|---|---|---|---|
pic1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
因此,对这类问题进行分类,称之为多标签分类问题。唯一区别于多分类在于:一个样本是否可以拥有多个标签。
解决多标签分类问题的技术
基本上,有三种方法可以用来解决一个多标签分类问题,即:
- 问题转换
- 改编算法
- 集成方法
本篇主要将如何进行问题转换。
问题转换
方式一:
房子 | 树 | 太阳 | 动物 | |
---|---|---|---|---|
pic1 | 1 | 1 | 0 | 0 |
pic2 | 0 | 0 | 1 | 1 |
pic3 | 1 | 0 | 1 | 0 |
pic4 | 1 | 0 | 1 | 0 |
转换为
x1 | y-房子 | - | x1 | y-树 | - | x1 | y-太阳 | - | x1 | y-动物 |
---|---|---|---|---|---|---|---|---|---|---|
pic1 | 1 | pic1 | 1 | pic1 | 0 | pic1 | 0 | |||
pic2 | 0 | pic2 | 0 | pic2 | 1 | pic2 | 1 | |||
pic3 | 1 | pic3 | 0 | pic3 | 1 | pic3 | 0 | |||
pic4 | 1 | pic4 | 0 | pic4 | 1 | pic4 | 0 |
训练4个而分类模型,以此判断是否属于各个模型。
方式二:
将数据转化为:
x1 | y-房子 | x1 | x2(房子) | y-树 | x1 | x2(房子) | x3(树) | y-太阳 | ||
---|---|---|---|---|---|---|---|---|---|---|
pic1 | 1 | pic1 | 1 | 1 | pic1 | 1 | 1 | 0 | ||
pic2 | 0 | pic2 | 0 | 0 | pic2 | 0 | 0 | 1 | ||
pic3 | 1 | pic3 | 1 | 0 | pic3 | 1 | 0 | 1 | ||
pic4 | 1 | pic4 | 1 | 0 | pic4 | 1 | 0 | 1 |
x1 | x2(房子) | x3(树) | x4(太阳) | y-动物 |
---|---|---|---|---|
pic1 | 1 | 1 | 0 | 0 |
pic2 | 0 | 0 | 1 | 1 |
pic3 | 1 | 0 | 1 | 0 |
pic4 | 1 | 0 | 1 | 0 |
同样是分为四个类,但不同意方法一,方法二考虑了标签之间的关联性。将上一个类作为下一个类别的特征。
方式三:
将多标签分类转化为多分类问题。
x1 | x2(房子) | x3(树) | x4(太阳) | x5(动物) | y |
---|---|---|---|---|---|
pic1 | 1 | 1 | 0 | 0 | 1 |
pic2 | 0 | 0 | 1 | 1 | 2 |
pic3 | 1 | 0 | 1 | 0 | 3 |
pic4 | 1 | 0 | 1 | 0 | 3 |
即:通过标签的多种组合形成唯一的类。
转化为如下数据,变为多分类问题:
x1 | y |
---|---|
pic1 | 1 |
pic2 | 2 |
pic3 | 3 |
pic4 | 3 |