何为多标签分类?这里有几种实用的经典方法

标签: 标签 分类 经典 | 发表时间:2021-10-12 15:01 | 作者:机器之心
出处:https://www.jiqizhixin.com/
众所周知,二分类任务旨在将给定的输入分为 0 和 1 两类。而多标签分类(又称多目标分类)一次性地根据给定输入预测多个二分类目标。例如,模型可以预测给定的图片是一条狗还是一只猫,同时预测其毛皮是长还是短。

在多分类任务中,预测目标是互斥的,这意味着一个输入可以对应于多个分类。本文将介绍一些可能提升多标签分类模型性能的小技巧。

模型评估函数

通过在「每一列」(分类标签)上计算模型评估函数并取得分均值,我们可以将大多数二分类评估函数用于多标签分类任务。对数损失或二分类交叉熵就是其中一种评估函数。为了更好地考虑到类别不均衡现象,我们可以使用 ROC-AUC 作为评估函数。

图 1:ROC-AUC 曲线

建模技巧

在介绍构建特征的技巧之前,本文将介绍一些设计适用于多标签分类场景的模型的小技巧。

对于大多数非神经网络模型而言,我们唯一的选择是为每个目标训练一个分类器,然后将预测结果融合起来。为此,「scikit-learn」程序库提供了一个简单的封装类「OneVsRestClassifier」。尽管这个封装类可以使分类器能够执行多标签任务,但我们不应采用这种方法,其弊端如下:(1)我们会为每个目标训练一个新模型,因此训练时间相对较长。(2)模型无法学习不同标签之间的关系或标签的相关性。

第二个问题可以通过执行一个两阶段训练过程来解决。其中,我们将目标的预测结果和原始特征相结合,作为第二阶段训练的输入。这样做的缺点是,由于需要训练的模型数量是之前的两倍,训练时间将大幅度提升。神经网络(NN)则适用于这种场景,其中标签的数量即为网络中输出神经元的数量。我们可以直接将任意的二分类损失应用于神经网络模型,同时该模型会输出所有的目标。此时,我们只需要训练一个模型,且网络可以通过输出神经元学习不同标签的相关性,从而解决上文中提出的非神经网络模型的两个问题。

图 2:神经网络

有监督的特征选择方法

在开始特征工程特征选择之前,需要对特征进行归一化和标准化处理。使用「scikit-learn」库中的「Quantile Transformer」将减小数据的偏度,使特征服从正态分布。此外,还可以通过对数据采取「减去均值,除以标准差」的操作,对特征进行标准化处理。该过程与「Quantile Transformer」完成了类似的工作,其目的都是对数据进行变换,使数据变得更加鲁棒。然而,「Quantile Transformer」的计算开销较高。

大多数算法都是为单一目标设计的,因此使用有监督特征选择方法稍微有些困难。为了解决这个问题,我们可以将多标签分类任务转化为多类分类问题。「Label Powerset」就是其中一种流行的解决方案,它将训练数据中的每一个独特的标签组合转化为一个类。「scikit-multilearn」程序库中包含实现该方案的工具。

图 3:Label Powerset 方法

在完成转换后,我们可以使用「信息增益」和「卡方」等方法来挑选特征。尽管这种方法是可行的,但是却很难处理上百甚至上千对不同的独特标签组合。此时,使用无监督特征选择方法可能更合适。

无监督特征选择方法

在无监督方法中,我们不需要考虑多标签任务的特性,这是因为无标签方法并不依赖于标签。典型的无监督特征选择方法包括:
  • 主成分分析(PCA)或其它的因子分析方法。此类方法会去除掉特征中的冗余信息,并为模型抽取出有用的特征。请确保在使用 PCA 之前对数据进行标准化处理,从而使每个特征对分析的贡献相等。另一个使用 PCA 的技巧是,我们可以将该算法简化后的数据作为模型可选择使用的额外信息与原始数据连接起来,而不是直接使用简化后的数据。

  • 方差阈值。这是一种简单有效的降低特征维度的方法。我们丢弃具有低方差或离散型的特征。可以通过找到一个更好的选择阈值对此进行优化,0.5 是一个不错的初始阈值。

  • 聚类。通过根据输入数据创建聚类簇来构建新特征,然后将相应的聚类分配给每一行输入数据,作为一列新的特征。

图 4:K - 均值聚类

上采样方法

分类数据高度不均衡时,可以使用上采样方法为稀有类生成人造样本,从而让模型关注稀有类。为了在多标签场景下创建新样本,我们可以使用多标签合成少数类过采样技术(MLSMOTE)。

代码链接:https://github.com/niteshsukhwani/MLSMOTE

该方法由原始的 SMOTE 方法修改而来。在生成少数类的数据并分配少数标签后,我们还通过统计每个标签在相邻数据点中出现的次数来生成其它相关的标签,并保留出现频次高于一半统计的数据点的标签。

原文链接:https://andy-wang.medium.com/bags-of-tricks-for-multi-label-classification-dc54b87f79ec

相关 [标签 分类 经典] 推荐:

何为多标签分类?这里有几种实用的经典方法

- - 机器之心
众所周知,二分类任务旨在将给定的输入分为 0 和 1 两类. 而多标签分类(又称多目标分类)一次性地根据给定输入预测多个二分类目标. 例如,模型可以预测给定的图片是一条狗还是一只猫,同时预测其毛皮是长还是短. 在多分类任务中,预测目标是互斥的,这意味着一个输入可以对应于多个分类. 本文将介绍一些可能提升多标签分类模型性能的小技巧.

jstl标签经典

- - CSDN博客推荐文章
库 :Core(核心库). 描述 : 标签是一个最常用的标签,用于在   JSP   中显示数据.  它的作用是用来替代通过 JSP 内   置对象 out 或者 <%=%> 标签来输出对象的值. 用于指定在使用  标记输出诸如“ < ”、“ > ”、“ ’ ”、“” ”和“ & ”之类的字符(在  HTML  和  XML  中具有特殊意义)时是否应该进行转义.

分类算法——决策树——经典算法比较

- - 数据库 - ITeye博客
决策树是以实例为基础的归纳学习算法. 它从一组无次序、无规则的元组中推理出决策树表示形式的分类规则. 它采用自顶向下的递归方式,在决策树的内部结点进行属性值的比较,并根据不同的属性值从该结点向下分支,叶结点是要学习划分的类. 从根到叶结点的一条路径就对应着一条合取规则,整个决策树就对应着一组析取表达式规则.

struts2的标签tag

- - CSDN博客编程语言推荐文章
二、 常用的Struts 2.0的标志(Tag)介绍. 在上一篇文章《 为Struts 2.0做好准备》中,我过于详细地介绍了Struts 2.0开发环境和运行环境的配置,所以,本文很少涉及的以上两方面的细节. 如果,您看完《 为Struts 2.0做好准备》后,还有什么不明白,或者没法运行文中例子,请联系我.

Struts标签详解

- - CSDN博客推荐文章
数据标签主要用于提供各种数据访问相关的功能,比如显示一个Action里的属性,以及生成的国际化输出等. Struts2数据标签主要分为以下几种:. property:用于生成输出某个值 值包:valueStack、StackContext和ActionContext中的值. bean:该标签用于创建一个JavaBean实例,如果指定了id属性,则可以将创建的Javabean实例存放入Stack Context中.

HTML head 头标签

- - IT技术博客大学习
HTML head 头部分的标签、元素有很多,涉及到浏览器对网页的渲染,SEO 等等,而各个浏览器内核以及各个国内浏览器厂商都有些自己的标签元素,这就造成了很多差异性. 移动互联网时代,head 头部结构,移动端的 meta 元素,显得更为重要. 了解每个标签的意义,写出满足自己需求的 head 头标签,是本文的目的.

Struts2常用标签总结

- - CSDN博客推荐文章
1.Struts2的作用 . Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性. Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求. Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供了大部分标签,可以在各种表现技术中使用.

Struts2 标签库讲解

- - CSDN博客架构设计推荐文章
Struts2 标签库讲解. 转自:http://blog.163.com/hzd_love/blog/static/131999881201082111852520/. 要使用Struts2的标签,只需要在JSP页面添加如下一行定义即可:. struts2的标签共分为五大类:. 1)条件标签:用于执行基本的条件流转.

标签?ID?还是CLASS?

- - 前端观察
想谈一下几个基本的HTML问题,都是围绕着应该怎样使用HTML. 多用有语义的标签,少用div和span,避免使用没有class的div和span. 设想一下HTML的世界最初只有div和span这两个标签,其实网页依然可以写得出来. 更多标签的出现,其实是为了替代利用率高但不好书写的 
 和  来的.

经典论文 — REST

- ripwu - kernelchina
牛人Roy Thomas Fielding的博士论文,此处可以访问到英文版,中文版可以google一下. HTTP1.0,1.1版本以及URI规范的主要作者,Apache的co-founder. 在写这篇论文之前已经很牛了,笔者不明白的是这种档次牛人还要读博士,文凭有这么重要吗. 文中没有任何令人眼花的数学公式和统计图表,实际上是一篇描述URI,HTTP设计经验教训总结的文章.