spark机器学习:决策树算法

代码空间 代码空间     2022-09-07     609

关键词:

1. 决策树基本知识

决策树就是通过一系列规则对数据进行分类的一种算法,可以分为分类树和回归树两类,分类树处理离散变量的,回归树是处理连续变量。

样本一般都有很多个特征,有的特征对分类起很大的作用,有的特征对分类作用很小,甚至没有作用。如决定是否对一个人贷款是,这个人的信用记录、收入等就是主要的判断依据,而性别、婚姻状况等等就是次要的判断依据。决策树构建的过程,就是根据特征的决定性程度,先使用决定性程度高的特征分类,再使用决定性程度低的特征分类,这样构建出一棵倒立的树,就是我们需要的决策树模型,可以用来对数据进行分类。

决策树学习的过程可以分为三个步骤:1)特征选择,即从众多特征中选择出一个作为当前节点的分类标准;2)决策树生成,从上到下构建节点;3)剪枝,为了预防和消除过拟合,需要对决策树剪枝。

2. 决策树算法

主要的决策树算法包括ID3、C4.5和CART。

ID3把信息增益作为选择特征的标准。由于取值较多的特征(如学号)的信息增益比较大,这种算法会偏向于取值较多的特征。而且该算法只能用于离散型的数据,优点是不需要剪枝。

C4.5和ID3比较类似,区别在于使用信息增益比替代信息增益作为选择特征的标准,因此比ID3更加科学,并且可以用于连续型的数据,但是需要剪枝。

CART(Classification And Regression Tree)采用的是Gini作为选择的标准。Gini越大,说明不纯度越大,这个特征就越不好。

3. MLlib的决策树算法

MLlib的决策树算法使用的随机森林RandomForest的方法,不过并不是真正的随机森林,因为实际上只有一棵决策树。

直接上代码:

import org.apache.log4j.{ Level, Logger }
import org.apache.spark.{ SparkConf, SparkContext }
import org.apache.spark.mllib.tree.DecisionTree
import org.apache.spark.mllib.tree.model.DecisionTreeModel
import org.apache.spark.mllib.util.MLUtils

/**
  * Created by Administrator on 2017/7/6.
  */
object DecisionTreeTest {

  def main(args: Array[String]): Unit = {

    // 设置运行环境
    val conf = new SparkConf().setAppName("Decision Tree")
      .setMaster("spark://master:7077").setJars(Seq("E:\\Intellij\\Projects\\MachineLearning\\MachineLearning.jar"))
    val sc = new SparkContext(conf)
    Logger.getRootLogger.setLevel(Level.WARN)

    // 读取样本数据并解析
    val dataRDD = MLUtils.loadLibSVMFile(sc, "hdfs://master:9000/ml/data/sample_dt_data.txt")
    // 样本数据划分,训练样本占0.8,测试样本占0.2
    val dataParts = dataRDD.randomSplit(Array(0.8, 0.2))
    val trainRDD = dataParts(0)
    val testRDD = dataParts(1)

    // 决策树参数
    val numClasses = 5
    val categoricalFeaturesInfo = Map[Int, Int]()
    val impurity = "gini"
    val maxDepth = 5
    val maxBins = 32
    // 建立决策树模型并训练
    val model = DecisionTree.trainClassifier(trainRDD, numClasses, categoricalFeaturesInfo,
      impurity, maxDepth, maxBins)

    // 对测试样本进行测试
    val predictionAndLabel = testRDD.map { point =>
      val score = model.predict(point.features)
      (score, point.label, point.features)
    }
    val showPredict = predictionAndLabel.take(50)
    println("Prediction" + "\t" + "Label" + "\t" + "Data")
    for (i <- 0 to showPredict.length - 1) {
      println(showPredict(i)._1 + "\t" + showPredict(i)._2 + "\t" + showPredict(i)._3)
    }

    // 误差计算
    val accuracy = 1.0 * predictionAndLabel.filter(x => x._1 == x._2).count() / testRDD.count()
    println("Accuracy = " + accuracy)

    // 保存模型
    val ModelPath = "hdfs://master:9000/ml/model/Decision_Tree_Model"
    model.save(sc, ModelPath)
    val sameModel = DecisionTreeModel.load(sc, ModelPath)

  }

运行结果:

机器学习---算法---决策树

.../blog.csdn.net/qq_43208303/article/details/84837412 决策树是一种机器学习的方法。决策树的生成算法有ID3,C4.5和CART等。决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶... 查看详情

机器学习算法学习02:决策树的学习以及应用决策树解决cora数据集论文分类问题(代码片段)

机器学习算法学习02:决策树的学习以及应用决策树解决Cora数据集论文分类问题文章目录机器学习算法学习02:决策树的学习以及应用决策树解决Cora数据集论文分类问题1.前言2.算法分析2.1算法概述2.2算法优化3.算法代码3.... 查看详情

机器学习决策树

1、决策树简介1.1决策树概述决策树算法是一种基于树形结构的分类算法,它能从给定的无序的训练样本中,提炼出树型的分类模型,树形中包含判断模块和终止模块。它是一种典型的分类算法,首先对数据进行处理,利用归纳... 查看详情

机器学习--决策树分类算法及应用

1.决策树分类算法原理1.1概述决策树(decisiontree)——是一种被广泛使用的分类算法。相比贝叶斯算法,决策树的优势在于构造过程不需要任何领域知识或参数设置在实际应用中,对于探测式的知识发现,决策树更加适用1.2算法... 查看详情

机器学习算法实践:决策树(decisiontree)(转载)

  前言     最近打算系统学习下机器学习的基础算法,避免眼高手低,决定把常用的机器学习基础算法都实现一遍以便加深印象。本文为这系列博客的第一篇,关于决策树(DecisionTree)的算法实现,文中我将对决策树种... 查看详情

机器学习算法整理决策树

决策树的训练与测试如何切分特征(选择节点)衡量标准-熵 信息增益决策树构造实例信息增益:表示特征X使得类Y的不确定性减小的程度。(分类后的专一性,希望分类后的结果是同类在一起)Outlook=sunny时,熵值=(-2/5)*log(2/... 查看详情

机器学习算法:决策树算法api

学习目标知道决策树算法api的具体使用classsklearn.tree.DecisionTreeClassifier(criterion=’gini’,max_depth=None,random_state=None)criterion特征选择标准"gini"或者"entropy",前者代表基尼系数,后者代表信息 查看详情

机器学习实战精读--------决策树

感觉自己像个学走路的孩子,每一步都很吃力和认真!机器根据数据集创建规则,就是机器学习。决策树:从数据集合中提取一系列规则,适用于探索式的知识发现。决策树本质:通过一系列规则对数据进行分类的过程。决策树... 查看详情

ai机器学习-决策树算法-概念和学习过程

1.概念决策树是通过一系列规则对数据进行分类的过程,它提供一种在什么条件下会得到什么值的类似规则的方法。决策树分为分类树和回归树两种,分类树对离散变量做决策树,回归树对连续变量做决策树。分类决策树模型是... 查看详情

机器学习算法决策树-6prism

..._CSDN博客-数据分析师领域博主目前进度:第四部分【机器学习算法】PRISM决策规则算法如何使用分类树来进行分类预测:如果我们建立好决策树,那我们要怎么进行分类规则的预测呢。一般有两种方法。第 查看详情

机器学习算法之决策树

一.简介  决策树的一个重要任务是理解数据中蕴含的知识信息。    决策树优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。    缺点:可能产生过... 查看详情

机器学习——决策树(下)算法实现

Decisiontree在机器学习(5)——决策树(上)原理中介绍了决策树的生成和剪枝原理。介绍了CART,ID3,C4.5等算法的算法流程,其中CART算法可以实现回归和分类,是基于基尼不纯度实现的,这里并未实... 查看详情

机器学习-决策树(decisiontree)算法

学习彭亮《深度学习基础介绍:机器学习》课程[toc]决策树概念决策树是一种用于监督学习的层次模型,由此,局部区域通过少数几步递归分裂决定。决策树是一个类似流程图的树结构:其中每个结点表示在一个... 查看详情

机器学习算法

分类算法: 决策树:    对每一节点,根据feature进行分类。选择信息增益最大的feature,也就是选择将不确定性降低最多的feature。随机森林:多个决策树的投票机制来改善决策树,假设有m棵决策树,要有m个一... 查看详情

spark机器学习解析下集

上次我们讲过《Spark机器学习(上)》,本文是Spark机器学习的下部分,请点击回顾上部分,再更好地理解本文。1.机器学习的常见算法常见的机器学习算法有:l   构造条件概率:回归分析和统计分类;l   ... 查看详情

机器学习二——分类算法--决策树decisiontree

机器学习算法评估标准:准确率,速度,强壮性(噪音影响较小),可规模性,可解释性。1、决策树 DecisionTree:决策树是一个类似于流程图的树结构,其中每个内部节点表示在一个属性上的测试,每一个分支代表一个属性... 查看详情

机器学习入门之决策树算法

1、什么是决策树(DecisionTree)       决策树是一个类似于流程图的树结构,其中每一个树节点表示一个属性上的测试,每一个分支代表一个属性的输出,每一个树叶节点代表一个类或者类的分布,树的... 查看详情

机器学习实践之决策树算法学习

...37608890/article/details/78731169)。  本文根据最近学习机器学习书籍网络文章的情况,特将一些学习思路做了归纳整理,详情如下.如有不当之处 查看详情