这个示例展示了如何使用classification Learner创建和比较各种分类树,并将训练好的模型导出到工作空间,以对新数据进行预测。
您可以训练分类树来预测对数据的响应。要预测响应,请根据树中的决策从根(开始)节点一直到叶节点。叶节点包含响应。
统计和机器学习工具箱™树是二叉的。预测的每一步都包括检查一个预测器(变量)的值。例如,这是一个简单的分类树:
这棵树基于两个预测因子来预测分类,x1
而且x2
.要进行预测,从顶部节点开始。在每个决策中,检查预测器的值以决定遵循哪个分支。当分支到达叶节点时,数据被分类为类型0
或1
.
在MATLAB®,加载fisheriris
数据集,并使用数据集中的变量创建用于分类的度量预测器(或特征)表。
渔场=可读表(“fisheriris.csv”);
在应用程序选项卡,在机器学习和深度学习组中,单击分类学习者.
在分类学习者选项卡,在文件部分中,点击从工作区中创建会话>.
在“从工作区新建会话”对话框中,选择表fishertable
从数据集变量列出(如有必要)。
观察应用程序已经根据它们的数据类型选择了响应变量和预测变量。花瓣和萼片的长度和宽度是预测因子,而物种是你想要分类的响应。对于本例,不要更改选择。
若要接受默认验证方案并继续,请单击开始会议.默认的验证选项是交叉验证,以防止过拟合。
分类学习器创建数据的散点图。
使用散点图来研究哪些变量对预测响应有用。上选择不同的选项X而且Y列表下预测使物种分布和测量可视化。观察哪些变量将物种的颜色区分得最清楚。
观察到setosa
物种(蓝色点)很容易从其他两个物种中分离出来。的多色的
而且virginica
在所有的预测测量中,物种之间的距离要近得多,尤其是当你绘制萼片的长度和宽度时。setosa
比其他两个物种更容易预测。
要创建分类树模型,请在分类学习者选项卡,在模型类型部分,单击向下箭头展开图库,然后单击粗树.然后单击火车.
该应用程序创建一个简单的分类树,并绘制结果。
观察粗树模型中的模型窗格。中检查模型验证分数准确性(验证)盒子。该模式表现良好。
请注意
对于验证,结果中有一些随机性,因此您的模型验证评分结果可能与显示的结果不同。
单击散点图Plot选项卡用于检查散点图。X表示错误分类的点。蓝色的点(setosa
物种)的分类都是正确的,但其他两个物种的一些分类是错误的。下情节,在数据而且模型的预测选项。观察错误(X)点的颜色。或者,在绘制模型预测图时,若要只查看不正确的点,请清除正确的复选框。
训练不同的模型进行比较。点击中树,然后按火车.
当你点击火车时,应用程序将显示一个新模型模型窗格。
观察中树模型中的模型窗格。模型验证得分并不比粗树得分好。该应用程序在方框中概述准确性(验证)最佳模型得分。中的每个模型单击模型窗格以查看和比较结果。
的散点图中树模型。在分类学习者选项卡,在情节部分,单击箭头打开图库,然后单击散射在验证结果组。中间树和前面的粗树一样可以正确地分类许多点。您希望避免过拟合,而粗树表现良好,因此所有进一步的模型都基于粗树。
选择粗树在模型窗格。为了改进模型,可以尝试在模型中包含不同的特性。看看是否可以通过去除低预测能力的特征来改进模型。
在分类学习者选项卡,在特性部分中,点击特征选择.
在“功能选择”对话框中,清除为的复选框PetalLength而且PetalWidth将它们从预测因子中排除。点击好吧.一个新的模型草案出现在模型窗格与你的新设置2/4功能,基于粗树。
点击火车使用新的预测器选项训练一个新的树模型。
观察第三个模型模型窗格。它也是粗树模型,仅使用4个预测因子中的2个进行训练。该应用程序显示有多少预测器被排除。属性中的模型,以查看包含哪些预测因子模型窗格,并观察“功能选择”对话框中的复选框。只有萼片测量的模型比只有花瓣的模型精度低得多。
训练另一个模型,只包括花瓣的测量。更改“功能选择”对话框中的选择,然后单击好吧.然后单击火车.
仅使用花瓣测量训练的模型与包含所有预测因子的模型表现相当。与仅使用花瓣测量相比,使用所有测量结果的模型预测结果并不更好。如果数据收集是昂贵的或困难的,您可能更喜欢一个没有一些预测器就能令人满意地执行的模型。
重复训练两个以上的模型,包括宽度测量和长度测量。几个模型的得分差别不大。
通过检查每个班级的表现,在得分相近的模型中选择一个最佳模型。选择包含所有预测符的粗树。为了检查每个班级预测的准确性,在分类学习者选项卡,在情节部分,单击箭头打开图库,然后单击混淆矩阵(验证)在验证结果组。使用此图可以了解当前选择的分类器在每个类中的执行情况。查看真实班级和预测班级结果的矩阵。
通过检查对角线上显示高数字和红色的单元格,寻找分类器表现不佳的区域。在这些红色的单元格中,真实的类别和预测的类别不匹配。数据点被错误分类了。
请注意
通过验证,结果中有一些随机性,因此您的混淆矩阵结果可能与显示的结果不同。
在该图中,检查中间行的第三个单元格。在这个单元格中,真正的类是多色的
,但模型错误地将这些点分类为virginica
.对于这个模型,单元格显示3个错误分类(您的结果可能不同)。要查看百分比而不是观测值的数量,请选择真阳性率选择下情节控制。
您可以使用这些信息来帮助您选择最适合您的目标的模型。如果这个类别中的假阳性对你的分类问题非常重要,那么选择最好的模型来预测这个类别。如果假阳性在这个类别中不是很重要,并且预测因子较少的模型在其他类别中表现更好,那么选择一个模型来权衡一些整体准确性,以排除一些预测因子,并使未来的数据收集更容易。
比较中每个模型的混淆矩阵模型窗格。检查“特征选择”对话框以查看每个模型中包含哪些预测器。
要研究要包含或排除的特征,请使用散点图和平行坐标图。在分类学习者选项卡,在情节部分,单击箭头打开图库,然后单击平行坐标在验证结果组。您可以看到,花瓣长度和花瓣宽度是区分类的最佳特征。
要了解模型设置,请在模型窗格并查看高级设置。中的不可优化模型选项模型类型图库是预设的起点,您可以更改进一步的设置。在分类学习者选项卡,在模型类型部分中,点击先进的.中的简单树模型和中等树模型进行比较模型窗格中,并在“高级树选项”对话框中观察差异。的最大分割次数设置控制树的深度。
为了进一步改进粗树模型,对最大分割次数设置后单击好吧.然后,通过点击训练一个新的模型火车.
中查看所选训练模型的设置当前模型总结窗格中,或在“高级树选项”对话框中。
要将经过最佳训练的模型导出到工作区,请在分类学习者选项卡,在出口部分中,点击出口模式并选择出口模式.在“导出模型”对话框中,单击好吧接受默认变量名trainedModel
.
在命令窗口中查看有关结果的信息。
为了可视化你的决策树模型,输入:
视图(trainedModel。分类Tree,“模式”,“图”)
您可以使用导出的分类器对新数据进行预测。例如,预测fishertable
数据在您的工作空间,输入:
yfit = trainedModel.predictFcn(渔场表)
yfit
包含每个数据点的类预测。如果您想用新数据自动训练相同的分类器,或学习如何以编程方式训练分类器,您可以从应用程序生成代码。要为训练过的最佳模型生成代码,请在分类学习者选项卡,在出口部分中,点击生成函数.
该应用程序从你的模型生成代码,并在MATLAB编辑器中显示文件。要了解更多信息,请参见生成MATLAB代码,用新数据训练模型.
这个例子使用了Fisher 1936年的虹膜数据。虹膜数据包含花的测量:来自三个物种的样本的花瓣长度、花瓣宽度、萼片长度和萼片宽度。训练一个分类器来预测基于预测器测量的物种。
使用相同的工作流来评估和比较您可以在“分类学习器”中训练的其他分类器类型。
要尝试所有可用于您的数据集的不可优化分类器模型预设:
界面最右侧的箭头模型类型节展开分类器列表。
点击所有,然后按火车.
要了解其他分类器类型,请参见在分类学习App中训练分类模型.