机器学习笔记——多分类与softmax

机器学习笔记——多分类与softmax

  • 一、多分类问题
    • 1.问题简述
    • 2.“一对一” OvO
    • 3.“一对多” OvR
    • 4.“多对多” MvM
    • 5.类别不平衡问题
      • 5.1再缩放
      • 5.2欠采样与过采样
  • 二、softmax函数
    • 1.基本了解
    • 2.作为函数与计算方式
    • 3.作为多分类处理方法

一、多分类问题

1.问题简述

  • 通过之前的学习,我们掌握了使用对数几率回归解决二分类问题的方法和思想,也就是掌握了二分类学习器。但在实际生活中,分类问题可不仅仅设计二分类,我们需要基于一些基本策略利用二分类学习器来解决多分类问题。
  • 多分类问题的基本解决思路是:“拆解法”。首先将多分类任务拆为若干个二分类任务求解,然后为拆出的每个二分类任务训练一个分类器,最后对这些分类器的预测结果进行集成获得最终分类结果。
  • 有关多分类的拆解方法有以下三种:“一对一”OvO、“一对多”OvR、“多对多”MvM。下面详细叙述。

2.“一对一” OvO

  • 一对一的分类方法会将N个类别两两配对,从而产生N(N-1)/2个二分类分类器,于是我们得到了N(N-1)/2个分类结果,最终的结果可以通过投票统计获得,也就是把预测最多的类别作为最后的分类结果。
  • 一对一分类的基本思路就是,每两个类别 C i C_i Ci C j C_j Cj构成一组二分类任务,分别将训练集中 C i C_i Ci类样例作为正例, C j C_j Cj类样例作为反例进行学习。使用该模型进行预测得出的结果是该输入更接近于 C i C_i Ci C j C_j Cj哪一类。有可能真实分类并不在 C i C_i Ci C j C_j Cj之间,但统计所有的分类器得出预测结果最多的类别就可以当作最后结果。
    机器学习笔记——多分类与softmax_第1张图片

3.“一对多” OvR

  • 一对多是每次将一个类的样例作为正例,所有其他类的样例作为反例来训练得到N个分类器。每一个分类器针对类别 C i C_i Ci的任务是,计算判断输入更有可能属于 C i C_i Ci还是更有可能不属于 C i C_i Ci
  • 若测试时只有一个分类器预测为正类,则对应的类别就是该分类器正类的类别。如果有多组分类器预测出了正类,那么需要比较正类分类器的置信度来确定最终结果。
    机器学习笔记——多分类与softmax_第2张图片
  • 现在来对比一下一对一与一对多的拆分方式。一对多只需要训练N个分类器,而一对一需要训练N(N-1)/2个分类器。但是一对多每次分类器训练时都需要用到训练集所有的样本,而一对一分类器训练时只需要用到部分样本。因此两者各有利弊,综合性能要根据数据的具体分布情况决定,在大多数情况下二者性能接近。

4.“多对多” MvM

  • 多对多顾名思义就是一个分类器的训练过程中,存在多个正类与多个反类。多对多问题比较复杂我们以“纠错输出码算法ECOC举例学习。
  • 首先将N个类别做M次划分,每次划分将一部分类别作为正类一部分类别作为反类,从而形成了M个分类器。M个分类器分别对测试样本进行预测,预测标记组成一个编码,将这个预测编码与每个类别各自的编码进行比较,返回其中距离最小的类别作为最终的预测结果。
  • 对下图做个详细的解释。编码矩阵中的+1表示将其作为正类处理,-1表示将其作为负类处理。有两种编码方案,二元码和三元码,三元码相较于二元码还增加了0这一编码项,代表的意思是停用或不相关。
  • 在图a中我们以分类器f2为例。f2将C1、C3作为正类处理,将C2、C4作为负类处理。其他的分类器理解以此类推。最后我们可以计算出每个类别与测试用例之间的海明距离或者欧式距离,选定一个标准选择最小的距离便是本次多分类问题的结果。

5.类别不平衡问题

  • 以上多分类问题的分类学习方法都有一个共同的假设,那就是不同类别的训练集样本数目相当或者比较接近。如果不同类别训练样本数目差别较大则会对学习过程造成很多的困扰。
  • eg:比如说我们有1000个训练样本,其中998个负面样本,只有两个训练样本。那么我们训练出的模型如果无论什么输入就输出负面样本,这样训练正确率都可以达到99.8%。但显然是不合乎实际的。
  • 不仅仅是最初的训练样本数据可能存在类别不平衡的问题,即便是OvR、MvM后都有可能再次造成类别不平衡问题。因此学会如何解决该问题就十分重要。
  • 以下提出三种常见的解决方法:再缩放、欠采样、过采样。

5.1再缩放

  • 在对数几率回归的二分类问题中我们知道,分类的过程实际上是根据一定模型得到一个预测y值(0-1之间),然后拿这个值跟阈值进行比较,从而确定分类。y表示正例的可能性,那么 y 1 − y \frac{y}{1-y} 1yy则代表阈值。如果说我们假设正例与负例的可能性相同均为0.5,那么阈值就是0.5。
  • 而当我们的正例负例比例不同时,就需要通过再缩放调整阈值。
    y ′ 1 − y ′ = y 1 − y ∗ m − m + \frac{y^{'}}{1-y^{'}}=\frac{y}{1-y}*\frac{m^{-}}{m^{+}} 1yy=1yym+m。其中 m − m^- m表示负例的个数, m + m^+ m+表示正例的个数。
  • 以上方法便于理解与操作,但确实基于假设“训练集是真实样本总体的无偏采样”,这个假设往往不成立,因此再缩放的方法仅是一个理想方法。

5.2欠采样与过采样

  • 我们假设当前训练集样本不平衡的原因是,正例太少负例太多。欠采样的方法就是去除一些反例使得正、反例数目接近,然后再进行学习;过采样的方法就是增加一些正例,然后再进行学习。

二、softmax函数

1.基本了解

  • 首先我们要弄懂什么是softmax?
    1.softmax是一种函数也是一种计算方式。它可以将输出值全部映射到0-1这个区间之间,并且所有输出的和为1。
    2.softmax是一种多分类问题的处理方法。众所周知多分类问题有两种处理方法,一种是softmax,另一种就是我们上面提到的拆分成多个二分类问题的方法。

2.作为函数与计算方式

机器学习笔记——多分类与softmax_第3张图片

  • 上面图片直观而形象地表述了softmax的计算方法。
  • 上图中可以看出 z 1 = 3 , z 2 = 1 , z 3 = − 3 z_1=3,z_2=1,z_3=-3 z1=3,z2=1,z3=3
  • e z 1 = e 3 = 20 , e z 2 = e 1 = 2.7 , e z 3 = e − 3 = 0.05 e^{z_1}=e^3=20,e^{z_2}=e^1=2.7,e^{z_3}=e^{-3}=0.05 ez1=e3=20,ez2=e1=2.7,ez3=e3=0.05
  • h 1 = 20 20 + 2.7 + 0.05 = 0.88 , h 2 = 2.7 20 + 2.7 + 0.05 = 0.12 , h 3 = 0.05 20 + 2.7 + 0.05 = 0 h_1=\frac{20}{20+2.7+0.05}=0.88,h_2=\frac{2.7}{20+2.7+0.05}=0.12,h_3=\frac{0.05}{20+2.7+0.05}=0 h1=20+2.7+0.0520=0.88,h2=20+2.7+0.052.7=0.12,h3=20+2.7+0.050.05=0
  • 可以看出经过softmax计算后所有的预测输出值都被划归到了0-1的范围内,可以理解为概率,并且所有输出的和为1,也符合概率的定义。因此softmax适合于处理多分类问题。

3.作为多分类处理方法

  • 既然多分类问题有两种不同的处理方式,那么我们该如何选择呢?一种考虑角度是,分析该多分类问题内部每个分类之间是否互斥。互斥的情况要用softmax,不互斥的情况要用拆分成多个二分类问题方法。
  • 比如说我们要想给音乐做分类划分。
  • 第一种分类标准是:嘻哈音乐、摇滚音乐、民谣音乐、古典音乐,一般我们只会给音乐打上唯一的标签,也就说上述分类中类与类之间是互斥的关系,那么我们就要用softmax。
  • 第二种分类标准是:人声音乐、舞曲、影视原声、流行歌曲,以上四种分类明显就不会是互斥关系,某首音乐很可能会有以上多个标签。因此这个问题我们就应该将其拆分成多个二分类问题。

你可能感兴趣的:(机器学习,机器学习)