《机器学习by周志华》学习笔记-线性模型-03

2024-04-29 13:04

本文主要是介绍《机器学习by周志华》学习笔记-线性模型-03,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、多分类学习

1.1、背景

我们在上一节介绍了「线性判别分析(LDA)」,LDA的从二分类任务可以推广到多分类任务中。

而现实中常遇到的多分类学习任务。有些二分类的学习方法可以直接推广到多分类,但是更多情况下是基于一些策略,利用二分类学习器来解决多分类的问题。

1.2、概念

我们通常将「分类学习器」简称「分类器(classifier)」,多个「分类器」的集成使用,则称为「集成学习」。

一般的,分类器使用「多分类学习」的方法来完成分类任务。本章主要介绍了「多分类学习」的方法。

1.3、基本思路

「多分类学习」的基本思路是「拆解法」,即将「多分类任务」拆成「若干个二分类任务」求解。

具体来说就是:

  • 先对问题进行拆分;
  • 然后为「拆出的每个二分类任务」训练出一个「分类器」;
  • 最后对这些分类器进行「集成使用」;

在测试时,对这些分类器的预测结果进行集成,获得最终的多分类结果。这里的关键如下:

  • 如何对多分类任务进行拆分
  • 如何对多个分类器进行集成

1.4、拆分策略

给定m个示例的数据集D有n个类别,y是其所有示例的真实标记,所有类别集合用C表示,则:

D=\left \{ (x_{1} ,y_{1} ),(x_{2} ,y_{2} ),...,(x_{m} ,y_{m} )\right \}

C=\left \{ C_{1},C_{2},...,C_{n} \right \}

yi\in C

常见的拆分策略有三种:

  • 一对一(One vs.One,简称OvO)
  • 一对其余(One vs.Rest,简称OvR):亦称OvA(One vs.All),但OvA这个说法不严格,因为不可能把“所有类”作为反类。
  • 多对多(Many vs.Many,简称MvM)

后面我们将详细介绍这三种拆分策略。

1.4.1、一对一(OvO)

首先,将n个类别「两两配对」,从而产生\hat{n}个二分类任务,即\hat{n}个二分类器。

\hat{n}=C_{n}^{2}=\frac{A_{n}^{2}}{A_{2}^{2}}=\frac{n\times (n-1)}{2\times 1}= \frac{n(n-1)}{2}

其次,每个二分类任务,都C_{i}表示正例,C_{j}表示反例。

再次,将D的所有m个样本同时提交给\hat{n}个二分类器。

最后,结果通过投票产生,即把被预测的最多的类别作为最终分类结果。

如下图所示:

1.4.2、一对其余(OvR)

首先,每次将一个类的样例作为正例、其余的类作为反例来训练,从而产生n次训练任务、n个二分类器以及预测结果。

其次,将D的所有m个样本同时提交给n个二分类器。

最后,分情况选择分类结果:

  • 当只有一个分类器预测为正例,则对应类别就是分类结果,例如下图的C3
  • 当有多个分类器预测为正例,则考虑每个分类器预测的置信度,选择最大的类别作为分类结果。

OvO与OvR对比:

对比类别OvOOvR分析
训练分类器个数nn(n-1)/2OvO的存储开销、测试(训练)时间较大。
每个分类器训练样例数2个类别的样例n个类别的样例在类别很多的时候,OvO的测试(训练)时间、开销更小。
预测性能//依赖于二者的数据分布,多数情况都差不多。

1.4.3、多对多(MvM)

就是将若干个类的样例作为「正例」,其他类的样例作为「反例」。其构造必须有特殊的设计,不能随意选取。

OvO和OvR是MvM的一种拆分方式,属于MvM的特例。

我们会在下面介绍一种常用的选取技术「纠错输出码(Error Correcting Output Codes,简称ECOC)」,它是将编码的思维引入类别拆分,并尽可能在编码过程中具有容错性,其工作主要分为以下2步:

第一步:编码

  • 对n个类别做m次划分,每次划分将一部分类别划分为「正类」,另一部分为「反类」,从而形成一个二分类训练集。
  • 一共产生m个训练

这篇关于《机器学习by周志华》学习笔记-线性模型-03的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/946158

相关文章

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首