如何在MATLAB SVM模型中设置误算成本?

时间:2016-02-20 13:10:34

标签: matlab svm

MATLAB R2015b fitcsvm中有一个选项可以设置Support vector machine(SVM)模型中的误算成本。这是文档:

  

'成本' - 误分类成本平方矩阵|结构数组   错误分类成本,指定为逗号分隔对   由“成本”和方阵或结构组成。如果您指定:

     

方形矩阵Cost,则Cost(i,j)是分类a的成本   如果真正的类是i(即行对应,则指向类j)   到真正的类,列对应于预测的类)。   指定相应行和列的类顺序   Cost,另外指定ClassNames名称 - 值对参数。   结构S,那么它必须有两个字段:S.ClassNames,其中   包含类名作为与Y相同的数据类型的变量   S.ClassificationCosts,包含带行和的成本矩阵   按照S.ClassNames排序的列对于两级学习,如果你   指定成本矩阵,然后软件更新先前的   通过纳入成本中描述的处罚的可能性   矩阵。随后,成本矩阵重置为默认值。更多   关于关系和算法行为的细节   BoxConstraint,Cost,Prior,Standardize和Weights,请参阅算法。

     

默认值为:

     

对于一流学习,费用= 0。   对于两班学习,如果i = = j,则Cost(i,j)= 1,如果i = j,则Cost(i,j)= 0。示例:'成本',[0,1; 2,0]

     

数据类型:double |单身|结构

  • 此选项对SVM有何影响?这类似于将敏感性和特异性相结合,并且与另一种相比更重要吗?

  • 示例([0,1;2,0])中1和2的明确含义是什么?

1 个答案:

答案 0 :(得分:1)

  

此选项对SVM有何影响?这类似于将敏感性和特异性与体重相结合,更多的是与另一种相比吗?

是的,这些只是用于更多地关注特定课程的权重。在SVM中,这是通过惩罚指定类的错误分类来获得的,或者等价地 - 在双重优化过程中改变相应的拉格朗日乘数的限制。

  

示例中的1和2的明确含义是什么([0,1; 2,0])?

此矩阵的形式为

0 1
2 0

因此意味着:

  • 如果point有1级,我们为它分配1级,惩罚为0(正确分类)
  • 如果点数为1级且我们将其分配为2级,则惩罚 1
  • 如果点数为2级且我们将其分配为1级,则惩罚 2
  • 如果point有2级,我们将它分配给class 2,惩罚为0(正确的分类)

因此,对于第2类的正确分类而言,我们对 关注两倍在SVM中,这意味着成本具有形式

1/2 ||w||^2 + C SUM_{i=1}^N xi_i cost_i
如果第i个样本的类是1,则

和cost_i = 1,否则,cost_i = 2。如您所见 - 只需在SVM成本中为缺失分类术语添加权重。