决策树(Decision trees)
决策树(Decision trees),是一种逼近离散函数值的方法。它是一种典型的分类方法,首先对 数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。本质 上决策树是通过一系列规则对数据进行分类的过程。
决策树算法构造决策树来发现数据中蕴涵的分类规则。如何构造精度高、规模小的决策树是 决策树算法的核心内容。决策树构造可以分两个过程。首先,决策树的生成:由训练样本集生成 决策树的过程。然后,决策树的剪枝:决策树的剪枝是对上一阶段生成的决策树进行检验、校正 和修下的过程,主要是用新的样本数据集(称为测试数据集)中的数据校验决策树生成过程中产 生的初步规则,将那些影响预衡准确性的分枝剪除。
决策树是一个决策支持工具,它用树形的图或者模型表示决策及其可能的后果,包括随机事件的影响、资源消耗、以及用途。比如在解决多源异构的高速铁路车载设备运营维护数据难以统 一和分析的问题中,结合欧洲铁路对运营维护数据所采用的研究方法及国内目前的研究现状,利 用决策树算法,通过对本体规范后的数据集进行训练,构建高速铁路车载设备的智能维护决策树 模型,故障诊断准确率为 95.23%;为了解决普通信息安全风险评估方法主观性大、建模时间长、 分类正确率低的问题,使用了基于决策树的智能信息安全风险评估方法,该方法利用机器学习中 的决策树分类算法对数据进行分类,由于基于决策树的智能信息安全风险评估方法对数据类别分 布无要求,分类正确率提高了 2 倍,且分类速度快;还有就是针对天文恒星/星系分类问题中,决 策树分类算法结合深度学习强大的特征学习能力,再基于 Spark 高效的数据处理性能,体现出了 在恒星星系分类问题上更高的分类准确率,该算法具有很好的可伸缩性,可以通过增加 Spark 集 群计算节点的数量,来减少分类模型所需的训练时间和增强其对海量天文数据的处理能力,并且, 同时具备强大的特征学习和分类能力。
1 算法介绍
决策树算法共有 5 个步骤组成: 1)树以代表训练样本的单个结点开始。 2)如果样本都在同一个类.则该结点成为树叶,并用该类标记。 3)否则,算法选择最有分类能力的属性作为决策树的当前结点。 4)根据当前决策结点属性取值的不同,将训练样本数据集分为若干子集,每个取值形成一个 分枝,有几个取值形成几个分枝。匀针对上一步得到的一个子集,重复进行先前步骤,递归形成 每个划分样本上的决策树。一旦一个属性出现在一个结点上,就不必在该结点的任何后代考虑它。 5)递归划分步骤仅当下列条件之一成立时停止:条件一,给定结点的所有样本属于同一类; 条件二,没有剩余属性可以用来进一步划分样本.在这种情况下.使用多数表决,将给定的结点 转换成树叶,并以样本中元组个数最多的类别作为类别标记,同时也可以存放该结点样本的类别 分布;条件三,如果某一分枝,没有满足该分支中已有分类的样本,则以样本的多数类创建一个 树叶。
2 演示用例
Gbase UP 采用决策树分类器进行数据分类,根据天气各种影响因素(有无风、有无阳光、温 度)来决定是否出门。是否出门作为要预测的变量,各种影响因素则作为特征列。数据格式如下:


数据格式为 libsvm 格式。第一列是标签,后面的列则是特征。
UP 决策树算法示例如下:
# 创建模型 call upextdb.create_model( 'dtree_model', 'decisionTree', '/up/sparkml/data/dt/dt.txt','/up/sparkml/data/dt/dt_evaluate.txt'); # 设置训练和评估参数 call upextdb.add_train_setting('dtree_model','numClasses','2' ); call upextdb.add_train_setting('dtree_model','impurity','entropy' ); call upextdb.add_train_setting('dtree_model','maxDepth','5' ); call upextdb.add_train_setting('dtree_model','maxBins','3' ); # 训练 call upextdb.train_model('dtree_model'); # 评估 call upextdb.evaluate_model('dtree_model'); # 预测 call upextdb.predict('dtree_model', '/up/sparkml/data/dt/dt_predict.txt', 'spark_ml.t_dt_predict');
要预测的数据如下:
[gbase@node2 mllib]$ hdfs dfs -cat /up/sparkml/data/dt/dt_predict.txt 0 0 0 0 1 1 1 1 1 0 1 0 1 1 0 1
预测的结果如下:
gbase> select * from spark_ml.t_dt_predict; +----------------+ | prediction | +-----------------+ | 0 | | 1 | | 0 | | 0 | +-----------------+




