这个例子展示了如何在Classification Learner应用程序中创建和比较使用指定错误分类代价的分类器。在训练之前指定错误分类代价,并使用准确率和总错误分类代价结果来比较训练后的模型。
在MATLAB中®命令窗口,读取示例文件CreditRating_Historical.dat
变成一个表。预测数据包括公司客户列表的财务比率和行业部门信息。响应变量由评级机构指定的信用评级组成。结合所有一个
评级变成一个评级。对B
而且C
评级,这样响应变量就有三个不同的评级。在三个评级中,一个
被认为是最好的和C
最坏的打算。
信用评级=可读(“CreditRating_Historical.dat”);评级=分类(creditrating.Rating);评级= mergecats(评级,{“AAA”,“AA”,“一个”},“一个”);评级= mergecats(评级,{“BBB”,“BB”,“B”},“B”);评级= mergecats(评级,{“CCC”,“CC”,“C”},“C”);creditrating。评级= Rating;
假设这些是与错误分类客户信用评级相关的成本。
客户预测评分 | ||||
一个 |
B |
C |
||
客户真实评分 | 一个 |
0美元 | 100美元 | 200美元 |
B |
500美元 | 0美元 | 100美元 | |
C |
1000美元 | 500美元 | 0美元 |
例如,错误分类a的代价C
将客户评定为一个
评级客户是1000美元。成本表明,将信用不良的客户分类为信用良好的客户比将信用良好的客户分类为信用不良的客户成本更高。
创建一个包含错误分类代价的矩阵变量。创建另一个变量,指定类名及其在矩阵变量中的顺序。
ClassificationCosts = [0 100 200;500 0 100;1000 500 0];ClassNames = category ({“一个”,“B”,“C”});
提示
或者,您可以直接在分类学习者应用程序中指定错误分类代价明确错误分类成本获取更多信息。
开放分类学习者。单击应用程序选项卡,然后单击右侧的箭头应用程序部分打开应用程序库。在机器学习和深度学习组中,单击分类学习者.
在分类学习者选项卡,在文件部分中,选择从工作区中创建会话>.
在“从工作区新建会话”对话框中,选择表creditrating
从数据集变量列表。
如对话框所示,应用程序根据数据类型选择响应变量和预测变量。默认的响应变量是评级
变量。默认的验证选项是交叉验证,以防止过拟合。对于本例,不要更改默认设置。
如需接受默认设置,请单击开始会议.
指定错误分类的代价。在分类学习者选项卡,在选项部分中,点击误分类代价.应用程序打开一个对话框,显示默认的错误分类代价。
在对话框中,单击从工作区导入.
在导入对话框中,选择ClassificationCosts
作为成本变量和一会
由于类的顺序在成本变量中。点击进口.
应用程序更新错误分类成本对话框中的值。点击好吧以保存更改。
同时训练细、中、粗树。在分类学习者选项卡,在模型类型部分,单击箭头打开图库。在决策树组中,单击所有的树.在培训部分中,点击火车.该应用程序训练每种树模型类型中的一种,并在模型窗格。
提示
如果您有并行计算工具箱™,您可以训练所有的模型(所有的树),同时选择使用并行按钮。培训部分,然后单击。火车.点击之后火车,打开并行池对话框,并在应用程序打开并行工作池时保持打开状态。在此期间,您无法与该软件进行交互。泳池开放后,应用程序会同时训练模型。
请注意
验证在结果中引入了一些随机性。您的模型验证结果可能与本示例中显示的结果不同。
在模型窗格中,单击模型以查看结果,结果将显示在当前模型总结窗格。每个模型都有一个验证精度分数,表示正确预测响应的百分比。在模型窗格中,应用程序高亮显示最高准确性(验证)在一个盒子里勾勒出它的轮廓。
检查每节课预测的准确性。在分类学习者选项卡,在情节部分中,点击混淆矩阵并选择验证数据.该应用程序显示所选模型的真实类和预测类结果的矩阵(在本例中,为介质树)。
您还可以绘制每个预测类的结果,以调查错误发现率。下情节,选择阳性预测值(PPV)错误发现率(FDR)选择。
在介质树的混淆矩阵中,对角线以下的条目具有较小的百分比值。这些值表明模型试图避免为客户分配高于真实评级的信用评级。
比较树模型的总错误分类代价。中选择模型,查看模型的总错误分类代价模型窗格,然后查看培训结果部份当前模型总结窗格。例如,中间树有这些结果。
一般情况下,应选择精度高、误分类总代价低的模型。在本例中,三种模型中,介质树的验证精度值最高,总误分类代价最低。
您可以像在工作流中那样执行特征选择和转换或调优您的模型,而不会产生错误分类的代价。然而,在评估模型的性能时,总是要检查模型的总错误分类代价。有关使用错误分类代价时导出模型和导出代码之间的差异,请参见导出模型和生成代码的错误分类代价.