决策树详解

目录

 

决策树

定义

划分选择

ID3(信息增益)

C4.5(信息增益比)

CART

ID3、C4.5、CART的区别

信息增益 vs 信息增益比

Gini 指数 vs 熵


决策树

定义

类似于我们平时利用选择做决策的过程。表示基于特征对实例进行分类的过程,可以认为是if-then的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。

结构:   决策树在逻辑上以树的形式存在,包含根节点、内部结点和叶节点。 

  1. - 根节点:包含数据集中的所有数据的集合 
  2. - 内部节点:每个内部节点为一个判断条件,并且包含数据集中满足从根节点到该节点所有条件的数据的集合。根据内部结点的判断条件测试结果,内部节点对应的数据的集合别分到两个或多个子节点中。 
  3. - 叶节点:叶节点为最终的类别,被包含在该叶节点的数据属于该类别。

简而言之,决策树是一个利用树的模型进行决策的多分类模型,简单有效,易于理解。

决策树通常有三个步骤:特征选择、决策树的生成、决策树的修剪。

划分选择

最重要的步骤在于选取最优的属性,可以说,属性选择的质量,决定了决策树的预测准确度。一般的原则是,希望通过不断划分节点,使得一个分支节点包含的数据尽可能的属于同一个类别,即“纯度“越来越高。在决策树算法中,ID3基于信息增益作为属性选择的度量, C4.5基于信息增益作为属性选择的度量, CART基于基尼指数作为属性选择的度量

 

ID3(信息增益)

熵表示的是数据中包含的信息量大小。熵越小,数据的纯度越高,也就是说数据越趋于一致,这是我们希望的划分之后每个子节点的样子。

信息增益 = 划分前熵 - 划分后熵。信息增益越大,则意味着使用属性 a 来进行划分所获得的 “纯度提升” 越大 **。也就是说,用属性 a 来划分训练集,得到的结果中纯度比较高。

ID3 仅仅适用于二分类问题。ID3 仅仅能够处理离散属性

 

C4.5(信息增益比)

C4.5 克服了 ID3 仅仅能够处理离散属性的问题,以及信息增益偏向选择取值较多特征的问题,使用信息增益比来选择特征。

信息增益比 = 信息增益 / 划分前熵 选择信息增益比最大的作为最优特征。

C4.5 处理连续特征是先将特征取值排序,以连续两个值中间值作为划分标准。尝试每一种划分,并计算修正后的信息增益,选择信息增益最大的分裂点作为该属性的分裂点。
 

CART

CART 与 ID3,C4.5 不同之处在于 CART 生成的树必须是二叉树。也就是说,无论是回归还是分类问题,无论特征是离散的还是连续的,无论属性取值有多个还是两个,内部节点只能根据属性值进行二分。

CART 的全称是分类与回归树。从这个名字中就应该知道,CART 既可以用于分类问题,也可以用于回归问题。

回归树中,使用平方误差最小化准则来选择特征并进行划分。每一个叶子节点给出的预测值,是划分到该叶子节点的所有样本目标值的均值,这样只是在给定划分的情况下最小化了平方误差。

要确定最优化分,还需要遍历所有属性,以及其所有的取值来分别尝试划分并计算在此种划分情况下的最小平方误差,选取最小的作为此次划分的依据。由于回归树生成使用平方误差最小化准则,所以又叫做最小二乘回归树。

分类树种,使用 Gini 指数最小化准则来选择特征并进行划分;

Gini 指数表示集合的不确定性,或者是不纯度。基尼指数越大,集合不确定性越高,不纯度也越大。这一点和熵类似。另一种理解基尼指数的思路是,基尼指数是为了最小化误分类的概率。
 

ID3、C4.5、CART的区别

这三个是非常著名的决策树算法。简单粗暴来说,ID3 使用信息增益作为选择特征的准则;C4.5 使用信息增益比作为选择特征的准则;CART 使用 Gini 指数作为选择特征的准则。

信息增益 vs 信息增益比

之所以引入了信息增益比,是由于信息增益的一个缺点。那就是:信息增益总是偏向于选择取值较多的属性。信息增益比在此基础上增加了一个罚项,解决了这个问题。

Gini 指数 vs 熵

既然这两个都可以表示数据的不确定性,不纯度。那么这两个有什么区别那?

Gini 指数的计算不需要对数运算,更加高效;
Gini 指数更偏向于连续属性,熵更偏向于离散属性
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在MATLAB中,可以使用fitctree函数生成决策树模型。下面是一个详细的步骤说明: 1. 准备数据:将训练数据保存在一个m×n的矩阵中,其中m是样本数量,n是特征数量。将每个样本的标签保存在一个m维的向量中,表示每个样本的类别。 2. 构建决策树模型:使用fitctree函数来构建决策树模型。该函数的基本语法如下: ```matlab tree = fitctree(data, labels); ``` 这里,data是训练数据矩阵,labels是对应的标签向量。fitctree函数会自动根据训练数据和标签构建出一棵决策树,并返回一个分类器对象tree。 3. 可选:设置决策树模型的参数:fitctree函数支持一些可选参数,可以根据需要进行设置。例如,可以设置最大深度、最小叶子数、分裂准则等。例如: ```matlab tree = fitctree(data, labels, 'MaxDepth', 5, 'MinLeafSize', 10); ``` 4. 可选:使用交叉验证选择最优参数:如果需要选择最优的参数设置,可以使用交叉验证。可以通过创建一个模板,然后使用fitcecoc函数进行交叉验证选择最佳参数。例如: ```matlab t = templateTree('MaxNumSplits', 'all'); tree = fitcecoc(data, labels, 'Learners', t, 'CrossVal', 'on'); ``` 5. 可选:绘制决策树图形:可以使用view函数来可视化生成的决策树模型。例如: ```matlab view(tree, 'Mode', 'graph'); ``` 6. 使用训练好的决策树模型进行预测:将测试数据保存在一个p×n的矩阵中,其中p是测试样本数量,n是特征数量。使用predict函数对测试数据进行分类预测,得到预测结果。例如: ```matlab predictions = predict(tree, testData); ``` 这里,tree是训练好的决策树模型,testData是测试数据矩阵。 通过以上步骤,你可以在MATLAB中生成决策树模型,并用于分类任务。根据具体需求,可以调整参数和参数设置来优化决策树模型的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贾世林jiashilin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值