为了将数据分类为N个类,是否有使用N yes-no分类器的替代方法?

时间:2011-10-14 01:18:31

标签: language-agnostic machine-learning

TL; DR:有没有比yes-no分类器更复杂的分类器?

我会事先说我没有正在进行的具体项目,这更像是一个我一直在想的技术问题。

由于某种原因,我参与了一些机器学习应用程序。所有这些项目都旨在将数据分类为N个类中的一个,并且它们都使用N是 - 否分类器(如果这是他们所谓的)。这些分类器中的每一个都给出一些数据(0到1或-1到1),这对应于分类器被训练的类的可能性。然后由程序决定使用这些分数以某种方式确定最佳分类。

我已经在名义和连续数据上看到了这一点,并且最终分类的实现方式不同。例如,我曾经写过一个小文档语言标识符,其中分类器是用英语,法语,德语等进行训练的,并且无论哪个分类器都获得了最高分。这对我来说很有意义。

另一个项目以连续的比例对数据进行分类,大多数从0到1.2,但有些数据最多为6个。我们制作了6个左右的分类器,并将它们分配到箱子:0-0.2,0.2-0.4,...... 1.0及以上。一旦所有分类器返回某些数据,我们就会对分数进行二次拟合,然后将峰值作为结果。这让我感到不舒服,但我不知道为什么。

似乎应该有一种更好的方法,而不仅仅是轮询一组是 - 否分类器并尝试根据某种算法来决定。举一个愚蠢的例子,考虑一个系统来决定图片是显示洋葱还是蘑菇。 (这实际上是我想到的第一件事。)我认为对象看起来像洋葱越多,越少看起来像蘑菇,从本体论的角度来看,我想要一种分类方法这反映了这一点。如果我有两个是 - 没有分类器没有考虑到洋葱反对蘑菇,我该如何处理从两者中获得高分的图片?是否有某种方法可以获得单一的蘑菇或洋葱分类器,以某种方式知道这两类植被之间没有重叠?或者我可以指望用真实数据训练yes-no分类器以反映这一点而无需任何特殊干预吗?

4 个答案:

答案 0 :(得分:6)

有两大类分类:

1)判别 - 在这里,我们尝试从训练示例中学习决策边界。然后根据决策边界确定的测试示例所在的空间部分,我们为其分配一个类。最先进的算法是SVM,但是如果你的数据不能被一条线分开,你就需要内核(例如,它可以用圆圈分隔)。

对多类SVM的修改(许多方法,这里是一个):

让第j个(k)训练示例xj在类i(N)中。然后它的标签是yj = i。

a)特征向量:如果xj =属于类i(N)的训练样本,那么对应于xj的特征向量是phi(xj,yj)= [0 0 ... X ... 0]

  • 注意:X位于第i个“位置”。 phi具有总共D * N个分量,其中每个例子具有D个特征,例如,洋葱的图片有D = 640 * 480灰度整数

  • 注意:对于其他类,即p = y,p,phi(xj,y)在位置p的特征向量中有“X”,其他所有为零。

b)约束:最小化W ^ 2(如在Vanilla SVM中),以便:

1)对于除y1之外的所有标签y:W.phi(x1,y1)> = W.phi(x1,y)+ 1

和2)对于除y2之外的所有标签y:W.phi(x2,y2)> = W.phi(x2,y)+ 1

...

和k)对于除yk之外的所有标签y:W.phi(xk,yk)> = W.phi(xk,y)+ 1

  • 注意:这里的直觉是W.phi(xj,yj)比其他所有的W.phi(xj,y1),W.phi(xj,y2)等都要多。

2)生成 - 这里我们假设(可能结果是无意义的)每个例子都是由该类的概率分布生成的(就像男性面部的高斯和女性面部的高斯一样)这在实践中运作良好)&我们尝试通过计算与该类对应的训练样本的均值,协方差来学习每个分布的参数 - 均值,协方差。然后,对于测试示例,我们看到哪个分布给出最高概率并相应地进行分类。

两者都不使用N yes-no分类器。

判别方法在分类实践中效果更好,但无法对概率答案进行建模。它还需要大量的训练示例来进行优化步骤(最小化W ^ 2)才能收敛。有一种技术可以将两者结合起来,避免使用内核,称为最大熵识别。

回答你的另一个问题:

  

我如何处理从两者中获得高分的图片?有没有办法获得单一的蘑菇或洋葱分类器,以某种方式知道这两类植被之间没有重叠?

这对输入数据来说更是一个问题,而不是学习算法本身,它只适用于数字矩阵。它可以反映域中的噪音/不确定性(人们也可以将蘑菇与洋葱完美区分开来)。这可以通过更大/更好(训练)的数据集来修复。或者你可能在生成案例中选择了一个糟糕的分布模型。

大多数人会在分类之前在称为特征选择的阶段预处理原始图像。一种特征选择技术可以捕捉蔬菜的轮廓,因为蘑菇和洋葱具有不同的形状,图像的其余部分可能是“噪音”。在自然语言处理等其他领域,您可以删除介词,并保留不同名词的计数。但有时性能可能无法提高,因为学习算法可能无论如何都不会查看所有功能。这实际上取决于你想要捕捉的内容 - 涉及到创造力。特征选择算法也存在。

哥伦比亚大学Tony Jebara's courses是一个很好的机器学习资源

答案 1 :(得分:1)

您的示例背后的想法是每个问题提供有关多个分类的信息。如果您可以为这些问题及其结果建立某种条件概率,那么您还可以为每个类建立置信水平。

答案 2 :(得分:1)

这几乎听起来像是在谈论你的问题中的决策树。决策树是最常见的分类器之一;它们能够处理多个类别,离散和连续数据以及缺失值。基本决策树算法称为ID3,并且是一种流行的改进C4.5。使用boosting可以进一步改善决策树结果。

答案 3 :(得分:0)

您还可以简单地使用具有c个输出节点的前馈神经网络分类器,每个类别一个输出节点。

c级神经网络可能需要中间层中比一组2级神经网络分类器更多的隐藏节点。随后,功能选择指示哪些输入功能为您的分类任务提供了主要的描述性能。

对于使用神经分类器的图像处理,请参阅我的网站: http://www.egmont-petersen.nl(点击'科学',以及2002年的评论文章。)