【问题标题】:how to test svm classifier?如何测试 svm 分类器?
【发布时间】:2016-11-28 18:28:45
【问题描述】:

我正在使用 svm 进行人类动作识别。我使用“kth”数据库,它有 25 个人在 4 个不同的场景中做 6 种不同的动作(走路、慢跑、跑步、拳击、拍手和挥手)。所以我有 600 个数据样本(运动历史图像)(每个动作 100 个样本)。

我为 6 个动作训练了 6 个不同的 one-vs-all svm,例如:

--用于训练我使用的跑步类:

--80 个来自运行样本的样本;

--500 个其他类的样本;

所以我从运行中保存了 20 个样本来测试分类。 但是我的结果是如此之好,以至于我确信我在测试中犯了一个错误(90% 的成功,而其他论文的最佳镜头为 63.5%)。

我应该如何测试 svm 分类器?

附加信息:

每个视频: 30秒,20帧,每帧大小160*120

算法:

1) 从所有视频(25 个人,4 个场景,6 个动作,每个视频 30 秒)中提取 MHI 特征,因此收集了 360000 个样本。

2) 选择 600 个样本(每个视频 1 个)

3) 重塑所有样本(1*19200)

培训: 每堂课做 4 到 6 次

4) 80 个样本作为 +1 类

5) 500 个样本作为 -1 类

6) 使用 libsvm 计算每个类的“w”和“bias”

测试: 现在我们每 6 个类有 1 个“w”和“bias”。

7) 使用未经训练的 MHI 特征作为输入

8) 计算每个类的“W * input + bias”

9) 获胜者类是符号(W * input + bias) >0

的类

【问题讨论】:

  • 也许,与其训练多个一对多分类器,不如尝试使用单个多类 SVM 模型同时对所有六个动作进行训练和测试。
  • 谢谢。多类支持向量机?我认为 svm 是一个二元分类器,我应该使用一对一或一对一的 svm 使其成为一个多类分类器。你能给我更多的线索吗?
  • libsvm (csie.ntu.edu.tw/~cjlin/libsvm) 能够为您处理多类 SVM 训练和分类。另外,我认为您仍然对术语特征和数据样本感到困惑。正如 Parag 所指出的,阅读一本书或参加机器学习课程以更好地理解这些概念。
  • 非常感谢。这个问题来自我的英语而不是我的知识:我会纠正那个
  • 我想我的问题已经解决了。我会收集更多样本然后重新运行我的程序。20 个样本不足以进行测试,特别是当我手动选择最佳特征时。

标签: matlab classification libsvm


【解决方案1】:

我看到了很多问题。我还建议您参加机器学习课程,或阅读一本书以更好地理解概念。

  1. 为什么要用600个特征,如果有不同的场景,就不能针对不同的场景包含不同的特征。你的特征向量应该能够应对所有场景的变化。

  2. 在对动作进行分类时,您是否连接了不同人的特征。如果是这样,那也是一种错误。想象一下,我给你一个样本,它有一个动作,一个场景由一个人完成。在测试时你会如何分类?

  3. 你说你在对“跑步”动作进行分类时使用了跑步类的 80 个特征。那么,在对拳击进行分类时,您会使用 80 个特征进行拳击,而其余 500 个特征?如果是这样,这也是错误的。当您对样本进行分类时,您不知道它的类别。在进行特征提取时,您应该以相同的方式对待所有类。

  4. 您说,“所以我从运行中保存了 20 个特征来测试分类”。如果您通过这样做获得了良好的性能,那么这是错误的和奇怪的。如果您已经用 80 个特征(或 580 个)训练了分类器,那么您应该使用相同数量的特征进行测试。我不确定 SVM 如何不产生错误。权重向量将是 580-D,而您测试的特征向量是 20-D,显然w^T*x 应该会给出维度不匹配错误。

你应该怎么做?

  1. 派生一个解释所有场景变化的特征。例如,如果你想检测人类,你不想把“颜色”作为一个特征,因为每个人的衣服颜色都不一样。所以这是一个不好的功能。您也无法连接所有操作的特征。我的意思是:你不能为跑步、装箱等设计不同的特征提取方法。你怎么知道测试样本的类别?您不会,因此您不能应用特定于操作的特征提取方法。例如,您无法检测提取描述腿部运动的特征来对跑步进行分类,也无法提取描述手部运动的特征来进行拳击。错了。

  2. 在 SVM 分类器的情况下,训练和测试时的特征数量应该相同。

  3. 您不能训练 6 个不同的分类器(在不同的训练集上)然后在测试期间只使用其中一个。例如,您不能训练一个分类器进行跑步与拳击比赛,然后用它来对跑步进行分类。关于如何进行多类分类有特定的协议。其中两个是“一对多”和“一对一”。阅读它们。如果你不想实现它们,你可以使用 libsvm 包。

经验法则: 每当您开发一种特征提取方法时,请考虑一下,如果只给您一个样本,您是否可以应用此方法。请记住,您不能使用训练集。假设它在您的计算机上不存在。

【讨论】:

  • 感谢您的回答。 1)我使用了 1 个功能(运动历史图像)。我有 600 个提取的 MHI 特征。 2)是的,我做到了。前 80 个特征被标记为 1 类,其余(500 个特征)被标记为 -1(一个对全部)3)是的,我对其他类也做了同样的事情,因为它是有监督的分类。在这种情况下,我知道培训的输入。我只是在每个类中留下了 20 个未经训练的特征,以便我可以将它们用作测试输入。 4)每个特征维度是1*19200,580是训练数据的数量。
  • 我刚刚添加了我的算法,这可以帮助您更好地理解我的问题
猜你喜欢
  • 2017-07-10
  • 2014-02-06
  • 2023-03-21
  • 2020-01-19
  • 2012-04-02
  • 2019-01-03
  • 2013-08-14
  • 2014-05-07
相关资源
最近更新 更多