机器学习利器——决策树和随机森林

简介: 机器学习是当下最火的领域,本文通过一个小例子介绍了其核心算法:决策树和随机森林。

更多深度文章,请关注:https://yq.aliyun.com/cloud


决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。决策树是一种基本的分类和回归方法,学习通常包含三个步骤:特征选择、决策树的生成和决策树的剪枝。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。分类树(决策树)是一种十分常用的分类方法。数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来做预测。

一个简单的决策树分类模型:红色框出的是特征。

50761fbfc320097860c79190f968c343fb987a64

在机器学习中,随机森林是一个包含多个决策树分类器,并且其输出的类别是由个别树输出的类别的众数而定。Leo BreimanAdele Cutler发展出推论出随机森林的算法随机森林在过去几年一直是新兴的机器学习技术。它是基于非线性的决策树模型,通常能够提供准确的结果。然而,随机森林大多是黑盒子,经常难以解读和充分理解。在这篇博客中,我们将深入介绍随机森林的基本原理,以更好地了解它们。我们首先看看决策树和随机森林的构建块。这项工作是由Ando Saabashttps://github.com/andosa/treeinterpreter)完成。可以在我的GitHub找到在这个博客中所需的代码。

决策树如何工作?

决策树以迭代地方式将数据分解成不同的子集来工作:对于回归树,选择它们来最小化所有子集中的MSE(均方误差)或MAE(平均绝对误差)是个不错的选择;对于分类树,选择分解数据以便最小化所得到的子集中的熵或基尼杂质。所得到的分类器将特征空间分成不同的子集。根据观察到的子集进行观察的预测:

8dd8b1d1da29cdcb38930b96422d489f36469384

图为:决策树的迭代

决策树的贡献值

鲍鱼数据集为例。我们将尝试基于贝壳重量,长度,直径等变量来预测其头数。为了说明的目的,我们拟合一个浅层决策树。我们通过将树的最大深度限制为3级来实现。

e02567540914f472ddf4a9cb0ff583f7effc2475

图为:用于预测环数的决策树路径

为了预测鲍鱼的头数,决策树将沿着树向下移动,直到达到叶。每个步骤将当前子集分成两部分。对于特定的分割,确定分割的变量的贡献值(contributions)被定义为平均数量的变化。

例如,如果我们拿一个贝壳重量为0.02和长度为0.220的鲍鱼,它将落在最左边的叶子中,预计的头数为4.4731

壳重的贡献值(contributions)结果是:

(7.587 - 9.958) + (5.701 - 7.587) = -4.257

长度的贡献值(contributions)结果:

(4.473 - 5.701) = -1.228

这些贡献值(contributions)结果意味着特定的壳体重量和长度值可以预测其鲍鱼的头数。

我们可以通过运行以下代码获得这些贡献值(contributions)结果。

from treeinterpreter import treeinterpreter as ti
dt_reg_pred, dt_reg_bias, dt_reg_contrib = ti.predict(dt_reg, X_test)

该变量dt_regsklearn分类器对象,X_test是一个Pandas DataFramenumpy数组,其中包含我们希望得出预测和贡献值的特征。dt_reg_contrib是具有(n_obsn_features)的2d numpy数组,其中n_obs是观察n_features次数。

我们可以为给定的鲍鱼绘制这些影响元素,以查看哪些特征最能影响其预测头数。从下图可以看出,这个特定的贝壳的体重和长度值对预测的头数有很大的影响。

37f7cb97a1ef9fce4854e4915dba0d343c50e163

图为:例子的贡献值图(决策树)

我们可以通过使用小提琴图比较特征对鲍鱼头数预测的影响。这将内核密度估计覆盖到图上。在下图中,我们看到鲍鱼的体重对其头数的影响最大。实际上,壳重量值给它带来了更大的影响。

84d7040d2acd60f68a3bd9578c0149c1ad18cb7d

图为:小提琴贡献值图(决策树)

上述情节虽然有洞察力,但仍不能充分了解具体变量如何影响鲍鱼的头数。相反,我们可以绘制给定特征对其值的影响程度。如果我们绘制壳重量与其影响程度的关系,我们可以获得增加壳重量会增加影响程度的见解。

8fc3d413580162b33b927f0fe4dee1274f8ec158

图为:贡献值与壳重的关系(决策树)

我们可以看到,减轻壳重量与影响程度具有非线性,非单调关系。

扩展到随机森林

确定特征贡献的过程当然可以通过对森林中所有树木的变量进行平均贡献来扩展到随机森林。

af1e6cfc21031d9c24692814eaae0a7a66426998

图为:小提琴贡献值图(随机森林)

因为随机森林本身是随机的,所以在给定的壳体重量上有贡献的变化。然而,平滑的黑色趋势线显示出增长趋势。与决策树一样,我们看到增加的壳体重量对应于更高的贡献值。

a2f5fe2afae9f3ee0e80bfdb841b986e70f92604

图为:贡献值与壳重的关系(随机森林)

再次,我们可能会看到复杂的,非单调的趋势。直径似乎在约0.45的贡献下降,在0.30.6附近的贡献峰值。除此之外,直径和环数之间似乎有越来越大的关系。

05ae6b390a5ddccb1a6a5b4abc6a2f1434275131

图为:贡献值与直径的关系(随机森林)

分类

我们已经表明,回归树的特征贡献值来源于它在连续分裂中的变化。我们可以将其扩展到二项式和多项式中分类,而不是看每个子集中某个类的观察的百分比。特征的贡献值是观察从该特征引起的百分比的总体变化。

这个例子更容易解释。假设我们试图预测性别,即鲍鱼是公还是母,婴幼儿还是成年?

2712a86a7389b4f4784f2b94d6f45e14521ca5f0

图为:多项式分类的决策树路径

每个节点具有3个值,子集中的雌雄,雄和婴幼儿的百分比。内脏重量为0.1和壳重量为0.1的鲍鱼最终落在最左侧的叶中(概率为0.082,0.1710.747)。

内脏重量对婴儿鲍鱼的贡献值是:

(0.59 - 0.315) = 0.275

壳重量的贡献值是:

(0.747 - 0.59) = 0.157

我们可以为每个贡献值类绘制一个贡献图。以下是我们为婴儿类分析的结果。

78ace1536d129121490a8199e91ebdf8989274a5

图为:观察的婴儿小提琴的贡献值图(多类决策树)

和以前一样,我们还可以绘制每个特征类的贡献。随着壳重量的增加,鲍鱼是母的几率就增加,而作为婴儿的几率则下降。对于公的,当壳重超过0.5时,几率最初增加,然后减小。

03777824b07905c0c36ee97c78a7f59a4656b11a

图为:每个特征类的贡献值与壳体重量(随机森林)

总结:

我们可以在这篇博客中看到,通过查看路径,我们可以更深入地了解决策树和随机森林。这是特别有用的,因为随机森林是一个非常难理解的结构,通常是高性能的机器学习模型。为了满足业务需求,我们不仅需要提供高预测性的模型,而且也是一个可以解释的模型。也就是说,我们不想提供一个黑盒子。这个要求其实很重要,因为我们的模型可以合规性的传递下去,让更多的人使用。

本文由北邮@爱可可-爱生活老师推荐,@阿里云云栖社区组织翻译。

文章原标题《interpreting-decision-trees-and-random-forests

作者:Greg Tam Pivotal工程师  博客地址: http://engineering.pivotal.io/authors/gtam/

译者:袁虎 审阅:

文章为简译,更为详细的内容,请查看原文

相关文章
|
3月前
|
机器学习/深度学习 存储 算法
决策树和随机森林在机器学习中的应用
在机器学习领域,决策树(Decision Tree)和随机森林(Random Forest)是两种非常流行且强大的分类和回归算法。它们通过模拟人类决策过程,将复杂的数据集分割成易于理解和处理的子集,从而实现对新数据的准确预测。
105 10
|
3月前
|
机器学习/深度学习 数据采集 监控
探索机器学习:从数据到决策
【9月更文挑战第18天】在这篇文章中,我们将一起踏上一段激动人心的旅程,穿越机器学习的世界。我们将探讨如何通过收集和处理数据,利用算法的力量来预测未来的趋势,并做出更加明智的决策。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和思考方式。
|
3月前
|
机器学习/深度学习 算法 Python
从菜鸟到大师:一棵决策树如何引领你的Python机器学习之旅
【9月更文挑战第9天】在数据科学领域,机器学习如同璀璨明珠,吸引无数探索者。尤其对于新手而言,纷繁复杂的算法常让人感到迷茫。本文将以决策树为切入点,带您从Python机器学习的新手逐步成长为高手。决策树以其直观易懂的特点成为入门利器。通过构建决策树分类器并应用到鸢尾花数据集上,我们展示了其基本用法及效果。掌握决策树后,还需深入理解其工作原理,调整参数,并探索集成学习方法,最终将所学应用于实际问题解决中,不断提升技能。愿这棵智慧之树助您成为独当一面的大师。
45 3
|
3月前
|
机器学习/深度学习 算法 Python
决策树下的智慧果实:Python机器学习实战,轻松摘取数据洞察的果实
【9月更文挑战第7天】当我们身处数据海洋,如何提炼出有价值的洞察?决策树作为一种直观且强大的机器学习算法,宛如智慧之树,引领我们在繁复的数据中找到答案。通过Python的scikit-learn库,我们可以轻松实现决策树模型,对数据进行分类或回归分析。本教程将带领大家从零开始,通过实际案例掌握决策树的原理与应用,探索数据中的秘密。
49 1
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【白话机器学习】算法理论+实战之决策树
【白话机器学习】算法理论+实战之决策树
|
4月前
|
机器学习/深度学习 算法 自动驾驶
揭秘机器学习模型的决策之道
【8月更文挑战第22天】本文将深入浅出地探讨机器学习模型如何从数据中学习并做出预测。我们将一起探索模型背后的数学原理,了解它们是如何被训练以及如何对新数据进行预测的。文章旨在为初学者提供一个清晰的机器学习过程概述,并启发读者思考如何在自己的项目中应用这些技术。
|
4月前
|
机器学习/深度学习 算法 搜索推荐
基于机器学习的用户行为分析:深入洞察与精准决策
【8月更文挑战第3天】基于机器学习的用户行为分析为企业提供了深入了解用户需求、优化产品设计和制定精准营销策略的有力工具。随着人工智能和大数据技术的不断发展,用户行为分析将更加智能化和个性化。未来,我们可以期待更加高效、精准的机器学习算法和模型的出现,以及更多创新性的应用场景的拓展。同时,也需要关注数据隐私和安全性问题,确保用户数据的安全和合规使用。
|
4月前
|
机器学习/深度学习 数据可视化 算法
决策树VS世界:掌握Python机器学习中的这棵树,决策从此不再迷茫
【8月更文挑战第2天】在数据驱动时代,决策树作为一种直观且易于解释的机器学习方法,因其强大的分类与回归能力备受青睐。本文介绍决策树的基础概念:通过属性测试划分数据,优化选择以提高预测准确度。使用Python的scikit-learn库,我们演示了如何加载鸢尾花数据集,构建并训练决策树模型,评估其准确性,以及利用`plot_tree`函数可视化决策过程,从而更好地理解模型的工作原理。掌握这些技能,你将在面对复杂决策时更加自信。
31 2
|
4月前
|
机器学习/深度学习 算法 Python
决策树下的智慧果实:Python机器学习实战,轻松摘取数据洞察的果实
【8月更文挑战第3天】在数据的海洋中探寻真知,决策树犹如智慧之树,以其直观易懂的强大功能,引领我们逐步缩小决策范围,轻松获取数据洞察。本篇将带您踏上Python机器学习之旅,从理解决策树为何受青睐开始,通过scikit-learn库实现鸢尾花数据集分类,解析其决策机制,并掌握调参技巧,最终优化模型性能,共同摘取数据科学的甜美果实。
52 1
|
14天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
50 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型

热门文章

最新文章