多类分类的留一准确度

3
我有点困惑如何在多类别的一个对剩余分类中使用留一法(LOO)方法来计算准确率。我正在处理YUPENN动态场景识别数据集,其中包含14个类别,每个类别有30个视频(共420个视频)。让我们把这14个类别命名为{A,B,C,D,E,F,G,H,I,J,K,L,M,N}。
我正在使用线性SVM进行一个对剩余分类。假设我想要找到类“A”的准确性结果。当我执行“A”对“rest”时,我需要在训练过程中排除一个视频,并在我排除的视频上测试模型。我应该从A类中排除这个视频还是从所有类中排除这个视频?
换句话说,为了找到类“A”的准确性,我应该使用留一法和SVM 30次(每次精确排除类“A”中的一个视频),还是使用留一法和SVM 420次(每次精确排除所有类中的一个视频)。
我有一种感觉自己搞混了。有人可以向我提供一份正确使用留一法进行多类别分类的简短示意图吗?同时,我如何在Matlab上使用libsvm进行此操作?
数据集中的视频数量很少,因此我无法创建单独的测试集(本应发送到Neptune)。相反,我必须确保充分利用数据集,因为每个视频都提供了一些新的/独特的信息。在这种情况下,我已经阅读到人们使用留一法作为准确度的度量(当我们无法承担隔离的测试集时)。他们称之为“留出一个视频实验”。
曾经从事过动态场景识别工作的人们已经使用了这种方法来测试准确性。为了将我的方法与他们的方法进行比较,我需要使用相同的评估过程。但是,除了他们正在使用LOVO以外,没有提供更多详细信息。我是这个领域的新手,所以有点困惑。
根据我所思考的,LOVO可以通过两种方式完成:
1)排除420个视频中的一个视频。使用419个视频作为训练集来训练14个“一个对剩余”分类器。(“A”对“rest”,“B”对“rest”,……“N”对“rest”)。
使用14个分类器评估剩余视频。使用得分最高的类别标记它。因此,一个视频被分类。我们对所有420个视频采用相同的程序进行标记。使用这些420个标签,我们可以找到混淆矩阵,找出假阳性/阴性、精度、召回率等。

2) 我从14个类别中各选一个视频,这意味着我选择了406个视频进行训练和14个用于测试。使用这406个视频,我找出了14个“一对多”分类器。我在测试集中评估每一个14个视频,并根据最大置信度对它们进行标记。在下一轮中,我再次留下14个视频,每个类别一个。但这次的14个视频集与上一轮不重复。我再次训练和评估这14个视频,并找出标签。通过这种方式,我进行30次操作,每次都是一个不重复的14个视频集。最终,所有420个视频都被标记。同样,在这种情况下,我计算混淆矩阵、准确率、精度和召回率等。

除了这两种方法,LOVO可以以许多其他不同的方式进行。在有关动态场景识别的论文中,他们没有提及如何执行LOVO。可以认为他们正在使用第一种方法吗?是否有任何方法可以确定哪种方法更好?两种方法获得的准确性是否存在显著差异?



以下是一些最近的动态场景识别论文供参考,其中他们提到了LOVO。 1)http://www.cse.yorku.ca/vision/publications/FeichtenhoferPinzWildesCVPR2014.pdf 2)http://www.cse.yorku.ca/~wildes/wildesBMVC2013b.pdf 3)http://www.seas.upenn.edu/~derpanis/derpanis_lecce_daniilidis_wildes_CVPR_2012.pdf 4)http://webia.lip6.fr/~thomen/papers/Theriault_CVPR_2013.pdf 5)http://www.umiacs.umd.edu/~nshroff/DynScene.pdf

2个回答

3
当使用交叉验证时,要记住它适用于训练模型,通常不适用于真正的、最终的准确度测量,而是保留给测试集的分类准确度测量,该测试集在训练过程中没有被触及或参与任何方式。
让我们只关注您计划构建的单个分类器。 "A vs. rest"分类器。您将把所有数据分成训练集和测试集,然后将测试集放在纸板盒子中,钉上订书钉,用管道带覆盖,将其放入钛金属保险库中,并将其连接到NASA火箭,该火箭将其放置在海王星的冰覆盖海洋中。
然后让我们看看训练集。当我们使用训练集进行训练时,我们想留出一些训练数据进行校准,但不作为官方的海王星海洋测试集的一部分。
因此,我们可以告诉每个数据点(在您的情况下,似乎数据点是一个视频值对象)暂停一次。我们不关心它是否来自A类。因此,如果有420个视频将用于"A vs. rest"分类器的训练集,那么是的,您将拟合420个不同的SVM。
实际上,如果您正在调整SVM的参数,那么这就是您将要做的。例如,如果您尝试选择惩罚项或多项式内核中的系数之类的内容,则需要为要搜索的所有参数组合重复整个训练过程(是的,所有420个不同的经过LOO训练的SVM) 。对于每个参数集合,您将与其关联从420个LOO训练分类器中得分的总和。
完成所有这些后,选择具有最佳LOO分数的参数集,并且是的,那就是您的'A vs. rest'分类器。对于"B vs. rest"等,重复以上步骤。
在所有这些事情发生时,有一个合理的担忧,即您正在过度拟合数据。特别是如果许多“负”样本必须从类到类重复。
但是,这就是为什么您将测试集发送到海王星的原因。一旦您完成了所有基于LOO的参数扫描的SVM,并且已经放置了最终的分类器,现在您可以在实际的测试集(来自海王星)上执行该分类器,以确定整个系统是否在预测未见数据方面显示出有效性。

这整个过程显然需要大量的计算,所以人们有时会使用Leave-P-Out,其中P要比1大得多。而且,他们不会重复这个过程直到所有样本都在留出组中花费一些时间,而是会重复一个“合理”的次数,对于不同的合理定义。

在Leave-P-Out情况下,有一些算法允许您采样留出点,以公平地表示类别。因此,如果“A”样本占数据的40%,则您可能希望它们占留出集的约40%。

这对LOO并不适用,原因有两个:(1)您几乎总是要对每个训练数据点执行LOO,因此如果所有数据点最终都要被使用一次,则尝试以花哨的方式对其进行采样是无关紧要的。(2)如果您计划对少于样本大小的某些次数使用LOO(通常不推荐),那么仅从集合中随机抽取点自然会反映类别的相对频率,并且如果您计划进行K次LOO,则简单地从训练集中随机选择一个大小为K的子样本,并对其进行常规的LOO即可。


嗨,非常感谢您的回复。由于评论框中的字符数有限,我已在问题本身中添加了回复。 - Aalok_G
在你的更新之后,我建议选择选项1,但我也建议咨询一位统计学家。因为你的样本量太小,无法创建合法的测试集,所以你所描述的情况非常容易出现过拟合。我看到很多发表的论文使用了像你的方法(1)这样的准确度测量,但实际上它并不具有很好的泛化性能,因为事实证明,大多数“野外”视频与仅用于训练的420个有限集合的统计特性不同。而且由于训练充分利用了这420个数据,所以它非常适合它们。 - ely
嗨,谢谢回复。我会采用第一种方法。<br><br>的确,它无法泛化到数据集之外的视频。但也许我们可以考虑,现在动态场景识别的目标是找到足够强大的时空特征描述符来表示场景的视频(具有区分性和相似性捕获能力的描述符)。随着时间的推移,将会有更新和更大的数据集,使用这些数据集所得到的模型会更好地泛化。因此,目前可以专注于很好地适应数据集。 - Aalok_G
听起来像是一个迷人的问题。一个相似性的猜想:拼接雕刻算法对场景的压缩效果如何?想象一下经典的拼接雕刻示例,即一张风景照片中有很多天空。我不知道是否有人将拼接雕刻扩展到“管道雕刻”(通过三维视频的路径,而不是二维图像),但是嘿,这可能就是你! - ely

0
简而言之,你提到的论文使用第二个准则,即对于每个类别留下一个视频用于测试,这样就有14个视频用于测试,其余用于训练。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接