【发布时间】:2014-12-05 01:30:20
【问题描述】:
在多类、one v/s rest 分类的情况下,我对如何使用 leave one out (LOO) 方法计算准确率有点困惑。 我正在研究 YUPENN 动态场景识别数据集,该数据集包含 14 个类别,每个类别有 30 个视频(总共 420 个视频)。让我们将这 14 个类命名为 {A,B,C,D,E,F,G,H,I,J,K,L,M,N}。
我正在使用线性 SVM 进行一个 v/s 休息分类。 假设我想找到“A”类的准确度结果。当我执行“A”v/s“休息”时,我需要在训练时排除一个视频,并在我排除的视频上测试模型。我排除的这个视频,应该来自 A 类还是应该来自所有类。
换句话说,为了找到“A”类的准确度,我是否应该用 LOO 执行 SVM 30 次(将“A”类的每个视频只保留一次) 或者我应该执行 420 次(所有课程的视频只保留一次)。
我有一种感觉,我把这一切搞混了??谁能给我提供一个使用 LOO 执行多类分类的正确方法的简短示意图??
另外,如何在 Matlab 上使用 libsvm 执行此操作?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~
数据集中的视频数量很少,因此我无法创建单独的 TEST 集(应该发送到 Neptune)。相反,我必须确保充分利用数据集,因为每个视频都提供了一些新的/独特的信息。在这样的场景中,我读到人们使用 LOO 作为准确度的衡量标准(当我们买不起孤立的测试集时)。他们称之为Leave-One-Video-Out-experiment。
从事动态场景识别工作的人员已使用此方法来测试准确性。为了比较我的方法与他们的方法的准确性,我需要使用相同的评估过程。但他们刚刚提到他们正在使用 LOVO 来确保准确性。除此之外没有提供太多细节。我是这个领域的新手,因此有点混乱。
根据我能想到的,LOVO可以有两种方式:
1) 在 420 个视频中留下一个视频。使用 419 个视频作为训练集训练 14 个 'one-v/s-rest' 分类器。('A' v/s 'rest', 'B' v/s 'rest', ........' N' v/s '休息')。
使用 14 个分类器评估漏出的视频。用给出最大置信度分数的类标记它。因此,一个视频被分类。我们遵循相同的程序来标记所有 420 个视频。使用这 420 个标签,我们可以找到混淆矩阵,找出误报/负数、精度、召回率等。
2) 我从 14 节课中的每一节课中留下一个视频。这意味着我选择了 406 个视频进行训练和 14 个视频进行测试。使用 406 个视频,我找到了 14 个“one-v/s-rest”分类器。我评估测试集中的 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
【问题讨论】:
标签: machine-learning computer-vision svm libsvm cross-validation