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