小編給大家分享一下spark mllib中決策樹優缺點是什么,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
可以生成可以理解的規則。
計算量相對來說不是很大。
可以處理連續和種類字段。
決策樹可以清晰的顯示哪些字段比較重要
對連續性的字段比較難預測。
對有時間順序的數據,需要很多預處理的工作。
當類別太多時,錯誤可能就會增加的比較快。
一般的算法分類的時候,只是根據一個字段來分類。
| 出去玩 | 溫度 | 起風 | 下雨 | 濕度 |
| 1 | 1 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 |
| 0 | 0 | 1 | 0 | 0 |
| 1 | 1 | 1 | 0 | 0 |
| 1 | 1 | 0 | 0 | 0 |
| 1 | 1 | 1 | 0 | 0 |
package spark.DT
import org.apache.spark.mllib.tree.DecisionTree
import org.apache.spark.mllib.util.MLUtils
import org.apache.spark.{SparkContext, SparkConf}
/**
* 決策樹使用案例-出去玩
* **********************************決策樹********************************
* 決策樹是一種監督學習,監督學習,就是給定一對樣本,每個樣本都有一組屬性和一個類別,
* 這些類別是事先確定的,那么通過學習得到一個分類器,這個分類器能夠對新出現的對象給
* 出正確的分類.其原理是:從一組無序無規則的因素中歸納總結出符合要求的分類規則.
*
* 決策樹算法基礎:信息熵,ID3
* 信息熵:對事件中不確定的信息的度量.一個事件或屬性中,其信息熵越大,含有的不確定信
* 息越大,對數據分析的計算也越有益.故,信息熵的選擇總是選擇當前事件中擁有最高
* 信息熵的那個屬性作為待測屬性.
* ID3:一種貪心算法,用來構造決策樹.以信息熵的下降速度作為測試屬性的標準,即在每個
* 節點選取還尚未被用來劃分的,具有最高信息增益的屬性作為劃分標準,然后繼續這個過程,
* 直到生成的決策樹能完美分類訓練樣例.
*
* 使用場景:任何一個只要符合 key-value 模式的分類數據都可以根據決策樹進行推斷.
*
* 決策樹用來預測的對象是固定的,叢根到葉子節點的一條特定路線就是一個分類規則,決定
* 一個分類算法和結果.
*
* **********************************決策樹********************************
* Created by eric on 16-7-19.
*/
object DT {
val conf = new SparkConf() //創建環境變量
.setMaster("local") //設置本地化處理
.setAppName("ZombieBayes") //設定名稱
val sc = new SparkContext(conf)
def main(args: Array[String]) {
val data = MLUtils.loadLibSVMFile(sc, "./src/main/spark/DT/DTree.txt")
val numClasses = 2//分類數量
val categorycalFeaturesInfo = Map[Int, Int]()//設定輸入格式
val impurity = "entropy" //設定信息增益計算方式
val maxDepth = 5 //最大深度
val maxBins = 3 //設定分割數據集
val model = DecisionTree.trainClassifier(
data,//輸入數據集
numClasses,//分類數量,本例只有出去,不出去,共兩類
categorycalFeaturesInfo,// 屬性對格式,這里是單純的鍵值對
impurity,//計算信息增益形式
maxDepth,// 樹的高度
maxBins//能夠分裂的數據集合數量
)
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
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中決策樹優缺點是什么”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。