ClassificationTree类

超:CompactClassificationTree

二进制决策树多类分类

描述

一个ClassificationTree对象表示与分类二元分割决策树。这个类的一个对象可以预测使用新的数据响应预测方法。该对象包含用于训练的数据,所以它也可以计算resubstitution预测。

施工

创建一个ClassificationTree通过使用对象fitctree

属性

BinEdges

宾边缘为数字预测,指定为的单元阵列p数值向量,其中p是预测的数目。每个向量包括用于数字预测的bin边缘。因为该软件不斌分类预测单元阵列的分类预测中的元素是空的。

该软件只装仓如果指定的数值预测'NumBins'培训与学习树模型时的名称 - 值对参数为正整数标量。该BinEdges属性为空,如果'NumBins'值是空的(默认)。

您可以复制离散化的预测数据Xbinned通过使用BinEdges训练的模型的属性MDL

X = mdl.X;%预测数据Xbinned =零(大小(X));边缘= mdl.BinEdges;%查找分级预测的指标。idxNumeric =找到(〜cellfun(@的isEmpty,边缘));如果iscolumn(idxNumeric)idxNumeric = idxNumeric';结束对于j = idxNumeric X = X(:,J);%x转换为数组,如果x是一个表。如果istable(X)X = table2array(X);端%基团X到箱中,通过使用离散化功能。xbinned =离散化(X,[ -  INF;边缘{Ĵ}; INF]);Xbinned(:,J)= xbinned;结束
Xbinned包含二进制位索引,取值范围为1到箱柜的数目,对于数值预测因子。Xbinned值分类预测是0。如果X包含为NaNs,则相应Xbinned为NaN秒。

CategoricalPredictors

分类预测指标,指定为正整数的向量。CategoricalPredictors包含对应于包含分类预测所述预测数据的列的索引值。如果没有预测的是分类的,则此属性是空的([])。

CategoricalSplit

一个ñ-by-2细胞阵列,其中ñ是分类拆分的在数。每一行中CategoricalSplits给出了一个明确的分左,右的值。对于具有分类分割每个分支节点Ĵ根据一个分类预测变量ž,左边的孩子,如果选择žCategoricalSplits(j,1)和右子选择,如果žCategoricalSplits(J,2)。劈叉都以相同的顺序作为树的节点。查找这些分裂通过选择节点“绝对”从上削减底部的CutType属性。

孩子

一个ñ含有子节点的号码中的每个节点-by-2阵列,其中ñ是节点的数量。叶节点有子节点0

ClassCount

一个ñ-通过-ķ类计数的数组中的节点,其中ñ是节点的数量和ķ是的类的数量。对于任何节点号一世,班级数ClassCount(I,:)是观测的计数(从嵌合树中使用的数据)从满足针对节点的条件的每个类一世

类名

在元素列表ÿ与重复删除。类名可以是一个分类阵列,字符向量的单元阵列中,字符数组,逻辑载体或数值向量。类名具有相同的数据类型作为参数的数据ÿ(该软件把字符串数组作为字符向量的单元阵列。)

ClassProbability

一个ñ-通过-ķ类概率的数组中的节点,其中ñ是节点的数量和ķ是的类的数量。对于任何节点号一世,类概率ClassProbability(I,:)是用于每个类别的估计概率用于满足对节点的条件的点一世

成本

方阵,其中,成本(I,J)是分类的点到类的费用Ĵ如果它的真实类一世(行对应于真实类和列对应于所预测的类)。行和列的顺序成本对应于类的顺序类名。行和列的数量成本是响应独特的类数。此属性是只读的。

CutCategories

一个ñ-by-2的类别的单元阵列用于在分支,其中ñ是节点的数量。对于每个分支节点一世根据一个分类预测变量X,左边的孩子,如果选择X是在列出的类别中CutCategories {I,1},而右孩子如果选择X是那些在其中列出的CutCategories {I,2}。的两列CutCategories是空的,基于连续预测和叶节点的分支节点。

割点包含了砍分'连续'切块,CutCategories包含该类别集。

割点

一个ñ在用作切点的值的矢量 - 元素,其中ñ是节点的数量。对于每个分支节点一世基于连续预测变量X,左边的孩子,如果选择X <截点(ⅰ)和右子选择,如果X> =截点(I)割点为NaN基于分类预测和叶节点分支节点。

割点包含了砍分'连续'切块,CutCategories包含该类别集。

CutType

一个ñ- 元素单元阵列指示在每个节点切割类型,其中ñ是节点的数量。对于每个节点一世CutType {I}是:

  • '连续'- 如果切口的形式定义X 一个变量X和切点v

  • “绝对”- 如果切口是通过是否一个变量定义X发生在一组类别的值。

  • “”- 如果一世是叶节点。

割点包含了砍分'连续'切块,CutCategories包含该类别集。

CutPredictor

一个ñ变量的名称 - 元素单元阵列用于在每个节点的分支,其中ñ是节点的数量。这些变量有时被称为切变量。对于叶节点,CutPredictor包含一个空字符向量。

割点包含了砍分'连续'切块,CutCategories包含该类别集。

CutPredictorIndex

一个ñ为变量数字索引的阵列 - 元素用于在每个节点的分支,其中ñ是节点的数量。欲了解更多信息,请参阅CutPredictor

ExpandedPredictorNames

扩展预测器的名称,存储作为字符向量的单元阵列。

如果编码分类变量,那么该模型的用途ExpandedPredictorNames包括描述扩展的变量名。除此以外,ExpandedPredictorNames是相同的PredictorNames

HyperparameterOptimizationResults

超参数的交叉验证优化的说明中,存储为BayesianOptimization对象或超参数和相关联的值的表。非空当OptimizeHyperparameters名称 - 值对是在创建非空。值取决于的设置HyperparameterOptimizationOptions在创建名称 - 值对:

  • 'bayesopt'(默认) - 类对象BayesianOptimization

  • 'gridsearch'要么'randomsearch'- 超参数的表所使用的,观测到的观测的目标函数值(交叉验证损失),和等级从最低(最好)至最高(最差)

IsBranchNode

一个ñ- 元素逻辑载体,其是真正对于每个分支节点和对于每个叶节点

ModelParameters

在训练中使用的参数。要显示所有的参数值,输入tree.ModelParameters。要访问一个特定的参数,使用点记号。

NumObservations

观察在训练数据数量,数字标。NumObservations可以小于输入数据的行数X当有遗漏值在X或响应ÿ

结点类别

一个ñ与最可能的类的名称 - 元素单元阵列中的每个节点,其中ñ在树的节点数目。该数组的每个元素是矢量等于类名称之一中的字符类名

NodeError

一个ñ节点中的错误 - 元素矢量,其中ñ是节点的数量。NodeError(I)为节点的误分类概率一世

NodeProbability

一个ñ节点中的概率的矢量 - 元素,其中ñ是节点的数量。一个节点的概率被计算为从满足该节点的条件的原始数据观测的比例。这一比例调整为分配给每个类中的任何先验概率。

NodeRisk

一个ñ节点的树,其中的风险 - 元素矢量ñ是节点的数量。每个节点的风险是该节点通过节点概率加权杂质(基尼系数或偏离)的度量。如果树是由两分成长,对每个节点的风险为零。

NodeSize

一个ñ的节点中的尺寸的 - 元素矢量,其中ñ是节点的数量。一个节点的大小被定义为从用于创建满足条件的节点树中的数据观测值的数量。

NumNodes

节点的数量

一个ñ含父节点的数目中的每个节点 - 元素矢量,其中ñ是节点的数量。根节点的父是0

PredictorNames

包含预测器的名称,在该命令字符向量的单元阵列它们出现在X

用于每个类别的先验概率的数值向量。的元素的顺序对应于类的顺序类名。的元件的数目是响应独特的类数。此属性是只读的。

PruneAlpha

数值向量与每修剪水平一种元素。如果修剪水平范围从0到中号, 然后PruneAlpha中号+ 1个元素按升序排序。PruneAlpha(1)为修剪级别0(没有修剪),PruneAlpha(2)为修剪1级,等等。

PruneList

一个ñ具有在每个节点中的修剪水平 - 元素数值向量,其中ñ是节点的数量。修剪的水平范围从0(没有修剪),以中号,其中中号是最深的叶和根的节点之间的距离。

ResponseName

指定响应变量的名称(A字符向量ÿ)。

RowsUsed

一个ñ指示 - 元素逻辑矢量其中原始预测数据的行(X)在拟合中使用。如果软件使用的所有行X, 然后RowsUsed是一个空数组([])。

ScoreTransform

用于转化预测分类评分,或字符向量表示功能句柄内置变换函数。

没有意味着没有变换,或@(X)X

要更改分数转换功能,例如,功能,使用点记号。

  • 对于可用的功能(参见fitctree),输入

    Mdl.ScoreTransform ='功能“;
  • 您可以设置功能手柄可用的功能,或功能您可以通过输入自己定义

    tree.ScoreTransform = @功能;

SurrogateCutCategories

一个ñ类别 - 元素单元阵列用于替代分裂,其中ñ是节点的数量。对于每个节点ķSurrogateCutCategories {K}是一个单元阵列。长度SurrogateCutCategories {K}等于在这个节点中找到替代预测的数量。的每一个元素SurrogateCutCategories {K}或者是一种用于连续替代预测一个空字符向量,或者是两元件单元阵列与类别为范畴替代预测。通过该替代拆分分配给左子这两个元素的单元阵列列表类别的第一元件,和通过该替代拆分分配给右子这两个元素的单元阵列列表类别的第二元件。替代分裂变量中的每一个节点的顺序被匹配到的变量的顺序SurrogateCutPredictor。该节点的最佳分割可变不会出现。对于非转移(叶)的节点,SurrogateCutCategories包含一个空单元格。

SurrogateCutFlip

一个ñ数字切分配 - 元素单元阵列用于替代分裂,其中ñ是节点的数量。对于每个节点ķSurrogateCutFlip {K}是一个数值向量。长度SurrogateCutFlip {K}等于在这个节点中找到替代预测的数量。的每一个元素SurrogateCutFlip {K}为分类替代预测器,或一个数字切割为连续的替代预测分配或者为零。该数值极限分配可以是-1或+1。对于具有数字切每个替代拆分C基于连续预测变量ž,左边的孩子,如果选择ž<C而这种替代拆分切割分配是+1,或者如果žC而这种替代拆分切割分配为-1。同样,右孩子如果选择žC而这种替代拆分切割分配是+1,或者如果ž<C而这种替代拆分切割分配为-1。替代分裂变量中的每一个节点的顺序被匹配到的变量的顺序SurrogateCutPredictor。该节点的最佳分割可变不会出现。对于非转移(叶)的节点,SurrogateCutFlip包含一个空数组。

SurrogateCutPoint

一个ñ的数值组成 - 元素单元阵列用于替代分裂,其中ñ是节点的数量。对于每个节点ķSurrogateCutPoint {K}是一个数值向量。长度SurrogateCutPoint {K}等于在这个节点中找到替代预测的数量。的每一个元素SurrogateCutPoint {K}或者是为NaN用于分类预测的替代,或一个数字切割为连续的替代指标。对于具有数字切每个替代拆分C基于连续预测变量ž,左边的孩子,如果选择ž<CSurrogateCutFlip这个替代拆分为+1,或者如果žCSurrogateCutFlip这个替代拆分为-1。同样,右孩子如果选择žCSurrogateCutFlip这个替代拆分为+1,或者如果ž<CSurrogateCutFlip这个替代拆分为-1。替代分裂变量中的每一个节点的顺序被匹配到的变量由返回的顺序SurrogateCutPredictor。该节点的最佳分割可变不会出现。对于非转移(叶)的节点,SurrogateCutPoint包含一个空单元格。

SurrogateCutType

一个ñ- 元素单元阵列指示在每个节点类型替代拆分的,其中ñ是节点的数量。对于每个节点ķSurrogateCutType {K}是一个单元阵列与所述类型的该节点的替代拆分变量。这些变量与按降序最佳预测协会的预测指标排序,并且只与阳性预测变量的措施包括。替代分裂变量中的每一个节点的顺序被匹配到的变量的顺序SurrogateCutPredictor。该节点的最佳分割可变不会出现。对于非转移(叶)的节点,SurrogateCutType包含一个空单元格。甲替代拆分类型可以是'连续'如果切割设置在形式定义ž<V一个变量ž和切点V要么“绝对”如果切割被定义是否ž发生在一组类别的值。

SurrogateCutPredictor

一个ñ变量的名称 - 元素单元阵列中的每个节点用于替代拆分,其中ñ是节点的数量。的每一个元素SurrogateCutPredictor是一个单元阵列与所述替代拆分变量中的该节点的名称。这些变量与按降序最佳预测协会的预测指标排序,并且只与阳性预测变量的措施包括。该节点的最佳分割可变不会出现。对于非转移(叶)的节点,SurrogateCutPredictor包含一个空单元格。

SurrogatePredictorAssociation

一个ñ的关联的预测措施 - 元素单元阵列用于替代分裂,其中ñ是节点的数量。对于每个节点ķSurrogatePredictorAssociation {K}是一个数值向量。长度SurrogatePredictorAssociation {K}等于在这个节点中找到替代预测的数量。的每一个元素SurrogatePredictorAssociation {K}给出最优分裂,这种替代拆分之间的关​​联的预测指标。在每个节点处的替代拆分变量的顺序是变量的顺序SurrogateCutPredictor。该节点的最佳分割可变不会出现。对于非转移(叶)的节点,SurrogatePredictorAssociation包含一个空单元格。

w ^

缩放权重与长度的矢量ñ中,行中的数X

X

预测值的矩阵或表。的每一列X表示一个可变的,并且每行表示一个观察。

ÿ

甲分类阵列,字符向量,字符数组,逻辑载体或数值向量的单元阵列。每行ÿ表示的对应行的分类X

方法

紧凑 紧凑树
crossval 交叉验证决策树
cvloss 通过交叉验证分类错误
修剪 通过修剪产生分级子树的序列
resubEdge 通过resubstitution分级刃
resubLoss 通过resubstitution分类错误
resubMargin 分类利润率由resubstitution
resubPredict 预测分类树resubstitution标签

继承的方法

边缘 分级刃
失利 分类错误
余量 分类利润率
预测 预测使用分类树的标签
predictorImportance 预测的重要性估计分类树
surrogateAssociation 在分类树替代拆分协会的预测均值衡量
视图 查看分类树

复制语义

值。要了解值类如何影响复制操作,请参阅复制对象(MATLAB)。

例子

全部收缩

使用长分类树电离层数据集。

加载电离层TC = fitctree(X,Y)
TC = ClassificationTree ResponseName: 'Y' CategoricalPredictors:[]类名:{ 'B' 的 'g'} ScoreTransform: '无' NumObservations:351的属性,方法

您可以控制使用的树的深度MaxNumSplitsMinLeafSize, 要么MinParentSize名称 - 值对的参数。fitctree默认情况下,长深决策树。您可以种植树木较浅降低模型的复杂性和计算时间。

加载电离层数据集。

加载电离层

树的深度控制器,用于不断增长的分类树的默认值是:

  • N - 1对于MaxNumSplitsñ是训练样本的大小。

  • 1对于MinLeafSize

  • 10对于MinParentSize

这些默认值倾向于增长深树木大量训练样本的大小。

使用默认值,树的深度控制训练的分类树。交叉验证使用模型10倍交叉验证。

RNG(1);%用于重现MdlDefault = fitctree(X,Y,'CrossVal''上');

画上的树木实行拆分的数量的直方图。另外,查看树木之一。

numBranches = @(x)的总和(x.IsBranch);mdlDefaultNumSplits = cellfun(numBranches,MdlDefault.Trained);数字;直方图(mdlDefaultNumSplits)

视图(MdlDefault.Trained {1},'模式''图形'

分裂的平均数量约为15。

假设你想要一个分类树,是不是那样复杂(深)为那些使用分裂的默认数量培训。火车另一分类树,而是设置拆分的7的最大数量,大约是从默认分类树分割一半的平均数。交叉验证使用模型10倍交叉验证。

Mdl7 = fitctree(X,Y,'MaxNumSplits',7,'CrossVal''上');视图(Mdl7.Trained {1},'模式''图形'

比较模型的交叉验证分类错误。

classErrorDefault = kfoldLoss(MdlDefault)
classErrorDefault = 0.1140
classError7 = kfoldLoss(Mdl7)
classError7 = 0.1254

Mdl7是执行更复杂,只比稍差MdlDefault

更多关于

展开全部

参考

[1] Breiman,L.,J。弗里德曼,R. Olshen,和C.石。分类和回归树。佛罗里达州Boca Raton:CRC出版社,1984年。

扩展功能

介绍了在R2011a