主要内容

分类学习者应用程序中的错误分类成本

默认情况下,分类学习者应用程序创建模型,在训练期间对所有错误分类分配相同的惩罚。对于给定的观察结果,如果观察结果分类正确,应用程序会分配0分的惩罚,如果观察结果分类错误,则分配1分的惩罚。在某些情况下,这种分配是不合适的。例如,假设您希望将患者分为健康患者和患病患者。将一个病人错误地归类为健康的代价可能是将一个健康的人错误地归类为生病的代价的五倍。如果你知道将一个类别的观察数据错误分类到另一个类别的代价,并且不同类别的代价是不同的,那么在训练你的模型之前指定错误分类代价。

请注意

逻辑回归和神经网络模型不支持自定义错误分类成本。万博1manbetx

明确错误分类成本

在分类学习者应用程序中选项部份分类学习者选项卡上,选择误分类代价.应用程序打开一个对话框,显示默认的错误分类成本(成本矩阵),作为一个表,由响应变量中的类确定行和列标签。表的行对应真实的类,列对应预测的类。你可以这样解释成本矩阵:行中的条目和列j错误分类的代价是什么类观察到j类。代价矩阵的对角线项必须为0,非对角线项必须为非负实数。

您可以用两种方式指定自己的错误分类代价:直接在对话框中的表中输入值,或者导入包含代价值的工作区变量。

请注意

代价矩阵的缩放版本给出了相同的分类结果(例如,混淆矩阵和准确度),但总错误分类代价不同。也就是说,如果CostMat错误分类代价矩阵和一个一个正的实标量,那么一个用代价矩阵训练的模型a * CostMat与训练的模型有相同的混淆矩阵吗CostMat

在对话框中直接输入成本

在“错误分类成本”对话框中,双击要编辑的表中的条目。删除该值并为条目输入正确的错误分类代价。编辑完表后,单击好吧以保存更改。

导入包含成本的工作区变量

在“错误分类费用”对话框中,单击从工作区导入.该应用程序打开一个对话框,用于从MATLAB中的变量导入成本®工作区。

成本变量列表中,选择包含错误分类代价的代价矩阵或结构。

  • 成本矩阵——该矩阵必须包含错误分类的成本。对角线项必须为0,非对角线项必须为非负实数。默认情况下,应用程序使用前面错误分类成本对话框中显示的类顺序来解释成本矩阵值。

    要指定成本矩阵中类的顺序,请按正确的顺序创建一个单独的工作区变量,其中包含类名。中的导入对话框中,选择适当的变量类序在成本上是可变的列表。包含类名的工作区变量必须是类别向量、逻辑向量、数字向量、字符串数组或字符向量的单元格数组。类名必须与响应变量中的类名(在拼写和大写方面)匹配。

  • 结构——结构必须包含字段ClassificationCosts而且一会通过这些规范:

    • ClassificationCosts-包含错误分类代价的矩阵。

    • 一会—类名。课程的顺序一会的行和列的顺序ClassificationCosts.的变量一会必须是类别向量、逻辑向量、数字向量、字符串数组或字符向量的单元格数组。类名必须与响应变量中的类名(在拼写和大写方面)匹配。

在指定开销变量和开销变量中的类序后,单击进口.应用程序更新错误分类成本对话框中的表格。

当你指定了一个不同于默认值的成本矩阵后,应用程序会更新当前模型总结用于新模型的窗格。在当前模型总结窗格中,在误分类代价,该应用程序将成本矩阵列为“自定义”。对于使用默认错误分类成本的模型,应用程序将成本矩阵列为“默认”。

评估模型性能

在指定错误分类代价之后,您可以像往常一样训练和调优您的模型。然而,使用自定义错误分类代价可以改变评估模型性能的方式。例如,与其选择准确率最好的模型,不如选择准确率好、总误分类成本低的模型。一个模型的总错误分类代价为总和(CostMat。* ConfusionMat,“所有”),在那里CostMat错误分类代价矩阵和ConfusionMat是模型的混淆矩阵。混淆矩阵显示了模型如何在每个类别中对观测数据进行分类。看到在混淆矩阵中检查每个类的性能

为了检查训练模型的总错误分类代价,在模型窗格。在当前模型总结窗格,看培训结果部分。错误分类的总代价列在模型的精度下面。

导出模型和生成代码的错误分类代价

在你用自定义错误分类代价训练一个模型并从应用程序导出它之后,你可以在导出的模型中找到自定义代价。例如,如果将树模型导出为名为trainedModel,您可以使用以下代码访问成本矩阵和矩阵中类的顺序。

trainedModel.ClassificationTree.Cost trainedModel.ClassificationTree.ClassNames
对于集成和二进制SVM模型,应用程序使用错误分类代价来调整模型的优先类概率。因此,成本属性将重置为默认代价矩阵,但是之前属性已更新。

为使用自定义错误分类代价训练的模型生成MATLAB代码时,生成的代码包括一个代价矩阵,该代价矩阵通过函数传递给训练函数“成本”名称-值对参数。

相关的话题