主要内容

ClassificationTree类

超类:CompactClassificationTree

用于多类分类的二叉决策树

描述

一个ClassificationTree对象表示具有用于分类的二叉分割的决策树。类的对象可以预测对新数据的响应预测方法。该对象包含用于训练的数据,因此它还可以计算再替代预测。

建设

创建一个ClassificationTree对象,使用fitctree

属性

BinEdges

的单元格数组指定的数值预测器的Bin边p数字向量,其中p是预测因子的数量。每个向量都包含数值预测器的bin边。类别预测器的单元格数组中的元素为空,因为软件不收纳类别预测器。

类型时,软件才会对数值预测器进行分类“NumBins”在使用树学习器训练模型时,名称-值参数作为正整数标量。的BinEdges属性为空“NumBins”值为空(默认值)。

您可以重新生成已归档的预测器数据Xbinned通过使用BinEdges训练模型的属性mdl

X = mdl.X;%预测数据Xbinned = 0(大小(X));edges = mdl.BinEdges;查找已分类预测符的索引。idxNumeric = find(~cellfun(@isempty,edges));if iscolumn(idxNumeric) idxNumeric = idxNumeric';end for j = idxNumeric x = x (:,j);如果x是一个表,则将x转换为数组。If stable(x) x = table2array(x);将x分组到箱子中离散化函数。Xbinned =离散化(x,[-inf;边缘{};正]);Xbinned(:,j) = Xbinned;结束
Xbinned包含数值预测器的容器索引,范围从1到容器数。Xbinned类别预测器的值为0。如果X包含S,然后是对应的Xbinned值是年代。

CategoricalPredictors

分类预测指标,指定为正整数向量。CategoricalPredictors包含指示相应预测符是分类的索引值。索引值在1和之间p,在那里p用于训练模型的预测器的数量。如果没有一个预测符是分类的,则此属性为空([]).

CategoricalSplit

一个n-by-2单元格数组,其中n分类分割的数量是多少.每一行CategoricalSplit给出分类分割的左右值。对每个分支节点进行分类分割j基于分类预测变量z,则左子元素被选中z是在CategoricalSplit (j, 1)如果z是在CategoricalSplit (j, 2).分割的顺序与树节点的顺序相同。可以通过运行来找到这些分割的节点cuttype并选择“分类”从上到下切。

孩子们

一个n中每个节点的子节点的编号,在那里n为节点数。叶子节点有子节点0

ClassCount

一个n——- - - - - -k中的节点的类计数,在那里n节点数和k是类的数量。对于任意节点号,班级很重要ClassCount(我,:)来自每个类的观察计数(来自拟合树的数据)是否满足节点的条件

一会

元素的列表Y删除副本。一会可以是分类数组、字符向量的单元格数组、字符数组、逻辑向量或数字向量。一会与实参中的数据类型相同Y(该软件将字符串数组视为字符向量的单元格数组。)

ClassProbability

一个n——- - - - - -k中的节点的类概率数组,在那里n节点数和k是类的数量。对于任意节点号,类概率ClassProbability(我,:)每一类点的估计概率是否满足节点的条件

成本

方阵,其中成本(i, j)将一个点分类的成本是多少j如果它真正的阶级是(行对应真实的类,列对应预测的类)。的行和列的顺序成本中类的顺序对应一会.中的行数和列数成本响应中唯一类的数量。此属性是只读的。

CutCategories

一个n中分支使用的类别的-by-2单元数组,在那里n为节点数。对于每个分支节点基于分类预测变量X,则左子元素被选中X所列的类别中CutCategories{1},我,则选择正确的子节点X是在CutCategories{2},我.两列CutCategories对于基于连续预测器的分支节点和叶节点,为空。

割点包含的切点“连续”削减,CutCategories包含类别集。

割点

一个n-元素向量的值用作切割点,在那里n为节点数。对于每个分支节点基于一个连续的预测变量X,则左子元素被选中X <割点(我)如果X > =割点(我)割点对于基于分类预测器的分支节点和叶节点。

割点包含的切点“连续”削减,CutCategories包含类别集。

CutType

一个n元素单元格数组,表示在每个节点上的切割类型,在那里n为节点数。对于每个节点CutType{我}是:

  • “连续”—如果在表单中定义了切割X < v对于一个变量X切割点v

  • “分类”—若切定义为是否变量X获取一组类别中的值。

  • ——如果是叶节点。

割点包含的切点“连续”削减,CutCategories包含类别集。

CutPredictor

一个n中每个节点中用于分支的变量名称的单元格数组,在那里n为节点数。这些变量有时被称为减少变量.对于叶节点,CutPredictor包含一个空字符向量。

割点包含的切点“连续”削减,CutCategories包含类别集。

CutPredictorIndex

一个n用于分支的每个节点的变量的数值索引数组,在那里n为节点数。有关更多信息,请参见CutPredictor

ExpandedPredictorNames

扩展的预测器名称,存储为字符向量的单元格数组。

如果模型对分类变量使用编码,则ExpandedPredictorNames包括描述展开变量的名称。否则,ExpandedPredictorNamesPredictorNames

HyperparameterOptimizationResults

超参数的交叉验证优化的描述,存储为BayesianOptimization对象或超参数及相关值的表。当OptimizeHyperparameters名称-值对在创建时是非空的。属性的设置HyperparameterOptimizationOptions创建时的名称-值对:

  • “bayesopt”(默认)-类的对象BayesianOptimization

  • “gridsearch”“randomsearch”-使用的超参数表,观察到的目标函数值(交叉验证损失),以及从最低(最好)到最高(最差)的观察值排序

IsBranchNode

一个n-element逻辑向量即真正的对于每个分支节点和的每个叶节点

ModelParameters

训练参数.显示所有参数值,输入树。米odelParameters.要访问特定的参数,请使用点表示法。

NumObservations

训练数据中的观察数,一个数值标量。NumObservations可以小于输入数据的行数吗X中缺少值时X或响应Y

NodeClass

一个n的每个节点中最可能的类名称的单元格数组,在那里n是树中的节点数。数组中的每个元素都是一个字符向量,等于类名中的一个一会

NodeError

一个n中节点误差的-element向量,在那里n为节点数。NodeError(我)节点的错分类概率是多少

NodeProbability

一个n-元素向量的概率的节点,在那里n为节点数。一个节点的概率是通过原始数据中满足该节点条件的观测值的比例来计算的。这个比例根据分配给每个类的任何先验概率进行调整。

NodeRisk

一个n-树中节点风险的element向量,其中n为节点数。每个节点的风险是该节点的杂质(基尼指数或偏差)的度量,由节点概率加权。如果树是两倍增长的,每个节点的风险为零。

NodeSize

一个n中节点大小的-element向量,在那里n为节点数。节点的大小定义为用于创建满足节点条件的树的数据的观察数。

NumNodes

的节点数

一个n中每个节点的父节点的编号,在那里n为节点数。根节点的父节点为0

PredictorNames

包含预测器名称的字符向量的单元格数组,按它们出现的顺序排列X

之前

每个类的先验概率的数字向量。元素的顺序之前中类的顺序对应一会.元素的个数之前响应中唯一类的数量。此属性是只读的。

PruneAlpha

数字向量,每个修剪级别有一个元素。如果修剪级别为0 ~,然后PruneAlpha+ 1个元素按升序排序。PruneAlpha (1)用于0级修剪(不修剪),PruneAlpha (2)用于修剪级别1,依此类推。

PruneList

一个n的每个节点的剪枝级别,在那里n为节点数。修剪级别从0(不修剪)到,在那里最深的叶节点和根节点之间的距离。

ResponseName

一个字符向量,它指定响应变量的名称(Y).

RowsUsed

一个n元素逻辑向量,表示原始预测器数据的行(X)用于配件。如果软件使用的所有行X,然后RowsUsed是一个空数组([]).

ScoreTransform

转换预测分类分数的函数句柄,或表示内置转换函数的字符向量。

没有一个意味着没有变换,或者@ x (x)

要将分数转换函数更改为,例如,函数,使用点表示法。

  • 有关可用的函数(请参阅fitctree),输入

    Mdl。ScoreTransform = '函数”;
  • 您可以为可用函数或您自己定义的函数设置函数句柄

    树。ScoreTransform = @函数

SurrogateCutCategories

一个n用于代理分割的类别的element单元格数组,在那里n节点个数是否到位.对于每个节点kSurrogateCutCategories {k}是单元格数组。的长度SurrogateCutCategories {k}等于在此节点上找到的代理预测器的数量。每一个元素SurrogateCutCategories {k}是连续代理预测器的空字符向量,还是类别代理预测器的包含类别的两元素单元格数组。这个两元素单元格数组的第一个元素列出了由代理分裂分配给左子元素的类别,这个两元素单元格数组的第二个元素列出了由代理分裂分配给右子元素的类别。每个节点上的代理拆分变量的顺序与节点中的变量的顺序匹配SurrogateCutPredictor.此节点上的最佳分割变量不会出现。对于非分支(叶)节点,SurrogateCutCategories包含一个空单元格。

SurrogateCutFlip

一个n用于代理分割的数值切割分配的单元格数组,在那里n节点个数是否到位.对于每个节点kSurrogateCutFlip {k}是数值向量。的长度SurrogateCutFlip {k}等于在此节点上找到的代理预测器的数量。每一个元素SurrogateCutFlip {k}对于分类代理预测器为0,对于连续代理预测器为数值切割赋值。数值切割分配可以是-1或+1。每个代理都有一个数字分割C基于一个连续的预测变量Z,则左子元素被选中Z<C这个代理分割的切割分配是+1,或者ZC这个代理分割的切割值是-1。类似地,如果ZC这个代理分割的切割分配是+1,或者Z<C这个代理分割的切割值是-1。每个节点上的代理拆分变量的顺序与节点中的变量的顺序匹配SurrogateCutPredictor.此节点上的最佳分割变量不会出现。对于非分支(叶)节点,SurrogateCutFlip包含一个空数组。

SurrogateCutPoint

一个n用于代理分割的数值的单元格数组,在那里n节点个数是否到位.对于每个节点kSurrogateCutPoint {k}是数值向量。的长度SurrogateCutPoint {k}等于在此节点上找到的代理预测器的数量。每一个元素SurrogateCutPoint {k}要么是对于分类替代预测器,或连续替代预测器的数字切割。每个代理都有一个数字分割C基于一个连续的预测变量Z,则左子元素被选中Z<C而且SurrogateCutFlip对于这个代理拆分为+1,或者ifZC而且SurrogateCutFlip这个代理的分割是-1。类似地,如果ZC而且SurrogateCutFlip对于这个代理拆分为+1,或者ifZ<C而且SurrogateCutFlip这个代理的分割是-1。在每个节点上的代理拆分变量的顺序与返回的变量的顺序相匹配SurrogateCutPredictor.此节点上的最佳分割变量不会出现。对于非分支(叶)节点,SurrogateCutPoint包含一个空单元格。

SurrogateCutType

一个n中每个节点上的代理拆分类型的单元格数组,在那里n节点个数是否到位.对于每个节点kSurrogateCutType {k}是一个单元格数组,其中包含此节点上的代理程序拆分变量的类型。变量按照与最优预测因子关联的预测测度排序,按降序排列,仅包含具有正预测测度的变量。每个节点上的代理拆分变量的顺序与节点中的变量的顺序匹配SurrogateCutPredictor.此节点上的最佳分割变量不会出现。对于非分支(叶)节点,SurrogateCutType包含一个空单元格。代理拆分类型可以是任意一种“连续”如果在窗体中定义了切割Z<V对于一个变量Z切割点V“分类”是否切割定义为是否Z获取一组类别中的值。

SurrogateCutPredictor

一个n中每个节点中用于代理分割的变量名称的单元格数组,在那里n节点个数是否到位.每一个元素SurrogateCutPredictor具有此节点上的代理程序拆分变量名称的单元格数组。变量按照与最优预测因子关联的预测测度排序,按降序排列,仅包含具有正预测测度的变量。此节点上的最佳分割变量不会出现。对于非分支(叶)节点,SurrogateCutPredictor包含一个空单元格。

SurrogatePredictorAssociation

一个n-元单元阵列的关联预测措施的代理分裂在,在那里n节点个数是否到位.对于每个节点kSurrogatePredictorAssociation {k}是数值向量。的长度SurrogatePredictorAssociation {k}等于在此节点上找到的代理预测器的数量。每一个元素SurrogatePredictorAssociation {k}给出了最佳分割和代理分割之间关联的预测度量。每个节点上的代理拆分变量的顺序就是其中变量的顺序SurrogateCutPredictor.此节点上的最佳分割变量不会出现。对于非分支(叶)节点,SurrogatePredictorAssociation包含一个空单元格。

W

的比例权重,一个有长度的向量n的行数X

X

预测值的矩阵或表格。的每一列X表示一个变量,每一行表示一个观察结果。

Y

分类数组、字符向量的单元格数组、字符数组、逻辑向量或数字向量。每行Y的对应行的分类X

对象的功能

紧凑的 紧凑的树
compareHoldout 比较使用新数据的两种分类模型的准确性
crossval 交叉验证决策树
cvloss 交叉验证的分类错误
边缘 分类的优势
收集 收集属性统计和机器学习工具箱来自GPU的对象
石灰 局部可解释模型不可知解释(LIME)
损失 分类错误
保证金 分类的利润率
nodeVariableRange 检索决策树节点的可变范围
partialDependence 计算部分依赖关系
plotPartialDependence 创建部分依赖图(PDP)和个别条件期望图(ICE)
预测 使用分类树预测标签
predictorImportance 分类树预测因子重要性的估计
修剪 通过修剪产生分类子树序列
resubEdge 通过置换分类边缘
resubLoss 再置换导致的分类错误
resubMargin 再置换分类边际
resubPredict 预测分类树的再置换标签
沙普利 沙普利值
surrogateAssociation 分类树中代理分割关联的平均预测测度
testckfold 通过重复交叉验证比较两种分类模型的准确性
视图 视图分类树

复制语义

价值。要了解值类如何影响复制操作,请参见复制对象

例子

全部折叠

类生成分类树电离层数据集。

负载电离层tc = fitctree(X,Y)
tc = ClassificationTree ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351属性,方法

控件可以控制树的深度MaxNumSplitsMinLeafSize,或MinParentSize名称-值对参数。fitctree默认情况下生长深度决策树。您可以种植较浅的树,以减少模型复杂性或计算时间。

加载电离层数据集。

负载电离层

用于生长分类树的树深度控制器的默认值为:

  • N - 1MaxNumSplitsn是训练样本量。

  • 1MinLeafSize

  • 10MinParentSize

对于大的训练样本量,这些默认值往往生长得很深。

使用用于树深度控制的默认值训练分类树。使用10次交叉验证对模型进行交叉验证。

rng (1);%用于再现性MdlDefault = fitctree(X,Y,“CrossVal”“上”);

绘制树上施加的分裂数量的直方图。还有,看看其中一棵树。

numBranches = @(x)sum(x. isbranch);mdldefaultnumsplitting = cellfun(numBranches, MdlDefault.Trained);图;直方图(mdlDefaultNumSplits)

图中包含一个轴对象。坐标轴对象包含一个直方图类型的对象。

视图(MdlDefault。训练有素的{1},“模式”“图”

图分类树查看器包含一个axis对象和其他类型为uimenu、uicontrol的对象。axis对象包含51个类型为line, text的对象。

平均分裂次数约为15次。

假设您想要一个分类树,它不像使用默认分割数训练的分类树那么复杂(深)。训练另一棵分类树,但将最大分割数设置为7,这大约是默认分类树的平均分割数的一半。使用10次交叉验证对模型进行交叉验证。

Mdl7 = fitctree(X,Y,“MaxNumSplits”7“CrossVal”“上”);视图(Mdl7。训练有素的{1},“模式”“图”

图分类树查看器包含一个axis对象和其他类型为uimenu、uicontrol的对象。axis对象包含21个类型为line, text的对象。

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

classErrorDefault = kfoldLoss(MdlDefault)
classErrorDefault = 0.1168
classError7 = kfoldLoss(Mdl7)
classError7 = 0.1311

Mdl7的复杂程度要低得多,性能只比MdlDefault

更多关于

全部展开

参考文献

布莱曼,L.弗里德曼,R.奥尔申和C.斯通。分类与回归树.佛罗里达州博卡拉顿:CRC出版社,1984年。

扩展功能

版本历史

在R2011a中引入