Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 libsvm中不平衡数据的训练_Visual Studio 2010_Opencv_Machine Learning_Libsvm - Fatal编程技术网

Visual studio 2010 libsvm中不平衡数据的训练

Visual studio 2010 libsvm中不平衡数据的训练,visual-studio-2010,opencv,machine-learning,libsvm,Visual Studio 2010,Opencv,Machine Learning,Libsvm,我有25个类,0类包含所有其他24个类的所有负样本,因此该类中的样本数量比其他类中的样本数量大很多(例如,10倍,因为它应该包含其他24个类中的所有负样本) 现在我的问题是,当我想训练这个数据集时,我应该做什么 我是否必须使用libsvm提供的非平衡训练选项-W01-w1 我的意思是,是否必须使用此选项 因为当我在训练数据时没有这个选项时,它可以提供99.8%的分类准确率,当我测试这个准确的模型时!!!对于某些类,我得到100%的准确率,而对于其他类,我得到0.0% 我的意思是,对于某些类,它不

我有25个类,0类包含所有其他24个类的所有负样本,因此该类中的样本数量比其他类中的样本数量大很多(例如,10倍,因为它应该包含其他24个类中的所有负样本)

现在我的问题是,当我想训练这个数据集时,我应该做什么

我是否必须使用libsvm提供的非平衡训练选项-W01-w1

我的意思是,是否必须使用此选项

因为当我在训练数据时没有这个选项时,它可以提供99.8%的分类准确率,当我测试这个准确的模型时!!!对于某些类,我得到100%的准确率,而对于其他类,我得到0.0%

我的意思是,对于某些类,它不会错过任何示例,但对于另一个类,它将始终返回0!!!这意味着这是一个负样本

我想使用这个选项,但我不知道它的规则。我的意思是,如何使用此选项为类设置值

假设每个类中的样本数为:

类别0->3433

类别1->745

类别2->232

类别3->53

。 . . 类别23->975

我应该如何为每个类设置wi我应该在[0,1]或[-1]或(-inf+inf)或什么之间缩放它们

摘要>

1) 。我的数据集必须使用-wi选项吗

2) 。如何设置此值


谢谢

我无法发表评论,所以我将写下它作为回答:

两项建议:

  • 减少class0的权重
  • 或采用两步方法:
    • 结合其他24个类的所有示例,将它们视为一个类, 并构建了一个二值分类器
    • 仅为正面示例构建24向分类器。如果上一步的分类结果为正,则使用该选项

  • 因为每个类都有+ve和-ve数据,所以应该训练24个二进制分类器。 然后,当您放入测试用例时,如果有多个支持向量机具有正向预测,则选择分类器具有最高输出概率的类


    如果您使用LIBSVM设置了一个多类SVM,那么在内部它只训练多个二进制SVM。因此,自己明确设置24个支持向量机并不奇怪。

    这不是强制性的,取决于您的数据。如果你的类很容易分开,就没有必要了。开始时不要举重,看一看重量。如果您的错误介于拥挤类和稀疏类之间,对权重进行一些调整可能会有所帮助。

    因此,如果您检查并说示例3不在类1中,您是否将其放在类0中,即使它是类2的示例?换句话说,是否有任何样本出现在多个类中?当然不是,两个类中的两个样本可能在60%的特征向量值上相似,但不会出现特定类中的样本出现在另一个类中……我明白了,我只是想确定这不是0类样本量巨大的原因。默认情况下,权重为1,您可能需要使用验证集尝试一些不同的值。不幸的是,w参数在每类基础上修改C,这也将影响低维空间中决策边界的正则化/平滑度。您可以暂时将其他类设置为1,然后开始为类0减小w。如果类0没有在训练数据中那么常见,则需要使用-wi选项。否则,你就不能真正达到99.8%的准确率。我强烈反对只设置二进制分类器,自己实现投票。你几乎不可能实现一个更好的投票人。对“0”的概率最高的职业不一定能战胜其他非“0”职业(石头剪刀问题)。把这个留给受过教育的数学家,他们提供了实现背后的理论。虽然我几个月前得到了答案。。。但这是真的。。。这不是强制性的,它完全取决于N维空间中的数据。。。