主要内容

分类树中的分类预测器

分裂多级预测因子的挑战

当您生长分类树时,为具有许多级别的分类预测器找到最优的二叉分割比为连续预测器找到分割在计算上更具挑战性。对于连续预测器,树可以在任意两个相邻的、唯一的预测器值之间进行半分割。与此相反,为了找到一个精确的,最优的二元分割的分类预测器l级别,一个分类树必须考虑2l11分裂。要得到这个公式:

  1. 计算分配的方法数l左侧和右节点的不同值。有2个l方法。

  2. 除以2l2,因为左右可以交换。

  3. 抛弃带有空节点的大小写。

对于回归问题和二进制分类问题,软件通过计算快捷方式使用确切的搜索算法[1].树可以根据平均响应(用于回归)或其中一个类别的类别概率(用于分类)对类别进行排序。那么,最优分割是其中之一l- 1个分割的有序列表。因此,只有当您为数据生成分类树时,才会出现计算方面的挑战K≥3类。

分类预测器分割算法

为了减少计算,该软件提供了几个启发式算法来寻找一个好的分割。属性可以选择用于分割分类预测器的算法'algorithCherCategorical'名称 - 值对参数使用时使用分类树fitctree或使用时创建分类学习者templateTree对于分类合奏(fitcensemble)或多级ECOC模型(fitcecoc.)。

如果未指定算法,则软件使用已知数量的类别和分类预测器的级别选择每个拆分的最佳算法。如果预测器最多maxnum类别等级,软件使用精确的搜索算法划分分类预测器。否则,软件根据类和层的数量选择启发式搜索算法。默认的maxnum类别水平是10。根据您的平台,该软件不能对超过32或64个级别的分类预测器执行精确搜索。

可用的启发式算法是:按纯度,基于主成分的分区左侧的左侧拉,逐个逐个。

通过纯洁留下

通过纯度算法留下的拉动始于所有l在右边的分支上。然后,算法采取以下行动:

  1. 检查K对每个类具有最大类概率的类别。

  2. 将类别移动到左分支的拆分标准的最大值。

  3. 继续从右向左移动类别,每次移动时记录拆分条件,直到右子类别只剩下一个类别为止。

在这个序列中,选中的分割是使分割条件最大化的分割。

通过指定选择此算法“AlgorithmForCategorical”、“PullLeft”fitctree要么templateTree

主要基于组件的分区

基于主成分的分区算法[2]找到一个接近最优的二进制分区l通过搜索分离超平面来预测量级。超平面垂直于中心类概率矩阵的加权协方差矩阵的第一主成分。

该算法将分数分配给每个分数l类别,作为COMPED主成分与该类别的类概率之间的内部产品。然后,所选拆分是其中一个l- 1次拆分,使拆分条件最大化。

通过指定选择此算法'algorithCherCategorical','PCA'fitctree要么templateTree

一流的逐课

按类计算一对所有的算法从所有开始l在右边的分支上。对于每一个K类,算法根据其对该类的概率命令类别。

对于第一类,算法按顺序将每个类别移动到左分支,在每个移动时记录分割标准。然后算法对剩余类重复此过程。在这个序列中,选中的分割是使分割条件最大化的分割。

通过指定选择此算法'algorithcorcategorical','ovabyclass'fitctree要么templateTree

用多级分类预测器检查数据

这个例子展示了如何检查一个包含多个级别(类别)的分类预测器的数据集,以及如何训练一个用于分类的二叉决策树。

加载示例数据

加载人口普查1994.文件。这个数据集由美国人口普查局的人口统计数据组成,用来预测一个人的年收入是否超过5万美元。指定包含变量名的字符向量单元格数组。

负载人口普查1994.VarNames = adultdata.Properties.VariableNames;

中的一些变量名AdultData.表包含_的性格。取代的实例_与空间。

VarNames = strrep (VarNames,“_”' ');

指定预测器数据TBL.和响应矢量Y

TBL = AdultDATA(:,1:结束-1);Y =分类(AdultData.Salary);

检查分类预测因子

某些分类变量有许多级别(类别)。计算每个分类预测器的级别的数量。

中不为数字的类别预测器的索引TBL.表通过使用varfunisnumeric.这varfun函数的应用isnumeric函数到表的每个变量TBL.

猫= ~ varfun (@isnumeric、台、“OutputFormat”“统一”);

定义匿名功能以计算分类预测器中的类别数量元素个数类别

countnumcats = @(var)numel(类别(分类(var)));

匿名函数countNumCats将预测器转换为类别数组,然后计算预测器的唯一非空类别。

采用varfuncountNumCats中分类预测器的类别数TBL.

numCat = varfun (@ (var) countNumCats (var),资源描述(:,猫),“OutputFormat”“统一”);

绘制每个分类预测器的类别数量。

图Barh(Numcat);H = GCA;h.yticklabel = varnames(猫);ylabel(“预测”)Xlabel('类别'

图包含轴。轴包含类型栏的物体。

火车模型

对于二元分类,该软件使用一个计算捷径,以找到一个最优分裂的类别预测器与许多类别。对于有两个以上类的分类,您可以选择一个精确算法或启发式算法,通过使用“algorithCherCategorical'名称 - 值对参数fitctree要么templateTree.默认情况下,软件使用已知数量的类别和分类预测器的级别选择每个拆分的最佳算法子集。

使用分类树使用TBL.Y.响应矢量Y有两个类,所以该软件使用精确的分类预测算法分裂。

Mdl = fitctree(资源描述,Y)
mdl = classificationtree predictorn:{1x14 cell} racatectename:'y'pationoricalpricictors:[2 4 6 7 8 9 10 14] classNames:[<= 50k> 50k] ScorEtransform:'无'NumObServations:32561属性,方法

参考文献

布雷曼,J. H. Friedman, R. A. Olshen, C. J. Stone。分类与回归树.Boca Raton,FL:Chapman&Hall,1984年。

[2] Coppersmith,D.,S.J. Hong,以及J.R. M. Hosking。“在决策树中分区标称属性。”数据挖掘和知识发现, 1999年第3卷,197-217页。

另请参阅

|||

相关的话题