决策树VS随机森林算法
我们将在这里详细探讨这个想法,深入探讨这两种方法之间的主要区别,并回答关键问题-您应该使用哪种机器学习算法?
让我们从一个思想实验开始,它将说明决策树和随机森林模型之间的差异。假设银行必须为客户批准少量贷款,并且银行需要迅速做出决定。银行检查了该人的信用记录和财务状况,发现他们还没有偿还那笔旧贷款。因此,银行拒绝了该申请。但这就是问题所在–对于银行庞大的库房来说,贷款数额很小,他们可以很容易地以低风险的举动批准它。因此,银行失去了赚钱的机会。
现在,几天后又提出了另一笔贷款申请,但是这次银行提出了不同的策略-多个决策过程。有时它首先检查信用记录,有时它首先检查客户的财务状况和贷款金额。然后,银行将这些多个决策过程的结果进行组合,并决定将贷款提供给客户。
即使此过程比上一个过程花费了更多时间,银行也使用此方法获利。这是一个典型的示例,其中集体决策胜过单个决策过程。现在,这是我要问的问题– 您知道这两个过程代表什么吗?
这些是决策树和随机森林!我们将在这里详细探讨这个想法,深入探讨这两种方法之间的主要区别,并回答关键问题-您应该使用哪种机器学习算法?
决策树简介
决策树是一种可监督的机器学习算法,可用于分类和回归问题。决策树只是为获得特定结果而做出的一系列顺序决策。这是运行中的决策树的图示(使用上面的示例):
让我们了解一下这棵树是如何工作的。
首先,它检查客户是否有良好的信用记录。基于此,它将客户分为两类,即具有良好信用记录的客户和具有不良信用记录的客户。然后,它检查客户的收入并将其再次分为两类。最后,它检查客户要求的贷款额。基于检查这三个功能的结果,决策树决定是否批准客户的贷款。
特征/属性和条件可以根据数据和问题的复杂性而变化,但总体思路保持不变。因此,决策树根据数据中存在的一组功能/属性(在这种情况下为信用记录,收入和贷款金额)做出一系列决策。
现在,您可能想知道:
为什么决策树首先检查信用评分而不检查收入?
这被称为特征重要性,要检查的属性顺序是根据基尼杂质指数或信息增益等标准决定的。这些概念的解释不在本文的讨论范围之内,但是您可以参考以下两种资源之一,以全面了解决策树:
注意:本文的目的是比较决策树和随机森林。因此,我不会详细介绍基本概念,但会提供相关链接,以备您进一步探索。
随机森林概述
决策树算法非常易于理解和解释。但是通常,仅一棵树不足以产生有效的结果。这是随机森林算法出现的地方。
随机森林是一种基于树的机器学习算法,它利用多个决策树的功能来制定决策。顾名思义,它是树木的“森林”!
但是为什么我们称其为“随机”森林?那是因为它是由随机创建的决策树组成的森林。决策树中的每个节点都使用特征的随机子集来计算输出。然后,随机森林组合各个决策树的输出以生成最终输出。
简单来说:
随机森林算法将多个(随机创建的)决策树的输出组合起来以生成最终输出。
随机森林与决策树的冲突(用代码!)
在本节中,我们将使用Python通过决策树和随机森林来解决二进制分类问题。然后,我们将比较他们的结果,看看哪个最适合我们的问题。
我们将使用Analytics Vidhya的DataHack平台处理“ 贷款预测”数据集。这是一个二进制分类问题,我们必须根据一组特定的功能来确定是否应向某人提供贷款。
步骤1:加载库和数据集
首先,导入所需的Python库和数据集:
该数据集由614行和13个特征组成,包括信用记录,婚姻状况,贷款金额和性别。在此,目标变量是Loan_Status,它指示是否应向某人提供贷款。
步骤2:资料预处理
现在,来自任何数据的科学项目的最关键的部分- d ATA预处理和FE ATURE工程。在本节中,我将处理数据中的分类变量,并估算缺失值。
我将使用模式,将连续变量的均值(相对应的列)均值归入分类变量。同样,我们将对数据中的分类值进行标签编码。您可以阅读本文,以了解有关Label Encoding的更多信息。
步骤3:建立训练和测试集
现在,让我们以80:20的比例分别分割数据集,分别用于训练和测试集:
现在,我们准备好进行下一阶段的构建决策树和随机森林模型了!
步骤4:建立和评估模型
由于我们既有训练集又有测试集,是时候训练我们的模型并对贷款申请进行分类了。首先,我们将在此数据集上训练决策树:
接下来,我们将使用F1-Score评估此模型。F1-分数是精度和召回率的谐波平均值,由公式给出:
您可以在此处了解有关此指标和其他各种评估指标的更多信息:
每个人都应该知道的11种重要的机器学习模型评估指标
让我们使用F1分数评估模型的性能:
在这里,您可以看到决策树在样本内评估中表现良好,但是其性能在样本外评估中急剧下降。您为什么认为是这种情况?不幸的是,我们的决策树模型过度拟合了训练数据。随机森林会解决这个问题吗?
建立随机森林模型
让我们来看一个随机森林模型:
在这里,我们可以清楚地看到,在样本外评估中,随机森林模型的性能要比决策树好得多。让我们在下一部分中讨论其背后的原因。
为什么我们的随机森林模型优于决策树?
随机森林利用了多个决策树的力量。它不依赖于一个单一的决策树给出的功能重要性。让我们看一下不同算法赋予不同功能的功能重要性:
如您在上图中可以清楚地看到的那样,决策树模型对一组特定功能非常重要。但是随机森林在训练过程中会随机选择特征。因此,它不高度依赖任何特定的功能集。这是随机森林比套袋树的特点。您可以在此处阅读有关装袋树分类器的更多信息。
因此,随机森林可以更好地概括数据。这种随机特征选择使随机森林比决策树更加准确。
那么,您应该选择哪一个-决策树还是随机森林?
随机森林适用于拥有大量数据集且可解释性不是主要问题的情况。决策树更容易解释和理解。由于随机森林结合了多个决策树,因此变得更加难以解释。这是个好消息–解释随机森林并非不可能。这是一篇讨论如何解释随机森林模型结果的文章:
解码黑匣子:Python中可解释的机器学习模型的重要介绍。
而且,随机森林比单个决策树具有更长的训练时间。您应该考虑到这一点,因为随着我们增加随机森林中树木的数量,训练每棵树木所需的时间也会增加。当您在紧迫的机器学习项目中工作时,这通常很关键。
但是,我要说的是-尽管不稳定并且依赖于一组特定的功能,但是决策树确实很有帮助,因为它们更易于解释和训练。任何对数据科学知识很少的人都可以使用决策树来进行快速的数据驱动决策。