前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习--决策树算法

机器学习--决策树算法

作者头像
Kindear
发布2021-10-26 10:22:08
6190
发布2021-10-26 10:22:08
举报
文章被收录于专栏:算法与数据结构

在生活中,“树”这一模型有很广泛的应用,事实证明,它在机器学习分类和回归领域也有着深刻而广泛的影响。在决策分析中,决策树可以明确直观的展现出决策结果和决策过程。如名所示,它使用树状决策模型。它不仅仅是在数据挖掘中用户获取特定目标解的策略,同时也被广泛的应用于机器学习。

如何使用树来表示算法

为此,我们考虑使用泰坦尼克号数据集的示例,以预测乘客是否会生存。下面的模型使用数据集中的3个特征/属性/列,即性别,年龄和SIBSP(配偶或儿童的数量)。这是一棵体现了人性光辉的决策树。

树的形状是一棵上下颠倒的决策树,叶子节点在下,根节点在上。在图像中,黑色中的粗体文本表示条件/内部节点,基于树分成分支/边缘。不再分裂的分支结束是决策/叶子,在这种情况下,乘客是否被死亡或幸存,分别表示为红色和绿色文本。

虽然,一个真实的数据集将有很多功能,这只是一个更大的树中的部分分支,但你不能忽略这种算法的简单性。该特征重要性是明确的,可以轻易查看决策关系。该方法更常见于来自数据的学习决策树,并且在树上被称为分类树,因为目标是将乘客分类为幸存或死亡,上面所展示的决策树就是分类树。回归树以相同的方式表示,例如用于预测房子价格的连续价值。通常,决策树算法被称为CART或分类和回归树。

那么,算法生成的背后发生了什么呢?如何生成一个决策树取决于选择什么特征和在何种情况下进行分裂,以及在什么时候停止。因为一棵树通常是随意生长的,你需要修剪它,让它看起来漂亮(研究如何生成决策树)。

ID3算法

ID3算法生成决策树

ID3算法(Iterative Dichotomiser 3)是决策树生成算法的一种,基于奥卡姆剃刀原理(简约原则)

^{1}

。是Ross Quinlan发明的一种决策树算法,这个算法的基础就是上面提到的奥卡姆剃刀原理,越是小型的决策树越优于大的决策树,尽管如此,也不总是生成最小的树型结构,而是一个启发式算法。在信息论中,期望信息越小,那么信息增益

^{2}

就越大,从而纯度就越高。ID3算法的核心思想就是以信息增益来度量属性的选择,选择分裂后信息增益最大的属性进行分裂(决策树分支)。该算法采用自顶向下的贪婪搜索遍历可能的决策空间。

假设你是水果商人,现在有一个客人来你的摊位购买西瓜,请你使用ID3构建一个决策树,帮助客人挑选一个好瓜。

凭借你的经验,你总结出了如下判断规律。

最大的属性进行分支

于是,我们可以得到了三个子结点,对于这三个子节点,我们可以递归的使用刚刚找信息增益最大的方法进行选择特征属性,比如:

X_1(纹理=清晰) = \{1, 2, 3, 4, 5, 6, 8, 10, 15\}

,第一个分支结点可用属性集合

\{色泽、根蒂、敲声、脐部、触感\}

,基于

X_1

各属性的信息增益,分别求的如下:

于是我们可以选择特征属性为

根蒂,脐部,触感

三个特征属性中任选一个(因为他们三个相等并最大),其它俩个子结点同理,然后得到新一层的结点,再递归的由信息增益进行构建树即可 最终的决策树如下:

ID3算法虽然提出了新思路,但是还是有很多值得改进的地方。  

  • ID3没有考虑连续特征,比如长度,密度都是连续值,无法在ID3运用。这大大限制了ID3的用途。
  • ID3采用信息增益大的特征优先建立决策树的节点。很快就被人发现,在相同条件下,取值比较多的特征比取值少的特征信息增益大。比如一个变量有2个值,各为1/2,另一个变量为3个值,各为1/3,其实他们都是完全不确定的变量,但是取3个值的比取2个值的信息增益大。如果校正这个问题呢?
  • ID3算法对于缺失值的情况没有做考虑
  • 没有考虑过拟合的问题
C4.5算法

使用 C4.5算法生成决策树

Ross Quinlan在C4.5算法中改进了上述4个问题。

  • 对于第一个问题,不能处理连续特征, C4.5的思路是将连续的特征离散化。比如
m

个样本的连续特征

A

m

个,从小到大排列为

a_1,a_2,...,a_m

,则C4.5取相邻两样本值的平均数,一共取得

m-1

个划分点,其中第

i

个划分点

T_i

表示为:

T_i = \frac{a_i+a_{i+1}}{2}

。对于这

m-1

个点,分别计算以该点作为二元分类点时的信息增益。选择信息增益最大的点作为该连续特征的二元离散分类点。比如取到的增益最大的点为

a_t

,则小于

a_t

的值为类别

1

,大于

a_t

的值为类别

2

,这样我们就做到了连续特征的离散化。要注意的是,与离散属性不同的是,如果当前节点为连续属性,则该属性后面还可以参与子节点的产生选择过程。

  • 第二个问题,信息增益作为标准容易偏向于取值较多的特征的问题。我们引入一个信息增益比
^{6}

的变量,它是信息增益和特征熵的比值。特征数越多的特征对应的特征熵越大,可以校正信息增益容易偏向于取值较多的特征的问题。

  • 对于第三个缺失值处理的问题,主要需要解决的是两个问题,一是在样本某些特征缺失的情况下选择划分的属性,二是选定了划分属性,对于在该属性上缺失特征的样本的处理。 对于第一个子问题,对于某一个有缺失特征值的特征
A

。C4.5的思路是将数据分成两部分,对每个样本设置一个权重(初始可以都为1),然后划分数据,一部分是有特征值

A

的数据

D_1

,另一部分是没有特征

A

的数据

D_2

. 然后对于没有缺失特征

A

的数据集

D_1

来和对应的

A

特征的各个特征值一起计算加权重后的信息增益比,最后乘上一个系数,这个系数是无特征

A

缺失的样本加权后所占加权总样本的比例。 对于第二个子问题,可以将缺失特征的样本同时划分入所有的子节点,不过将该样本的权重按各个子节点样本的数量比例来分配。比如缺失特征

A

的样本

a

之前权重为

1

,特征

A

3

个特征值

A_1,A_2,A_3

3

个特征值对应的无缺失

A

特征的样本个数为

2,3,4

.则

a

同时划分入

A_1,A_2,A_3

。对应权重调节为

2/9,3/9, 4/9

  • 对于第4个问题,C4.5引入了正则化系数进行初步的剪枝

客人对你挑选的西瓜很满意,这次要一次性购买多个西瓜,请你再用C4.5算法构建一个决策树帮助客人挑选西瓜

根据上面的ID3算法,我们已经求出了部分信息增益信息


参考资料

[1] Prashant Gupta. Decision Trees in Machine Learning [EB/OL] [2] scikit-learn 中文社区,决策树 [EB/OL] [3] 维基百科 ID3 算法 [EB/OL] [4] 苗煜飞,张霄宏.决策树C4.5算法的优化与应用[J].计算机工程与应用,2015,51(13):255-258+270. [5] 刘建平.决策树算法原理(上) [EB/OL] 博客园 [6] 行者.决策树--ID3 算法(一)[EB/OL] 博客园 [7] 忆臻.深入浅出理解决策树算法(二)-ID3算法与C4.5算法 [EB/OL] 知乎 [8] AI研究僧.【机器学习(三)】机器学习中:信息熵,信息增益,信息增益比,原理,案例,代码实现 [EB/OL] CSDN

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何使用树来表示算法
  • ID3算法
    • C4.5算法
      • 参考资料
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档