【机器学习】——分类:多分类

在上一节中我们已经讨论了如何处理两类分类问题,并对一些常见的任务(评分与排序、类概率估计)进行了总结,本节将讨论两类分类问题的推广,即多分类问题,并简单讨论一下回归问题。

多分类问题

1.1两种K类分类器

假设我们要构造一个K类分类器,有两种方案:

  • 一对多(一堆其余):首先训练K个两类分类器,第一个分类器是将C1和C2...Cn类区分开,第二个分类器是将C2和C1,C3...Cn类区分开,以此类推。在训练第i个分类器的时候,我们将来自Ci类的所有实例看成正例,其余的看作负例。有时候会按照某种固定的顺序来训练各类分类器,这时我们只需要K-1个分类器,其中第i个分类器是将Ci与Ci+1...Cn类区分开。

注意:有序也可以理解为,将K个分类器合并到一个决策树里,将某一测试集分成K类的时候,会产生K-1个内部节点,也就是K-1个分类器。

  • 一对一:在任意两个类别之间都需要训练一个分类器,如果是按照对称的处理方式,则需要K(K-1)/2个分类器,如果是按照非对称的处理方式,则需要K(K-1)个分类器。

注意:如果2个类别对没有顺序关系则为对称,如(C1,C2)和(C2,C1)

1.2输出编码矩阵

输出编码矩阵可以较容易的描述上述方案,将K类任务分为l个两分类问题,构建一个K x L的矩阵,矩阵中的元素都来自{+1,0,-1}。

下面是用一对一方案构建3类分类任务的两种方式:左侧是对称,右侧是非对称

                            \begin{pmatrix} +1 &+1 &0 \\ -1& 0&+1\\ 0&-1&-1 \end{pmatrix}                                      \begin{pmatrix} +1 & -1 &+1 &-1 & 0 &0 \\ -1 & +1 & 0 & 0 & +1 &-1 \\ 0&0 &-1 &+1 &-1 &+1 \end{pmatrix}

  • 每一列都描述了一个两分类任务,+1所在的行对应的类为正类。
  • 每一行代表一类(本例是C1,C2,C3)。
  • 采用对称的方式时,如左图,第一个用于区分C1(正)和C2(负),第二个用于区分C1(正)和C3(负),第三个用于区分C2(正)和C3(负)。

下面是用一对多方案构建3类分类任务的两种方式:左侧是无序,右侧是有序

                          \begin{pmatrix} +1 &-1 &-1 \\ -1& +1&-1\\ -1&-1&+1 \end{pmatrix}                                              \begin{pmatrix} +1 &0 \\ -1& +1\\ -1&-1 \end{pmatrix}

  • 先看左侧,第一个分类器将C1(正)和{C2,C3}(负)分开,第二个分类器将C2(正)和{C1,C3}(负)分开,第三个分类器将C3(正)和{C1,C2}(负)分开。
  • 右侧是按照C1-C2-C3的顺序进行分类的,因此只用2个分类器即可。

1.3多累分类器的性能

基于距离的解码:

为了确定新测试实例属于哪一类,我们需要收集该实例所有两类分类器的测试结果,这些预测结果形成了一个可在编码矩阵中查询的“”,该过程也称为解码

现在假设有一个字w为(-1,+1,-1),分类器采用的是无序一对多方案(看上面的矩阵),则判定该实例属于C2类,这个属于凑巧,得到的字正好在矩阵中出现了。

如果没出现该怎么办呢?现在假设有另外一个字w(0,+1,0),采用对称的一对一方案(见上面矩阵)。这时我们应该从矩阵中找与该字w距离最近的码字c。

计算公式如下:d(w,c)=\sum _{i}(1-w_{i}c_{i})/2

  • 两个字一样的位对距离不产生贡献
  • 每个字为+1或-1的位对距离的贡献为1
  • 如果某一位出现了0,其对距离贡献为1/2

因此,对于字w(0,+1,0),距离最近为d(w,c1)=1.5,应该选择C1

注意:

  • 如果采用的是一对一的方案,也可以通过投票的方式做出决策,与距离解码等价。如字(0,+1,0),分别对应了C3,C1,C1,因此C1有2票,选C1。
  • d_{j}+v_{j}=\frac{(k+1)(k+2)}{4},即距离(dj)+票数(vj)=常数,该常数取决于K值。
  • 最近距离的码字也不一定是唯一的,可能会出现多相同的距离,这时候不知道该选择哪个类,则可以为矩阵增加更多的类改善这种情况(一对一和一对多混合的方案)。

基于损失的解码:

上一篇文章讲了损失函数,这里可以将裕量应用到编码矩阵中来。如果两分类器可以输出得分,得分si则标识了不同的类别,裕量z_{i}=s_{i}c_{ji},并将其传给上一节中的某个损失函数,将该损失的最小化作为最终的决策。

例:编码矩阵C如左图,得分向量如中图,裕量矩阵如右图

    \begin{pmatrix} +1 &+1 &+1 &0 &0 &0 \\ -1& 0 &0 &+1 &+1 &0 \\ 0& -1 & 0 &-1 &0 &+1 \\ 0& 0 &-1 &0 & -1 &-1 \end{pmatrix}       \begin{pmatrix} +5 &-0.5 &+4 &-0.5 &+4 &+0.5 \end{pmatrix}    \begin{pmatrix} +5 &-0.5 &+4 &0 &0 &0 \\ -5 & 0 & 0 &-0.5 & +4& 0\\ 0 &+0.5 &0 &+0.5 &0 & +0.5\\ 0& 0& -4 &0 &-4 &-0.5 \end{pmatrix}

如果使用0-1损失,则预测结果为C3(Z1=4,Z2=5,Z3=3,Z4=6)

注意:基于损失的解码假设每个两类分类器在评分时都在相同的尺度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值