【问题标题】:How set miscalculation cost in MATLAB SVM model?如何在 MATLAB SVM 模型中设置误算成本?
【发布时间】:2016-06-02 02:43:15
【问题描述】:

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

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

方阵Cost,那么Cost(i,j)就是对一个分类的成本 如果真正的类是 i,则指向类 j(即,行对应 到真实类,列对应于预测类)。 为对应的行和列指定类顺序 成本,另外指定 ClassNames 名称-值对组参数。 结构体S,那么它必须有两个字段:S.ClassNames,其中 包含类名作为与 Y 相同数据类型的变量 S.ClassificationCosts,包含行和成本矩阵 列按 S.ClassNames 中的顺序排列 对于两班学习,如果您 指定一个成本矩阵,然后软件更新先验 通过结合成本中描述的惩罚的概率 矩阵。随后,成本矩阵重置为默认值。更多 关系和算法行为的详细信息 BoxConstraint、成本、先验、标准化和权重,请参阅算法。

默认为:

对于一类学习,成本 = 0。 对于二类学习,如果 i ~= j,则 Cost(i,j) = 1,如果 i = j,则 Cost(i,j) = 0。示例:'成本',[0,1;2,0]

数据类型:双精度 |单身 |结构体

  • 此选项在 SVM 中有何影响?这是否类似于将敏感性、特异性和权重结合在一起的那些比较?

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

【问题讨论】:

    标签: matlab svm


    【解决方案1】:

    这个选项在 SVM 中有什么影响?这是否类似于将敏感性和特异性以及权重相结合的那些比较?

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

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

    这个矩阵的形式

    0 1
    2 0
    

    这意味着:

    • 如果点属于第 1 类,我们将其指定为第 1 类,惩罚为 0(正确分类)
    • 如果点属于第 1 类,我们将其指定为第 2 类,惩罚为 1
    • 如果点属于第 2 类,我们将其指定为第 1 类,则惩罚为 2
    • 如果点属于第 2 类,我们将其指定为第 2 类,惩罚为 0(正确分类)

    因此,我们对第 2 类的正确分类的关注程度是对第 1 类的正确分类的两倍。在 SVM 中,这意味着成本是形式

    1/2 ||w||^2 + C SUM_{i=1}^N xi_i cost_i
    

    如果第 i 个样本的类别为 1,则 cost_i = 1,否则 cost_i =2。如您所见 - 我们只需在 SVM 成本中为错误分类项添加权重。

    【讨论】:

    • 请问先生,fitcsvm中的cost和box-constraint有什么区别?
    猜你喜欢
    • 2018-06-19
    • 2022-12-09
    • 2013-06-27
    • 2014-05-31
    • 2013-03-09
    • 2016-08-07
    • 2015-01-08
    • 2019-11-20
    • 2013-09-07
    相关资源
    最近更新 更多