程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

关于“树”的算法:现实生活中的决策树

balukai 2025-02-04 12:42:28 文章精选 4 ℃

全文共2874字,预计学习时长8分钟



就像树木是人类生活的重要组成部分一样,基于树的算法也是机器学习的重要组成部分。树的结构给了我们开发算法的灵感,并再将其反馈到机器,让它们学习我们希望它们学习的东西,以解决现实生活中的问题。


这些基于树的学习算法被认为是最好和最常用的监督学习方法之一:决策树、随机森林、梯度提升等方法在各种数据科学问题中得到了广泛应用。对于每一个机器学习的初学者来说,学习这些算法并将其用于建模非常重要。


决策树是什么?


决策树是一种带有节点的树状图,节点表示我们选取一个属性并提出问题,边表示问题的答案,叶表示实际输出或类标签。它们被用于具有简单线性决策面的非线性决策。


决策树对例子进行分类,方法是将它们从树的根排序到某个叶节点,叶节点为例子进行分类。树中的每个节点作为某个属性的测试用例,从该节点下行的每条边都对应于测试用例的可能答案之一。这个过程本质上属于递归性质,并且对于每一个扎根于新节点的子树都要重复进行。


现实生活中的决策树


你肯定在生活中使用过决策树来做决定。举个例子,决定是否要在某天和孩子一起打网球。


这取决于各种各样的因素,比如你是否能按时下班,是否能提前下班,你是否能在晚上6点之前到家,这取决于交通状况,或者你的孩子那天是否已经安排了其他活动;总的来说,你是否能和孩子一起出去打网球,取决于你和你的孩子在那一天的时间安排和外面的天气。


如果天气很好,你可以按时下班,也可以准时回家,孩子也没有别的课,你可以和他一起去网球场。如果你按时到达,但他那天已经安排了其他活动,你可能只想在家放松一下,看一些电影。


这是一个典型的现实生活中决策树的例子。我们已经建立了一个树来模拟一组连续的、分层的决策,这些决策最终会导致一些最终的结果。


请注意,我们还选择了相当“高级”的决策,以保持树的规模。例如,如果我们设置很多可能的天气选项,比如25度晴,25度雨,26度晴,26度雨,27度晴……等等,我们的树将变得巨大!确切的温度其实不太重要,我们只是想知道是否适合户外活动。


因此,你可以把最近几天的因素都计算出来,并绘制一个查询表,如下所示。


决策树算法如何工作?


任何决策树算法背后都有如下基本思想:


1.使用属性选择度量(ASM)选择最佳属性来分割记录。

2.将该属性设为一个决策节点,并将数据集分解为更小的子集。

3.通过对每个子元素递归重复此过程来开始建树,直到满足以下条件之一:


· 所有元组属于同一属性值

· 没有其他属性

· 没有其他实例


ASM通过解释给定的数据集为每个特性(或属性)提供了一个等级。最佳得分属性将被选择为分割属性。对于连续值属性,还需要定义分支的分割点。最常用的选择指标是信息增益、增益比和基尼系数。


信息增益是什么,如何衡量?


信息增益是一种统计属性,它测量给定属性根据目标分类分离训练实例的程度。


信息增益是熵(随机性)的降低。根据给定的属性值计算数据集分割前熵与分割后平均熵的差值。熵的基本计算公式为:


其中,Pi是D中任意元组属于类Ci的概率。


那么,信息增益的计算方式为:


现在,来计算每个父节点和子节点的熵:


E(Parent Node) =-[P(tennis)log(base2)P(tennis)

+ P(Home)log(base2)P(Home)]

= — [(1/2)log(base2)(1/2) +(1/2)log(base2)(1/2)]

= 1

Since P(tennis) = 1/2 and P(Home) = 1/2


现在,让我们看看父节点是否按第一个属性分割,即天气。如果我们看到上面给出的数据,根据天气属性,我们会得到以下值,供我们决定是否打网球:


Rainy: Stay at Home

Sunny: Tennis,Tennis,StayHome


右侧子节点的熵——E(rainy):


= -P(Home)log(base2)P(Home)

=-1log(1)= 0


左侧子节点的熵——E(Sunny):


-[P(Home)log(base2)P(Home)

+ P(Tennis)log(base2)P(Tennis)]

= -[(1/3)log(base2)(1/3) +(2/3)log(base2)(2/3)] = 0.9


可得


Information Gain(Weather) =Entropy(Parent) — [sum of(weighted average*entropy of each child)]

= 1 — [(3/4)*(0.9)+(1/4)*0] = 0.325


同样,我们也计算了其他属性的熵和信息增益,得到以下结果:


IG(WorkSchedule) = 1

IG(Traffic) = 0.325

IG(Availability) = 0.325


由于“工作日程”这个属性的信息增益最高,我们可以说,能够预测你当天是否会打网球的最准确的属性是你的工作日程。


基尼指数是什么?


决策树算法CART(分类与回归树)采用基尼法创建分割点。


其中,pi是D中元组属于Ci类的概率。


基尼指数,又称基尼杂质,指计算随机选取某一特定属性时分类错误的概率。如果所有元素都链接到一个类,那么它就可以被称为pure。基尼指数考虑每个属性的二元分割。你可以计算每个分区杂质的加权和。若对属性A进行二叉分割,将数据D分成D1和D2,则D的基尼指数为:


在离散值属性的情况下,为所选属性提供最小基尼指数的子集被选为分割属性。对于连续值属性,策略是选择每对相邻的值作为可能的分割点,选择基尼指数较小的点作为分割点。


选择基尼指数最小的属性作为分割属性。


现在,试着根据天气属性来计算上面数据的基尼指数。


Gini(Sunny) = 1 — [(2/3)*(2/3) +(1/3)*(1/3)] = 4/9 = 0.444

Gini(Rainy) = 1 — [(1/1)*(1/1)] = 0


可得


Gini(Weather) = (3/4) * 0.444 + (1/4) * 0 =0.333


基于其他属性,基尼指数如下:


Gini(Traffic) = (3/4) * {1 —[(1/3)*(1/3) + (2/3)*(2/3)] } + (1/4) * { 1- [ (1/1)*(1/1)]} = 0.333

Gini(Work Schedule) = (2/4) * [1 —(1*1)] + (2/4) * [1 — (1*1)] = 0

Gini(Availability) = 0.333


因此,基尼系数最小的属性,即工作日程,在这里是决策的分割属性。


留言点赞关注

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规范

最近发表
标签列表