溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

spark mllib中決策樹優(yōu)缺點(diǎn)是什么

發(fā)布時(shí)間:2021-12-16 14:41:18 來源:億速云 閱讀:183 作者:小新 欄目:云計(jì)算

小編給大家分享一下spark mllib中決策樹優(yōu)缺點(diǎn)是什么,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

決策樹的優(yōu)點(diǎn):

  1. 可以生成可以理解的規(guī)則。

  2. 計(jì)算量相對來說不是很大。

  3. 可以處理連續(xù)和種類字段。

  4. 決策樹可以清晰的顯示哪些字段比較重要

決策樹的缺點(diǎn):

  1. 對連續(xù)性的字段比較難預(yù)測。

  2. 對有時(shí)間順序的數(shù)據(jù),需要很多預(yù)處理的工作。

  3. 當(dāng)類別太多時(shí),錯(cuò)誤可能就會增加的比較快。

  4. 一般的算法分類的時(shí)候,只是根據(jù)一個(gè)字段來分類。

出去玩記錄表

出去玩溫度起風(fēng)下雨濕度
11001
01011
00100
11100
11000
11100

運(yùn)行代碼如下

package spark.DT

import org.apache.spark.mllib.tree.DecisionTree
import org.apache.spark.mllib.util.MLUtils
import org.apache.spark.{SparkContext, SparkConf}

/**
  * 決策樹使用案例-出去玩
  * **********************************決策樹********************************
  * 決策樹是一種監(jiān)督學(xué)習(xí),監(jiān)督學(xué)習(xí),就是給定一對樣本,每個(gè)樣本都有一組屬性和一個(gè)類別,
  * 這些類別是事先確定的,那么通過學(xué)習(xí)得到一個(gè)分類器,這個(gè)分類器能夠?qū)π鲁霈F(xiàn)的對象給
  * 出正確的分類.其原理是:從一組無序無規(guī)則的因素中歸納總結(jié)出符合要求的分類規(guī)則.
  *
  * 決策樹算法基礎(chǔ):信息熵,ID3
  * 信息熵:對事件中不確定的信息的度量.一個(gè)事件或?qū)傩灾?,其信息熵越大,含有的不確定信
  *   息越大,對數(shù)據(jù)分析的計(jì)算也越有益.故,信息熵的選擇總是選擇當(dāng)前事件中擁有最高
  *   信息熵的那個(gè)屬性作為待測屬性.
  * ID3:一種貪心算法,用來構(gòu)造決策樹.以信息熵的下降速度作為測試屬性的標(biāo)準(zhǔn),即在每個(gè)
  *   節(jié)點(diǎn)選取還尚未被用來劃分的,具有最高信息增益的屬性作為劃分標(biāo)準(zhǔn),然后繼續(xù)這個(gè)過程,
  *   直到生成的決策樹能完美分類訓(xùn)練樣例.
  *
  * 使用場景:任何一個(gè)只要符合 key-value 模式的分類數(shù)據(jù)都可以根據(jù)決策樹進(jìn)行推斷.
  *
  * 決策樹用來預(yù)測的對象是固定的,叢根到葉子節(jié)點(diǎn)的一條特定路線就是一個(gè)分類規(guī)則,決定
  * 一個(gè)分類算法和結(jié)果.
  *
  * **********************************決策樹********************************
  * Created by eric on 16-7-19.
  */
object DT {
  val conf = new SparkConf()                                     //創(chuàng)建環(huán)境變量
    .setMaster("local")                                             //設(shè)置本地化處理
    .setAppName("ZombieBayes")                              //設(shè)定名稱
  val sc = new SparkContext(conf)

  def main(args: Array[String]) {
    val data = MLUtils.loadLibSVMFile(sc, "./src/main/spark/DT/DTree.txt")

    val numClasses = 2//分類數(shù)量
    val categorycalFeaturesInfo = Map[Int, Int]()//設(shè)定輸入格式
    val impurity = "entropy" //設(shè)定信息增益計(jì)算方式
    val maxDepth = 5 //最大深度
    val maxBins = 3 //設(shè)定分割數(shù)據(jù)集

    val model = DecisionTree.trainClassifier(
      data,//輸入數(shù)據(jù)集
      numClasses,//分類數(shù)量,本例只有出去,不出去,共兩類
      categorycalFeaturesInfo,// 屬性對格式,這里是單純的鍵值對
      impurity,//計(jì)算信息增益形式
      maxDepth,// 樹的高度
      maxBins//能夠分裂的數(shù)據(jù)集合數(shù)量
    )

    println(model.topNode)
    println(model.numNodes)//5
    println(model.algo)//Classification
  }
}
DTree.txt
1 1:1 2:0 3:0 4:1
0 1:1 2:0 3:1 4:1
0 1:0 2:1 3:0 4:0
1 1:1 2:1 3:0 4:0
1 1:1 2:0 3:0 4:0
1 1:1 2:1 3:0 4:0

結(jié)果如下

id = 1, isLeaf = false, predict = 1.0 (prob = 0.6666666666666666), impurity = 0.9182958340544896, split = Some(Feature = 0, threshold = 0.0, featureType = Continuous, categories = List()), stats = Some(gain = 0.31668908831502096, impurity = 0.9182958340544896, left impurity = 0.0, right impurity = 0.7219280948873623)

5

Classification

看完了這篇文章,相信你對“spark mllib中決策樹優(yōu)缺點(diǎn)是什么”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI