【问题标题】:Data Classification:sizes of training and test vectors数据分类:训练和测试向量的大小
【发布时间】:2011-01-04 02:41:57
【问题描述】:

我有一个应用程序可以决定一个人是在挥手、跑步还是走路。 这个想法是我已经分割了一个动作,比如手波,到它的姿势。比方说

示例;

for human1:pose7-pose3-pose7-..... represents handwave
for human3:pose1-pose7-pose1-..... represents handwave
for human7:pose1-pose1-pose7-..... represents handwave
for human20:pose3-pose7-pose7-..... represents handwave

for human1 pose11-pose33-pose77-..... represents walking
for human2 pose31-pose33-pose77-..... represents walking
for human3 pose11-pose77-pose77-..... represents walking
for human20 pose11-pose33-pose11-..... represents walking

我使用上述向量在 Matlab 中训练 SVM 和神经网络。

现在我用它测试图像。我再次为测试图像分割了姿势。

对于 MATLAB 中测试集和训练集的向量大小; SVM 和神经网络需要相同的向量大小。 让它发挥作用;
如果我附加 0(假设它像 pose0-这是一个无效的姿势),为了使尺寸相等,我的性能非常好。
如果我在开头复制初始姿势并将它们附加到末尾,直到大小相等,性能就会下降。

例如;

train set: pose1-pose2-pose4-pose7-pose2-pose4-pose7
(1st method)test set: pose3-pose1-pose4-0-0-0-0 or
(2nd method)test set: pose3-pose1-pose4-pose3-pose1-pose4-pose3

我希望使用第二种方法有更好的分类,因为附加值是姿势的实际值。但pose0 不是真正的姿势。

你有什么想法吗? 问候

【问题讨论】:

  • 无论如何,当涉及到这类东西时,我只是一个业余爱好者,但这样填充你的数据向量似乎有点奇怪。我会确保填充在理论上是合理的或改变方法。对于这种时间分类,我首先想到的是使用马尔可夫模型。

标签: matlab machine-learning neural-network svm


【解决方案1】:

我不认为从您的第一种方法中获得更好的性能是不合理的。我假设您的意思是更好的性能,就像更好的分类一样。我认为这样做的原因是挥手序列通常更短。因此,当您填写“无效”姿势时,通过它们是否包含无效姿势比它们包含的实际姿势更容易区分不同的动作。

【讨论】:

  • 您好,“更好的性能意味着更好的分类”我希望在使用特定动作类型的自然姿势填充时会有更好的性能。但是填充无效的姿势会产生更好的性能。对我来说还是很奇怪。
【解决方案2】:

在您的情况下,您的数据由一组实例组成,每个实例具有许多特征(姿势槽,如 PoseSlot1、PoseSlot2、...、PoseSlotN)和类值(挥手、跑步或行走)。

您的问题是所有类别的特征数量并不相同,例如,跑步有 7 个姿势,而步行有 3 个姿势。

处理此类问题的标准方法是用缺失值标记这些空槽,假设您的机器学习算法可以处理缺失值。

f1     f2    f3    f4    f5    f6    f7    class
-------------------------------------------------
pose1,pose2,pose4,pose7,pose2,pose4,pose7,running
pose3,pose1,pose4,    ?,    ?,    ?,    ?,walking

现在,您使用的第一种附加 pose0 的方法是使用 ? 表示缺失值的简化(类似于添加新姿势来表示缺失值,而不是显式的 ? 值)

另一种重复值的方式实际上会产生问题,而不是解决问题。如果你仔细想想,你实际上是在创建相关的特征,而且如你所知,大多数机器学习算法在一组独立的特征上效果最好(通常通过执行特征选择作为预处理步骤来解决)

【讨论】:

  • 谢谢。现在另一个问题。您如何解释某些分类方法(例如 SVM 和 NN)要求训练数据和测试数据应该具有相同的向量大小(至少在 Matlab 中)这一事实?从机器学习的角度来看,这种先决条件的存在是没有意义的。在现实世界的应用程序中,我可以拥有几种不同长度的数据
  • 除非您处理的是时间序列,否则大多数机器学习技术都需要属性值类型的数据。我能想到的每个算法(ANN、kNN、SVM、贝叶斯网络、决策树、规则归纳、回归等)都有表格形式的数据。这是有道理的,因为每个实例都代表一个具有 d 维数的采样变量(如果您从统计的角度考虑)。也许您希望使用马尔可夫链或 HMM 将数据建模为时间序列...
  • 谢谢。我收集了附加 p0 和附加自然姿势的结果。神经网络结果几乎相同,除了 p0 附加减少 ~%2-%3。然而,SVM 的反应完全不同,附加 p0 的成功率更高。例如 action:Walking 在附加重复姿势上的性能为 %77,但在附加 p0 时的性能为 %95。两种方法的行为相反是否有意义?
  • 好吧,SVM 和 ANN 是两种完全不同的技术,你不能指望它们表现相同。同样正如我之前提到的,您所拥有的基本上是预处理数据的不同方法,并且没有适合所有问题的通用公式。因此,您只需做对您的情况感觉更自然的事情。顺便说一句,如果您希望人们继续回答您的问题,您可能希望开始接受答案!
猜你喜欢
  • 2020-10-21
  • 2023-03-12
  • 1970-01-01
  • 2013-06-18
  • 2017-02-20
  • 2017-11-03
  • 2016-04-04
  • 1970-01-01
  • 2020-09-12
相关资源
最近更新 更多