通过 LDA 的所有成对分类进行多类分类

机器算法验证 分类 判别分析
2022-03-26 09:37:52

我已经为三类 IRIS 数据训练了线性判别分析 (LDA) 分类器,并为如何进行分类而苦苦挣扎。这是程序:

对于 Iris 数据,我有 3 种组合,即 (0,1)、(0,2) 和 (1,2)。所以,我为每个组合训练了一个简单的二元 LDA 分类器,最终得到了三个分类器:

Classifier(0,1)
Classifier(0,2)
Classifier(1,2)

现在,假设我需要对输入进行分类,例如 k = [1.2, 2.3, 5.0]。我正在做的是将这个输入分别传递给所有分类器,这些分类器给了我各自的分数,比如:

Classifier(0,1)[k] = {0: some score, 1: some score}
Classifier(0,2)[k] = {0: some score, 2: some score}
Classifier(1,2)[k] = {1: some score, 2: some score}

在两个班级的简单二元情况下,我们被教导要做的就是将得分最高的班级作为结果。我的问题是,在这种情况下该怎么办,我有来自三个不同分类器的三个结果,我想对输出进行分类。请注意,我没有使用多类 LDA。我只是对所有可能的组合使用二进制 LDA,这里说明了一种技术:

http://en.wikipedia.org/wiki/Linear_discriminant_analysis#Multiclass_LDA

引用本节最后一段:“另一种常用方法是成对分类,其中为每对类创建一个新分类器(总共给出 C(C-1)/2 个分类器),将各个分类器组合起来产生一个最终分类。

有人可以告诉我在这种情况下需要做什么来分类吗?谢谢你。

1个回答

这个问题不仅限于 LDA,还可以通过进行所有成对比较来询问在多类设置中使用的任何二元分类器。问题是如何将所有成对分类组合成一个最终分类。

最简单的方法如下。每个K(K1)2成对分类器产生一个“获胜”类(在考虑的两个中)。计算每个类别的获胜次数(上限K1),并将观察结果分配给获胜次数最多的班级。请注意,即使您的分类器没有返回属于两个类中的每一个的概率,而只是简单地报告成对决策,这种简单的“投票”方法仍然有效。

当每个成对分类器不仅报告成对决策,而且还报告属于两个类别中的每一个的概率时,更复杂的算法变得可能。我无法给出概述或建议,但有一篇 2004 年广受欢迎的论文(根据 Google Scholar 的引用超过 1k)准确地回顾了这个问题并提供了一些新颖的方法:

然而,我猜想,在许多实际情况下,简单的投票方法已经给出了合理的结果。

更新:在同一篇论文的NIPS 版本中,作者报告了几种方法的性能,包括“投票”一种,在几个类别数从 6 到 26 的真实数据集上,见表 1。投票方法似乎非常在每种情况下都具有竞争力。在某些数据集上,它甚至似乎优于所有其他更复杂的方法。