我对如何使用留一法( LOO )方法来计算多类,一个v / s休息分类的准确性感到困惑。 我正在研究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 来为我提供使用 LOO 执行多级分类的正确方法的简短示意图 另外我如何在Matlab上使用 libsvm 执行此操作?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~
数据集中的视频数量很少,因此我无法创建单独的TEST集(应该发送给Neptune)。相反,我必须确保充分利用数据集,因为每个视频都提供了一些新的/独特的信息。在这样的场景中,我已经读到人们使用LOO作为准确度的衡量标准(当我们无法提供隔离的TEST集时)。他们称之为 Leave-One-Video-Out-experiment 。
从事动态场景识别的人员已使用此方法测试准确性。为了比较我的方法与其方法的准确性,我需要使用相同的评估过程。但他们刚才提到他们正在使用LOVO来提高准确性。除此之外没有提供太多细节。我是这个领域的新手,因此有点混乱。
根据我能想到的,LOVO可以通过两种方式完成:
1)从420个视频中留下一个视频。火车14' one-v / s-rest'使用419个视频作为训练集的分类器(' A' v / s'休息' B' v / s'休息', ........' 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
答案 0 :(得分:3)
使用交叉验证时,最好记住它适用于培训模型,而不是通常用于诚实对待,整个事情的结束措施准确性,而不是用于测试集的分类准确性度量,这些测试集在训练期间根本没有被触及或以任何方式参与。
让我们只关注您计划构建的单个分类器。 " A与休息"分类。您要将所有数据分成训练集和测试集,然后您将测试集放在纸板箱中,将其装订,用胶带覆盖,将其放入钛金库中,并将它连接到美国国家航空航天局的火箭上,将其存放在海王星冰雪覆盖的海洋中。
然后让我们看一下训练集。当我们使用训练集进行训练时,我们希望将一些训练数据留在一边,仅用于校准,但不是作为官方海王星的一部分海洋测试集。
所以我们可以做的就是告诉每个数据点(在你的情况下,看起来数据点是一个视频值对象)要坐一次。我们不关心它是否来自A级。因此,如果有420个视频将用于培训设置仅用于" A与休息"分类器,是的,你将适应420种不同的SVM。
事实上,如果你正在调整SVM的参数,那么这就是你要做的事情。例如,如果您试图在多项式内核中选择惩罚项或系数,那么您将重复整个训练过程(是的,所有420个不同训练的SVM)您要搜索的所有参数组合。对于每个参数集合,您将与420 LOO训练分类器的准确度分数之和相关联。
完成所有操作后,您可以选择具有最佳LOO分数的参数集,并且 A' A vs. rest'分类。冲洗并重复" B与休息"等等。
随着所有这一切的进行,人们非常担心你过度拟合数据。特别是如果许多"负面"样本必须在课堂上重复。
但是,这就是你将测试集发送给海王星的原因。一旦你完成所有基于LOO的参数扫描SVM并且你已经有了最终的分类器,现在你可以在实际的测试集合(来自Neptune)执行该分类器会告诉你整个事情是否在预测看不见的数据方面显示出效果。
这整个练习显然在计算上很昂贵。因此人们有时会使用Leave-P-Out,其中P远大于1.而不是重复该过程,直到所有样本都在剩余组中花费了一些时间,他们只会重复一次&# 34;合理"次数,各种定义合理。
在Leave-P-Out情况下,有一些算法可以让你以一种公平地表示类的方式来抽样哪些点。所以如果" A"样本占数据的40%,您可能希望它们占据剩余集合的40%左右。
这并不适用于LOO,原因有两个:(1)您几乎总是会在每个训练数据点上执行LOO,因此尝试以一种奇特的方式对它们进行采样将是无关紧要的如果它们最终都会被使用一次。 (2)如果您计划使用LOO的次数小于样本量(通常不推荐),那么只需从集合中随机抽取点将自然地反映出类的相对频率,因此如果您计划做LOO K次,然后简单地采用训练集的随机大小K子样本,并对那些做常规LOO就足够了。
答案 1 :(得分:0)
简而言之,您提到的论文使用了第二个标准,即从每个班级留下一个视频,制作14个视频用于测试,其余用于培训。