spark(1.1) mllib 原始碼分析(三)-決策樹
本文主要以mllib 1.1版本為基礎,分析決策樹的基本原理與原始碼
一、基本原理
二、原始碼分析
1、決策樹構造
指定決策樹訓練資料集與策略(Strategy)通過train函式就能得到決策樹模型DecisionTreeModel
決策樹策略包含了:algo(演算法型別:分類、迴歸),impurity(資訊增益計算演算法)、maxDepth(數最大深度)、
numClassesForClassification(數分類分支數目,為2就是二叉數),maxBins(特徵變數最大的分類數目限制)、
quantileCalculationStrategy(分位數計算方法)、categoricalFeaturesInfo(每個特徵的分類數目)
2、模型訓練
(1)DecisionTree的模型訓練函式train主要包含了findSplitsBins、findBestSplits、DecisionTreeModel三部分(入下圖所示,為了方便分析,不重要的程式碼做了刪減)
步驟一:findSplitsBins找出資料集中每個變數(Features)對應的所有分裂方式
步驟二:findBestSplits通過計算資訊增益來尋找每個節點的最佳的分裂點
步驟三:DecisionTreeModel構造決策樹模型
相關推薦
spark(1.1) mllib 原始碼分析(三)-決策樹
本文主要以mllib 1.1版本為基礎,分析決策樹的基本原理與原始碼 一、基本原理 二、原始碼分析 1、決策樹構造 指定決策樹訓練資料集與策略(Strategy)通過train函式就能得到決策樹模型DecisionTreeModel 決策樹策略包含
spark mllib原始碼分析之隨機森林(Random Forest)(三)
6. 隨機森林訓練 6.1. 資料結構 6.1.1. Node 樹中的每個節點是一個Node結構 class Node @Since("1.2.0") ( @Since("1.0.0") val id: Int, @S
《深入理解Spark-核心思想與原始碼分析》讀書筆記(1)
前兩章 第一章主要是講如何安裝和配置spark,以及如何匯入spark原始碼除錯執行;第二章主要講的是上次那本書《Spark快速大資料分析》的內容,科普一下spark的知識。 第三章 SparkContext的初始化 1. 概述 這章的主要內容就
大資料之Spark(三)--- Spark核心API,Spark術語,Spark三級排程流程原始碼分析
一、Spark核心API ----------------------------------------------- [SparkContext] 連線到spark叢集,入口點. [HadoopRDD] extends RDD 讀取hadoop
Mosquitto-1.5.4原始碼分析,PUBLISH的實現及函式跳轉關係
客戶端向伺服器傳送資料包(packet)時,首先將資料包放到改傳送佇列中,並不真實發送資料,而是傳送資料就緒訊號,等待loop事件迴圈呼叫的函式db__message_write根據網路連線情況來處理髮送請求;該佇列為單鏈表儲存結構,每次有新資料包需要傳送時,將新資料包插入到連結串列尾部;真正傳
JDK 1.8 LinkedList原始碼分析
概述 Collection是最基本的集合介面,一個Collection代表一組Object的集合,這些Object被稱作Collection的元素。Collection是一個介面,用以提供規範定義,不能被例項化使用。 1.Set(無序、不可重複) Set集合
1.1spring啟動原始碼分析(ClassPathXmlApplicationContext)
spring啟動原始碼分析(ClassPathXmlApplicationContext) Applicantioncontext uml圖 ClassPathXmlApplicationContext xml 配置檔案專案中的路徑 FileSystemXml
coreutils4.5.1 paste.c原始碼分析
coreutils4.5.1 paste.c原始碼分析 今天天冷,幾天沒出門了。把新買的電熱取暖器放在電腦房,然後拉上窗簾,開始讀原始碼,學習linus,很好玩。 paste這個命令有啥應用場景呢?先學習使用: head -n 100 a1 a2 ==> a1 <== thi
coreutils-4.5.1 head.c原始碼分析03
今天真是把head.c看懂了。 今天天真冷,我網上購了電熱取暖器,沒送到。但邊聽音樂,邊讀程式碼,感覺也很愜意。 看程式碼不能著急,要慢慢看,也許就像有人講的,郝培強講的,一開始要慢,開始慢,後面才能越看越快。是的。看程式碼,開始要慢。不要著急。 head有幾個選項 -n 行數 -c 位元組數 -q
coreutils4.5.1 dirname.c原始碼分析3
老調重彈,每次先按程式碼量排序,從行數少的程式開始讀,總能有所收穫。比如,在dirname.c中,我發現幾條: 第一、函式和括號可以用空格隔開,很奇怪。如 void usage (int status) 在usage與(中有一個空格,我寫了一個測試程式,也驗證了猜想。 第二、對字元取地址,真怪異!
coreutils4.5.1 basename.c原始碼分析3
coreutils4.5.1 basename.c原始碼分析2 前幾天又重新讀了basename.c對其中去掉字尾的那段,終於理解了。現總結如下; static void remove_suffix (char *name, const char *suffix) { char *
coreutils4.5.1 uniq.c原始碼分析1
uniq.c這個檔案其實沒讀懂,不過從程式中發現了幾個支點,下次再細細品。 第一。交換兩行的寫法。 #define SWAP_LINES(A, B) \ do
coreutils4.5.1 expr.c 原始碼分析2
今天又開始讀程式碼。前段時間看演算法分析相關的書,蒐集了不少演算法相關書籍,感覺自己功力太淺,還是讀讀原始碼吧。好在,讀小說,養成了快速讀書的好習慣,再加不求甚解,把快速+不求甚解利用到讀程式碼上,感覺也很有意思。 今天重點翻了翻expr.c,這個原始碼,很有特色,首先啟用debug功能。 文件中有
Spark MLlib原始碼分析—Word2Vec原始碼詳解
以下程式碼是我依據SparkMLlib(版本1.6)中Word2Vec原始碼改寫而來,基本算是照搬。此版Word2Vec是基於Hierarchical Softmax的Skip-gram模型的實現。 在決定讀懂原始碼前,博主建議讀者先看一下《Word2Vec_
spark mllib原始碼分析之二分類邏輯迴歸evaluation
在邏輯迴歸分類中,我們評價分類器好壞的主要指標有精準率(precision),召回率(recall),F-measure,AUC等,其中最常用的是AUC,它可以綜合評價分類器效能,其他的指標主要偏重一些方面。我們介紹下spark中實現的這些評價指標,便於使用sp
9.1 IIC驅動原始碼分析
學習目標:分析linux核心原始碼下的i2c匯流排驅動 drivers/i2c/busses/i2c-s3c2410.c 和 driver/i2c/chips/eeprom.c 裝置驅動; 一、i2c驅動框架 在drivers/i2c/目錄下檢視檔案結構可看到: 其中, 1)Busses: I
spark mllib原始碼分析之隨機森林(Random Forest)(二)
4. 特徵處理 這部分主要在DecisionTree.scala的findSplitsBins函式,將所有特徵封裝成Split,然後裝箱Bin。首先對split和bin的結構進行說明 4.1. 資料結構 4.1.1. Split cl
spark mllib原始碼分析之DecisionTree與GBDT
我們在前面的文章講過,在spark的實現中,樹模型的依賴鏈是GBDT-> Decision Tree-> Random Forest,前面介紹了最基礎的Random Forest的實現,在此基礎上我們介紹Decision Tree和GBDT的實現
spark mllib原始碼分析之L-BFGS(一)
1. 使用 spark給出的example中涉及到LBFGS有兩個,分別是LBFGSExample.scala和LogisticRegressionWithLBFGSExample.scala,第一個是直接使用LBFGS直接訓練,需要指定一系列優化引數,優
java 1.8 ThreadLocal原始碼分析
1. 關於ThreadLocal 當使用ThreadLocal維護變數時,ThreadLocal為每個使用該變數的執行緒提供獨立的變數副本,所以每一個執行緒都可以獨立地改變自己的副本,而不會影響其它執行緒所對應的副本。從執行緒的角度看,目標變數就象是執