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

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

多分类问题

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)

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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
决策树算法是一种广泛应用于分类和回归的机器学习算法,它基于树形结构对样本进行分类或预测。决策树算法的主要思想是通过一系列的判断来对样本进行分类或预测。在决策树中,每个节点表示一个属性或特征,每个分支代表该属性或特征的一个取值,而每个叶子节点代表一个分类或预测结果。 决策树算法的训练过程主要包括以下步骤: 1. 特征选择:根据某种指标(如信息增益或基尼系数)选择最优的特征作为当前节点的分裂属性。 2. 决策树生成:根据选择的特征将数据集分成若干个子集,并递归地生成决策树。 3. 剪枝:通过剪枝操作来提高决策树的泛化性能。 决策树算法的优点包括易于理解和解释、计算复杂度较低、对缺失值不敏感等。但是,决策树算法也存在一些缺点,如容易出现过拟合、对离散数据敏感等。 下面是一个决策树算法的案例:假设我们要根据一个人的年龄、性别、教育程度和职业预测其收入水平(高于或低于50K)。首先,我们需要将这些特征进行编码,将其转换为数值型数据。然后,我们可以使用决策树算法对这些数据进行训练,并生成一个决策树模型。最后,我们可以使用该模型对新的数据进行分类或预测。例如,根据一个人的年龄、性别、教育程度和职业,我们可以使用决策树模型预测该人的收入水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值