Machine learning 一对多分类器

Machine learning 一对多分类器,machine-learning,classification,svm,Machine Learning,Classification,Svm,我正在实现一个one-vs-rest分类器来区分(1)向上移动计算机光标和(2)向其他七个基本方向移动或不移动的神经数据。我正在使用一个带有RBF核的SVM分类器(由LIBSVM创建),我做了一个网格搜索,为我的分类器找到最好的gamma和成本参数。我尝试使用两个类中每个类的338个元素的训练数据(欠采样我的大型“rest”类),并使用加权SVM使用第一个类中的338个元素和第二个类中的7218个元素 我还使用了功能选择,将我正在使用的功能数量从130个减少到10个。在训练分类器时,我尝试使用十

我正在实现一个one-vs-rest分类器来区分(1)向上移动计算机光标和(2)向其他七个基本方向移动或不移动的神经数据。我正在使用一个带有RBF核的SVM分类器(由LIBSVM创建),我做了一个网格搜索,为我的分类器找到最好的gamma和成本参数。我尝试使用两个类中每个类的338个元素的训练数据(欠采样我的大型“rest”类),并使用加权SVM使用第一个类中的338个元素和第二个类中的7218个元素

我还使用了功能选择,将我正在使用的功能数量从130个减少到10个。在训练分类器时,我尝试使用十个“最佳”特性和十个“最差”特性。我还使用了整个功能集

不幸的是,我的结果不是很好,而且,我找不到一个解释。我测试了37759个数据点,其中1687个来自“一”(即“向上”)类,其余36072个来自“其余”类。在所有情况下,我的分类器都有95%的准确度,但正确预测的值都属于“rest”类(即,我的所有数据点都预测为“rest”,所有错误预测的值都属于“one”/“up”类)。当我尝试测试每个类的338个数据点(与我用于训练的数据点相同)时,我发现支持向量的数量是666,比数据点的数量少10个。在本例中,准确率仅为71%,这是不寻常的,因为我的训练和测试数据完全相同

你知道会出什么问题吗?如果你有任何建议,请告诉我


谢谢

不确定这是否是一个答案-如果没有实际查看数据,可能很难给出答案-但以下是关于您描述的问题的一些想法:

  • 一般来说,SVM试图找到一个超平面来最好地分离类。但是,由于您选择了1vs1分类,因此您别无选择,只能将所有负面案例混合在一起(您的“rest”类)。这可能会使“最佳”分离更不适合解决您的问题。我猜这可能是这里的一个主要问题。 为了验证是否是这样,我建议尝试只使用另一个基数方向作为负数集,看看这是否会改善结果。如果有,您可以训练7个分类器,每个方向一个。另一种选择可能是使用libSVM的multiclass选项,或者类似的工具,它能够将一个分类为多个
  • 大多数支持向量机实现的一个警告是,它们无法支持正负集之间的巨大差异,即使使用加权。根据我的经验,在许多情况下,超过4-5的权重系数是有问题的。另一方面,由于消极方面的多样性很大,采用相同尺寸也可能不是最佳选择。因此,我建议使用338个正面例子,以及大约1000-1200个随机负面例子,并加上权重
  • 稍微偏离你的问题,我也会考虑其他类型的分类。首先,我建议考虑一下

  • 希望有帮助:)

    测试数据集与训练数据相同意味着您的训练准确率为71%。这并没有什么错,因为您使用的内核可能无法很好地分离数据。
    然而,一个值得关注的问题是,支持向量的数量高表明可能存在过度拟合。

    我有点困惑,因为大量支持向量通常是过度拟合的同义词,但另一方面,如果您的训练和测试数据集相同,过度拟合应该提供100%的准确性。。。你能手动将C固定到一个值,这个值会导致过度拟合(我不记得是C=0还是C=无穷大),然后告诉我们结果吗?另一件让我困惑的事情是,如果您使用LibSVM,您如何实现一对一分类器?因为作者似乎选择了1v1方法()