作者|Angel Das 编译|VK 来源|Towards Data Science
介绍
- 决策树分类器是一种有监督的学习模型,在我们关心可解释性时非常有用。
- 决策树通过基于每个层次的多个问题做出决策来分解数据
- 决策树是处理分类问题的常用算法之一。
为了更好地理解它,让我们看看下面的例子。
决策树通常包括:
- 根节点-表示被进一步划分为同质组的样本或总体
- 拆分-将节点分为两个子节点的过程
- 决策节点-当一个子节点根据某个条件拆分为其他子节点时,称为决策节点
- 叶节点或终端节点-不进一步拆分的子节点
- 信息增益-要使用一个条件(比如说信息最丰富的特征)来分割节点,我们需要定义一个可以优化的目标函数。在决策树算法中,我们倾向于在每次分割时最大化信息增益。在测量信息增益时,通常使用三种度量。它们是基尼不纯度、熵和分类误差
数学理解
为了理解决策树是如何发展的,我们需要更深入地了解在每一步中如何使用度量使信息增益最大化。
让我们举一个例子,其中我们有包含学生信息的训练数据,如性别、年级、因变量或分类变量,这些变量可以识别学生是否是美食家。我们有以下概述的信息。
学生总数-20人
被归为美食家的学生总数-10
不属于美食家的学生总数-10
P(美食家),即学生成为美食家的概率=(10/20)=0.5
Q(非美食家),学生不是美食家的概率=(10/20)=0.5
让我们根据学生的性别将他们分成两个节点,并重新计算上述指标。
男学生(节点A)
学生总数-10人
被归为美食家的学生总数-8
不属于美食家的学生总数-2
P(美食家),学生成为美食家的概率=(8/10)=0.8
Q(非美食家),学生不是美食家的概率=(2/10)=0.2
女生(节点B)
学生总数-10人
被归为美食家的学生总数-4
不属于美食家的学生总数-6
P(美食家),学生成为美食家的概率=(4/10)=0.4
Q(非美食家),学生不成为美食家的概率=(6/10)=0.6
节点A的基尼指数 (GIn)=P²+Q²,其中P和Q是学生成为美食家和非美食家的概率。GIn(节点A)=0.8²+0.2²=0.68
节点A的基尼不纯度(GIp)=1-基尼指数=1–0.68=0.32
节点B或女生的基尼指数(GIn)=P²+Q²,其中P和Q是学生成为美食家和非美食家的概率。GIn(节点B)=0.4²+0.6²=0.52
节点B的基尼不纯度(GIp)=1-基尼指数=1–0.52=0.48
我们观察到的是,当我们将学生按性别(男性和女性)分别划分为A和B节点时,我们分别得到了两个节点的基尼不纯度。现在,为了确定性别是否是将学生分为美食家和非美食家的正确变量,我们需要一个加权基尼不纯度分数,该分数使用以下公式计算。
加权基尼不纯度=(A节点总样本数/数据集中总样本数)基尼不纯度(A节点)+(B节点总样本数/数据集中样本数)基尼不纯度(B节点)
用此公式计算上例的加权基尼不纯度分数,按性别划分学生时加权基尼不纯度分数=(10/20)0.32 + (10/20)0.48 = 0.4
一个分类问题涉及多个自变量。变量可以是名义变量,也可以是连续变量。决策树很适合处理不同数据类型的变量。
决策树算法在决定每个节点的拆分时考虑了所有可能的变量,可以获得最大加权不纯度增益的变量被用作特定节点的决策变量。
在上面的例子中,使用“性别”作为决策变量的加权不纯度增益是0.4,但是,假设使用“年级”作为决策变量,加权不纯度增益0.56,算法将使用“年级”作为创建第一个分割的决策变量。所有后续步骤都遵循类似的方法,直到每个节点都是同构的。
决策树算法简介
决策树容易过度拟合,因为算法继续将节点分割为子节点,直到每个节点变得均匀
与测试集相比,训练数据的精度要高得多,因此需要对决策树进行剪枝,以防止模型过度拟合。剪枝可以通过控制树的深度、每个节点的最大/最小样本数、要拆分的节点的最小不纯度增益和最大叶节点来实现
Python允许用户使用基尼不纯度或熵作为信息增益准则来开发决策树
可以使用网格搜索或随机搜索CV对决策树进行微调。CV代表交叉验证
三种不同不纯度标准的比较
下面概述的代码片段提供了不同不纯度标准的直观比较,以及它们如何随不同的概率值而变化。注意下面的代码改编自Deeper Insights into Machine Learning by S.Raschka, D.Julian, and J.Hearty, 2016。
impo