[ML]在不使用package的情况下撰写决策树程式码

[ML]在不使用package的情况下撰写决策树程式码

前言

网路上的决策树教学大多都是教决策树的大概念与何呼叫API,却没有详细说明决策树的拟合是怎么进行的。

我认为要彻底了解程式码的最好方式,就是实际撰写一遍。因此本文会在不呼叫API的情况下,撰写出一个能够进行拟合、预测的决策树程式码,并将此程式码提供给读者自行把玩。

什么是决策树

决策树的英文为decision tree,因为它就是由一连串的决策(如同if else)组成,并且结构像树一样。

决策树是一种supervised learning(监督式学习),并且可以应用于classification或regression, 本文会针对classification进行说明

决策树中的nodes可以被区分为以下两种:

  1. 内部节点:
    Internal nodes中有决策,用来对输入进行预测/分类。
  2. 叶节点:
    Leaf nodes不做任何决策。若有资料经过决策(internal nodes)后分类到leaf nodes,Leaf nodes会给这笔资料一个预测数值/分类结果。

背景

在讲解演算法与程式码之前,我先说明一些等等会使用到的名词与意义:

资讯量

通常决策树会使用Shannon entropy(熵)或者Gini impurity(吉尼不纯度)来作为资讯量的计算。在此不细讲计算方式,我们只需要知道所有可能发生的结果若 机率分布较为平均、分散 的话,会有 较高的资讯量 。反之,若 机率分布较为集中 的话,会有 较低的资讯量

怎样算是机率分布平均、分散?

以掷硬币为例,掷硬币的两种可能结果(正面与反面)的机率都是50%,没有其中一个机率比较高,这就是机率分布平均、分散。

反之,以买乐透为例,若只将结果分为中奖与没中奖两种的话(撇除中大奖与小奖的情况),中奖的机率会远远小于没中奖的机率,这就是机率分布集中。

信息增益

以下文字说明来自维基百科:

一般而言,期望的信息增益是信息熵的减少 ** ** 从先前状态到接受给定信息的状态:

在哪里 ** H(T|a)** 是条件熵 ** ** 给定属性的值 ** 一个** .

看起来很复杂,接下来我一个一个解释里面的每个符号与意义。

  • 代表随机变数
  • H() 代表资讯量
  • H T) 代表在随机变数 之下的资讯量
  • H(T|a) 代表随机变数 在条件 一个 之下的资讯量
  • 胃肠道(T,a) 代表在条件 一个 之下,能够 获得 的资讯量

若是以树的资料结构来看的话, H T) 代表父节点的资讯量,而 H(T|a) 代表被决策 一个 的分割后的所有子节点的资讯量加总。而information gain 胃肠道(T,a) 代表进行决策 一个 所带来的资讯量。

Information gain的公式與意義

简单的说,我们希望 H(T|a) (也就是经过决策后的资讯量)越少越好,因为这样代表决策 一个 能够获得较多的资讯。而机率分布越不平均、越集中,资讯量越低。因此我们希望经过决策后机率分布会越集中。

藉由information gain,我们可以分析决策 一个 是否能够有效的区分预测结果。

演算法

本文会以不呼叫package的方式实现决策树程式码,以利读者了解实际决策树的拟合是如何实现的。

决策树是一种贪婪演算法(greedy algorithm),拟合时会利用递回的方式,每次增加一个拥有最大information gain的节点。简略流程如下:

  1. 确认是否还要继续增加节点(为了避免overfitting,当决策树的深度过深或者样本数过少可以停止增加节点)。若不继续增加节点则完成拟合。
  2. 若要增加节点的话,则选出一个information gain最大(最能够让分割后的资料机率分布越集中)的分割分方式。

程式码

Kaggle是一个数据分析的竞赛平台,同时他也提供了线上撰写/编辑程式码的环境,基本的packages如numpy、pandas也都安装好了。

决策树

点击上方连结并且点选Copy & Edit(见下图)就可以进入编写环境了。可以自己研究一下程式码,并尝试修改参数把玩一下。

點進連結後的畫面

总结

若了解了决策树的程式码后,可以参考scikit-learn这个package提供的API。会更能够了解各个参数的意义。 连结请点我

参考

[资料分析&机器学习] 第3.5讲: 决策树(Decision Tree)以及随机森林(Random Forest)介绍| by Yeh James | JamesLearningNote | Medium

[Youtube]Python 中的决策树分类(从零开始!)

[ 维基百科 ] 决策树学习

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/25874/20271100

posted @ 2022-09-11 00:20  哈哈哈来了啊啊啊  阅读(4)  评论(0编辑  收藏  举报