Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Decision Trees in Apache Spark (Apache Spark中的决策树)

Decision Trees in Apache Spark (Apache Spark中的决策树)

作者头像
Steve Wang
发布于 2018-02-05 09:49:12
发布于 2018-02-05 09:49:12
1.2K00
代码可运行
举报
文章被收录于专栏:从流域到海域从流域到海域
运行总次数:0
代码可运行

Decision Trees in Apache Spark

原文作者:Akash Sethi 原文地址:https://dzone.com/articles/decision-trees-in-apache-spark 译者微博:@从流域到海域 译者博客:blog.csdn.blog/solo95 本文同样刊载于腾讯云+:https://cloud.tencent.com/developer/article/1034616

Apache Spark中的决策树

决策树是在顺序决策问题进行分类,预测和促进决策的有效方法。决策树由两部分组成:

  1. 决策(Desion)
  2. 结果(Outcome)

决策树包含三种类型的节点:

  1. 根节点(Root node):包含所有数据的树的顶层节点。
  2. 分割节点(Splitting node):将数据分配给子组(subgroup)的节点。
  3. 终端节点(Terminal node):最终决定(即结果)。

(分割节点(Splitting node),仅就离散数学中的树的概念而言,就是指分支节点,下面的翻译为了强调”分支”有时会翻译成分支结点,译者注)

为了抵达终端结点或者说获得结果,该过程从根节点开始。根据在根节点上做出的决定,选择分支节点。基于在分支节点上做出的决定,选择下一个子分支节点。这个过程继续下去,直到我们到达终端节点,终端节点的值是我们的结果。

Apache Spark中的决策树

Apache Spark中没有决策树的实现可能听起来很奇怪。那么从技术上来说呢 在Apache Spark中,您可以找到一个随机森林算法的实现,该算法实现可以由用户指定树的数量。因此,Apache Spark使用一棵树来调用随机森林。

在Apache Spark中,决策树是在特征空间上执行递归二进制分割的贪婪算法。树给每个最底部(即叶子结点)分区预测了相同的标签。为了最大化树的节点处的信息增益,通过在一组可能的分支中选择其中的最佳分割来贪婪地选择每个分支结点。

节点不纯度(impurity)是节点上标签一致性的度量。目前的实施提供了两种不纯的分类方法(Gini杂质和熵(Gini impurity and entropy))。

停止规则

在满足以下列条件之一的情况下,在节点处停止递归树构建(即只要满足一个就停止,译者注):

  1. 节点深度等于训练用的 maxDepth 参数。
  2. 没有候选的分割结点导致信息收益大于 minInfoGain
  3. 没有候选的分割结点去产生(至少拥有训练minInstancesPerNode实例)的子节点 。

有用的参数

  • algo:它可以是分类或回归。
  • numClasses:分类类的数量。
  • maxDepth:根据节点定义树的深度。
  • minInstancesPerNode:对于要进一步拆分的节点,其每个子节点必须至少接收到这样的训练实例数(即实例数必须等于这个参数)。
  • minInfoGain:对于一个节点进一步拆分,必须满足拆分后至少提高这么多信息量。
  • maxBins:离散连续特征时使用的bin数。

准备决策树的训练数据

您不能直接向决策树提供任何数据。它需要一种特殊的格式来提供。您可以使用 HashingTF 技术将训练数据转换为标记数据,以便决策树可以理解。这个过程也被称为数据的标准化。

(数据)供给和获得结果

一旦数据被标准化,您就可以提供相同的决策树算法进来行分类。但在此之前,您需要分割数据以用于训练和测试目的; 为了测试的准确性,你需要保留一部分数据进行测试。你可以像这样提供数据: ​

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val splits = data.randomSplit(Array(0.7, 0.3))
val (trainingData, testData) = (splits(0), splits(1))

// Train a DecisionTree model.
//  Empty categoricalFeaturesInfo indicates all features are continuous.

val numClasses = 2
val categoricalFeaturesInfo = Map[Int, Int]()
val impurity = "gini"
val maxDepth = 5
val maxBins = 32
val model = DecisionTree.trainClassifier(trainingData, numClasses, categoricalFeaturesInfo,
impurity, maxDepth, maxBins)

在这里,数据是我的标准化输入数据,为了训练和测试目的,我将其分成7:3的比例。我们正在使用最大深度的为5"gini" 杂质(“gini” impurity)。

一旦模型生成,您也可以尝试预测其他数据的分类。但在此之前,我们需要验证最近生成的模型的分类准确性。您可以通过计算"test error"来验证其准确性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Evaluate model on test instances and compute test error
val labelAndPreds = testData.map { point =>
  val prediction = model.predict(point.features)
  (point.label, prediction)
}

val testErr = labelAndPreds.filter(r => r._1 != r._2).count().toDouble / testData.count()
println("Test Error = " + testErr)

就是这样!你可以在这里查看一个正在运行的例子。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年01月31日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【技术分享】决策树分类
所谓决策树,顾名思义,是一种树,一种依托于策略抉择而建立起来的树。机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。 树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,从根节点到叶节点所经历的路径对应一个判定测试序列。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。
腾讯云TI平台
2019/12/06
1.4K0
【机器学习】--决策树和随机森林
决策树是一种非线性有监督分类模型,随机森林是一种非线性有监督分类模型。线性分类模型比如说逻辑回归,可能会存在不可分问题,但是非线性分类就不存在。 二、具体原理
LhWorld哥陪你聊算法
2018/09/13
1K0
【机器学习】--决策树和随机森林
【Spark Mllib】决策树,随机森林——预测森林植被类型
决策树有训练分类模型的函数trainClassifier和回归模型的函数trainRegressor,这里我们使用trainClassifier。 我们来看看trainClassifier都需要什么参数:
小爷毛毛_卓寿杰
2019/02/13
1.6K0
【技术分享】随机森林分类
Bagging采用自助采样法(bootstrap sampling)采样数据。给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时,样本仍可能被选中,这样,经过m次随机采样操作,我们得到包含m个样本的采样集。
腾讯云TI平台
2019/12/11
1.8K0
MLlib中的Random Forests和Boosting
【编者按】本文来自Databricks公司网站的一篇博客文章,由Joseph Bradley和Manish Amde撰写。此外,Databricks是由Apache Spark的创始人建立的,成立于2013年年中,目前团队人员均是开源圈子内的重量级人物,他们都热衷于"增值开源软件": 任职CEO的Ion Stoica是UC Berkeley计算机教授、AMPLab联合创始人,同时也是Conviva公司的联合创始人。 CTO Matei Zaharia是Apache Spark的创作者,同时也是麻省理工学院计
用户1737318
2018/06/05
3620
Python手写决策树并应对过度拟合问题
决策树是一种用于监督学习的算法。它使用树结构,其中包含两种类型的节点:决策节点和叶节点。决策节点通过在要素上询问布尔值将数据分为两个分支。叶节点代表一个类。训练过程是关于在具有特定特征的特定特征中找到“最佳”分割。预测过程是通过沿着路径的每个决策节点回答问题来从根到达叶节点。
deephub
2020/11/25
7800
Python手写决策树并应对过度拟合问题
决策树(Decision Tree)CART算法
Classification And Regression Tree,即分类回归树算法,简称CART算法,它是决策树的一种实现,通常决策树主要有三种实现,分别是ID3算法,CART算法和C4.5算法。
Ai学习的老章
2019/04/08
3.1K0
决策树(Decision Tree)CART算法
大数据技术之_19_Spark学习_08_Spark 机器学习_02_凸优化算法 + 线性回归算法 + FPGrowth 关联规则算法 + 决策树 + 随机森林算法
不严格的说,凸优化就是在标准优化问题的范畴内,要求目标函数和约束函数是凸函数的一类优化问题。
黑泽君
2019/05/14
9200
大数据技术之_19_Spark学习_08_Spark 机器学习_02_凸优化算法 + 线性回归算法 + FPGrowth 关联规则算法 + 决策树 + 随机森林算法
Tuning a Decision Tree model调试决策树模型
If we use just the basic implementation of a Decision Tree, it will probably not fit very well.Therefore, we need to tweak the parameters in order to get a good fit. This is very easy and won't require much effort.
到不了的都叫做远方
2019/11/28
1.3K0
利用随机森林算法实现Bank风险预测
源码分享及数据集分享:https://github.com/luo948521848/BigDatas
Java架构师必看
2021/07/22
5790
PYTHON用决策树分类预测糖尿病和可视化实例
决策树是对例子进行分类的一种简单表示。它是一种有监督的机器学习技术,数据根据某个参数被连续分割。决策树分析可以帮助解决分类和回归问题。
拓端
2022/03/09
9700
PYTHON用决策树分类预测糖尿病和可视化实例
【技术分享】梯度提升树分类
Boosting是一类将弱学习器提升为强学习器的算法。这类算法的工作机制类似:先从初始训练集中训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注。 然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器的数目达到事先指定的值T,最终将这T个基学习器进行加权结合。
腾讯云TI平台
2019/12/25
1.7K0
Doing basic classifications with Decision Trees使用决策树做基本分类
In this recipe, we will perform basic classifications using Decision Trees. These are very nice models because they are easily understandable, and once trained in, scoring is very simple.
到不了的都叫做远方
2019/11/27
4110
【Python机器学习实战】决策树和集成学习(二)——决策树的实现
摘要:上一节对决策树的基本原理进行了梳理,本节主要根据其原理做一个逻辑的实现,然后调用sklearn的包实现决策树分类。
冬夜先生
2021/09/08
9770
从零开始在Python中实现决策树算法
原文地址:https://machinelearningmastery.com/implement-decision-tree-algorithm-scratch-python/
Steve Wang
2018/02/02
3.4K1
从零开始在Python中实现决策树算法
决策树的构建原理
决策树(Decision Tree)是一种简单但是广泛使用的分类预测模型。通过训练数据构建决策树,可以高效的对未知的数据进行分类并作出决策。决策树有两大优点,一是决策树模型可以读性好,具有描述性,有助于人工分析;二是效率高,决策树只需要一次构建,反复使用,但是预测的最大计算次数不能超过决策树的深度。一个简单的决策树例子如下所示:
SYSU星空
2022/05/05
1.7K0
决策树的构建原理
决策树(Decision Tree,DT)
Quinlan在1986年提出的ID3算法、1993年提出的C4.5算法 Breiman等人在1984年提出的CART算法
Michael阿明
2020/07/13
1.8K0
决策树(Decision Tree,DT)
决策树:什么是基尼系数(“杂质 增益 指数 系数”辨析)「建议收藏」
如果你查看scikit-learn中DecisionTreeClassifier的文档,你会看到这样的参数:
全栈程序员站长
2022/11/08
4.3K0
独家 | 手把手教你推导决策树算法
决策树是最重要的机器学习算法之一,其可被用于分类和回归问题。本文中,我们将介绍分类部分。
数据派THU
2020/06/12
7050
使用Python中从头开始构建决策树算法
决策树(Decision Tree)是一种常见的机器学习算法,被广泛应用于分类和回归任务中。并且再其之上的随机森林和提升树等算法一直是表格领域的最佳模型,所以本文将介绍理解其数学概念,并在Python中动手实现,这可以作为了解这类算法的基础知识。
deephub
2023/08/30
3920
使用Python中从头开始构建决策树算法
推荐阅读
相关推荐
【技术分享】决策树分类
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验