机器学习_14_多分类及多标签分类算法

文章目录

  • 1 单标签二分类问题
    • 1.1 单标签二分类算法原理
    • 1.2 Logistic算法原理
  • 2 单标签多分类问题
    • 2.1 单标签多分类算法原理
    • 2.2 Softmax算法原理
    • 2.3 ovo
    • 2.4 ovr
    • 2.5 OvO和OvR的区别
    • 2.6 Error Correcting
  • 3 多标签算法问题
    • 3.1 Problem Transformation Methods
      • 3.1.1 Binary Relevance
      • 3.1.2 Classifier Chains
      • 3.1.3 Calibrated Label Ranking
    • 3.2 Algorithm Adaptation
      • 3.2.1 ML-kNN
      • 3.2.2 ML-DT

1 单标签二分类问题

1.1 单标签二分类算法原理

  • 单标签二分类这种问题是我们最常见的算法问题,主要是指label标签的取值只有两种,并且算法中只有一个需要预测的label标签;直白来讲就是每个实例的可能类别只有两种(A or B);此时的分类算法其实是在构建一个分类线将数据划分为两个类别。常见的算法:Logistic、SVM、KNN等

在这里插入图片描述

1.2 Logistic算法原理

在这里插入图片描述

2 单标签多分类问题

2.1 单标签多分类算法原理

  • 单标签多分类问题其实是指待预测的label标签只有一个,但是label标签的取值可能有多种情况;直白来讲就是每个实例的可能类别有K种(t1,t2,…tk,k≥3);常见算法:Softmax、KNN、决策树等;

在这里插入图片描述

2.2 Softmax算法原理

在这里插入图片描述

在实际的工作中,如果是一个多分类的问题,我们可以将这个待求解的问题转换 为二分类算法的延伸,即将多分类任务拆分为若干个二分类任务求解,具体的策 略如下:

  • One-Versus-One(ovo):一对一
  • One-Versus-All / One-Versus-the-Rest(ova/ovr): 一对多
  • Error Correcting Output codes(纠错码机制):多对多

在这里插入图片描述

2.3 ovo

原理:将K个类别中的两两类别数据进行组合,然后使用组合后的数据训练出来一个模型,从而产生K(K-1)/2个分类器,将这些分类器的结果进行融合,并将分类器的预测结果使用多数投票的方式输出最终的预测结果值。

在这里插入图片描述
https://scikit-learn.org/0.19/modules/generated/sklearn.multiclass.OneVsOneClassifier.html#sklearn.multiclass.OneVsOneClassifier

2.4 ovr

原理:在一对多模型训练中,不是两两类别的组合,而是将每一个类别作为正例,其它剩余的样例作为反例分别来训练K个模型;然后在预测的时候,如果在这K个模型中,只有一个模型输出为正例,那么最终的预测结果就是属于该分类器的这个类别;如果产生多个正例,那么则可以选择根据分类器的置信度作为指标,来选择置信度最大的分类器作为最终结果,常见置信度:精确度、召回率
在这里插入图片描述
https://scikit-learn.org/0.19/modules/generated/sklearn.multiclass.OneVsRestClassifier.html#sklearn.multiclass.OneVsRestClassifier

2.5 OvO和OvR的区别

在这里插入图片描述

2.6 Error Correcting

原理:将模型构建应用分为两个阶段:编码阶段和解码阶段;编码阶段中对K个类别中进行M次划分,每次划分将一部分数据分为正类,一部分数据分为反类,每次划分都构建出来一个模型,模型的结果是在空间中对于每个类别都定义了一个点;解码阶段中使用训练出来的模型对测试样例进行预测,将预测样本对应的点和类别之间的点求距离,选择距离最近的类别作为最终的预测类别

在这里插入图片描述

https://scikit-learn.org/0.19/modules/generated/sklearn.multiclass.OutputCodeClassifier.html#sklearn.multiclass.OutputCodeClassifier

3 多标签算法问题

Multi-Label Machine Learning(MLL算法)是指预测模型中存在多个y值,具体分为两类不同情况:

  1. 多个待预测的y值;
  2. 在分类模型中, 一个样例可能存在多个不固定的类别。

根据多标签业务问题的复杂性,可以将问题分为两大类:

  1. 待预测值之间存在相互的依赖关系;
  2. 待预测值之间是不存在依赖关系的。

对于这类问题的解决方案可以分为两大类:

  1. 转换策略(Problem Transformation Methods);
  2. 算法适应(Algorithm Adaptation)。

在这里插入图片描述

3.1 Problem Transformation Methods

Problem Transformation Methods又叫做策略转换或者问题转换,是一种将多标签的分类问题转换成为单标签模型构造的问题,然后将模型合并的一种方式,主要有以下几种方式:

  • Binary Relevance(first-order)
  • Classifier Chains(high-order)
  • Calibrated Label Ranking(second-order)

3.1.1 Binary Relevance

Binary Relevance的核心思想是将多标签分类问题进行分解,将其转换为q个二元分类问题,其中每个二元分类器对应一个待预测的标签。(q为y的数目,也就是标签的数目)

在这里插入图片描述

Binary Relevance方式的优点如下:

  • 实现方式简单,容易理解;
  • 当y值之间不存在相关的依赖关系的时候,模型的效果不错。

缺点如下:

  • 如果y直接存在相互的依赖关系,那么最终构建的模型的泛化能力比较弱;
  • 需要构建q个二分类器,q为待预测的y值数量,当q比较大的时候,需要构建的模型 会比较多。

3.1.2 Classifier Chains

Classifier Chains的核心思想是将多标签分类问题进行分解,将其转换成为一个二元分类器链的形式,其中链后的二元分类器的构建是在前面分类器预测结果的基础上的。在模型构建的时候,首先将标签顺序进行shuffle打乱排序操作,然后按照从头到尾分别构建每个标签对应的模型。

在这里插入图片描述
在这里插入图片描述

Classifier Chains方式的优点如下:

  • 实现方式相对比较简单,容易理解;
  • 考虑标签之间的依赖关系,最终模型的泛化能力相对于Binary Relevance方式构建的模型效果要好。

缺点如下:

  • 很难找到一个比较适合的标签依赖关系。

https://scikit-learn.org/0.19/modules/generated/sklearn.multioutput.ClassifierChain.html#sklearn.multioutput.ClassifierChain

3.1.3 Calibrated Label Ranking

Calibrated Label Ranking的核心思想是将多标签分类问题进行分解,将其转换为标签的排序问题,最终的标签就是排序后最大的几个标签值。

在这里插入图片描述

Calibrated Label Ranking 方式的优点如下:

  • 考虑了标签两两组合的情况,最终的模型相对来讲泛化能力比较好。

缺点如下:

  • 只考虑两两标签的组合,没有考虑到标签与标签之间的所有依赖关系。

https://scikit-learn.org/0.19/modules/generated/sklearn.multioutput.MultiOutputClassifier.html#sklearn.multioutput.MultiOutputClassifier

3.2 Algorithm Adaptation

Algorithm Adaptation又叫做算法适应性策略,是一种将现有的单标签的算法直接应用到多标签上的一种方式,主要有以下几种方式:

  • ML-kNN (ML:多个标签的意思)
  • ML-DT

3.2.1 ML-kNN

k近邻算法(k-Nearest Neighbour, KNN)的思想:如果一个样本在特征空间中的k个最相似(即特征空间中距离最近)的样本中的大多数属于某一个类别,那么该样本属于这个类别。

**ML-kNN的思想:**对于每一个实例来讲,先获取距离它最近的k个实例,然后使用这些实例的标签集合,通过最大后验概率(MAP)来判断这个实例的预测标签集合的值。

**最大后验概率(MAP):**其实就是在最大似然估计(MLE)中加入了这个要估计量 的先验概率分布。

在这里插入图片描述

3.2.2 ML-DT

ML-DT是使用决策树处理多标签内容,核心在于给予更细粒度的信息熵增益准则来构建这个决策树模型。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/449752.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux信号详解~

目录 前言 一、初识信号 二、信号的概念 三、信号的发送与捕捉 3.1 信号的发送 3.1.1 kill 命令 3.1.2 kill 函数 3.1.3 raise函数 3.1.4 abort函数 3.2 信号的捕捉 3.2.1 signal函数 3.2.2 sigaction函数 3.2.3 图示 四、信号的产生 4.1 硬件异常产生信号 4.2 …

使用雨云的虚拟主机建设兰空图床

安装前须知 因需要安装FileInfo拓展,因此你需要购买2048MB及以上运存的服务器。 确保MySQL版本高于或等于5.7 什么是兰空图床? Lsky Pro 是一个用于在线上传、管理图片的图床程序,中文名:兰空图床,你可以将它作为自己…

latex multirow学习

今天搞了一晚上的这个multirow,总算弄出来了几个比较好的例子,主要是这个multirow的语法我没看懂,这个逻辑我是没理解,就很尴尬,一改就报错,只能先弄几个例子,自己慢慢试 \documentclass{artic…

【计网·湖科大·思科】实验七 路由信息协议RIP、开放最短路径优先协议OSPF、边界网关协议BGP

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

【Spark系列6】如何做SQL查询优化和执行计划分析

Apache Spark SQL 使用 Catalyst 优化器来生成逻辑执行计划和物理执行计划。逻辑执行计划描述了逻辑上如何执行查询,而物理执行计划则是 Spark 实际执行的步骤。 一、查询优化 示例 1:过滤提前 未优化的查询 val salesData spark.read.parquet(&quo…

TCP TIME_WAIT 过多怎么处理

文章目录 1.什么是 TCP TIME_WAIT?2.为什么要 TIME_WAIT?3.TIME_WAIT 过多的影响4.解决办法4.1 调整短连接为长连接4.2 调整系统内核参数 5.小结参考文献 1.什么是 TCP TIME_WAIT? TCP 断开连接四次挥手过程中,主动断开连接的一方&#xff…

Windows Server 2019 Web服务器搭建

系列文章目录 目录 系列文章目录 文章目录 前言 二、配置服务器 1.实验环境搭建 1)实验服务器配置和客户端 2)实验环境 3)配置服务器IP 2.搭建服务器 在网站上右击新建网站搭建成功 文章目录 Windows Server 2003 Web服务器搭建Windows Server 2003 FTP服务器搭建Wi…

Linux下tar命令详解

tar #归档命令 格式 • Tar -参数 [args]..... 参数: 必选参数: 辅助参数: 额外参数: # 打包时排除某个文件 tar cf 文件名.tar --exclude路径/文件 路径 注:此处的路径前后需要保持保持一致,统一…

在本地电脑上打开服务器里面的localhost网址

远程连接服务器,启动了一个服务 显示访问地址为:http://127.0.0.1:7860 在本地浏览器将127.0.0.1改成服务器ip但是无法访问 解决办法: 1. ssh新建一个远程连接,将服务器的7860端口重定向到本机 ssh -L 18097:127.0.0.1:7860 us…

【Java 数据结构】排序

排序算法 1. 排序的概念及引用1.1 排序的概念1.2 常见的排序算法 2. 常见排序算法的实现2.1 插入排序2.1.1 直接插入排序2.1.2 希尔排序( 缩小增量排序 ) 2.2 选择排序2.2.1 直接选择排序2.2.2 堆排序 2.3 交换排序2.3.1冒泡排序2.3.2 快速排序2.3.3 快速排序非递归 2.4 归并排…

cmd常用命令

一、启动cmd的方式 用户启动,Win r 输入cmd,Enter管理员启动,Win r 输入cmd,Ctrl Shift Enter 二、修改窗口背景色和文字颜色 在打开的cmd窗口顶部空白区右击点击属性,进行设置即可 设置成这样不是美汁汁嘛 三、…

idea 中 tomcat 乱码问题修复

之前是修改 Tomcat 目录下 conf/logging.properties 的配置,将 UTF-8 修改为 GBK,现在发现不用这样修改了。只需要修改 IDEA 中 Tomcat 的配置就可以了。 修改IDEA中Tomcat的配置:添加-Dfile.encodingUTF-8 本文结束