xgb 切分點選擇

2021-09-24 13:39:24 字數 1250 閱讀 8456

xgboost是序列生成cart樹,但是xgboost在處理特徵時可以做到並行處理,xgboost並行原理體現在最優切分點的選擇,假設樣本資料共m個特徵,對於某一輪cart樹的構建過程中,選擇最佳切分點演算法如下圖:

1. 紅色框表示根據每個特徵大小對訓練資料進行排序,儲存為block結構,block個數與特徵數量相等。

2. 綠色寬表示對每個block結構選擇最佳特徵切分點 ,節點切分標準是目標函式下降的程度,目標函式含義可參考上文 。

3. 黑色框表示比較每個block結構的最佳特徵切分點的目標函式下降的增益,選擇最佳切分點。

2. 切分點演算法之貪婪演算法

每乙個block結構的切分點演算法思路是相同的,因此,我重點介紹某一塊block結構的切分點演算法。

xgboost分位點演算法:根據特徵對樣本資料進行排序,然後特徵從小到大進行切分,比較每次切分後的目標函式大小,選擇下降最大的節點作為該特徵的最優切分點。最後比較不同block塊結構最優切分點的目標函式下降值,選擇下降最大的特徵作為最優切分點。

流程圖如下:

【例】下表表示樣本的某一列特徵數值

根據特徵大小對樣本重新排序:

貪婪演算法切分節點:

紅箭頭表示每一次的切分節點,選擇目標函式下降最大的點作為切分節點。

3. 切分點演算法之分位點演算法

若特徵是連續值,按照上述的貪婪演算法,運算量極大 。當樣本量足夠大的時候,使用特徵分位點來切分特徵。流程圖如下:

【例】下表表示樣本的某一列特徵數值,用三分位作為切分節點 。

根據特徵大小進行樣本排序:

用特徵的三分位點作切分節點:

紅箭頭表示每一次的切分節點,選擇目標函式下降最大的點作為切分節點。

4. 切分點演算法之權重分位點演算法

上節假設樣本權重相等,根據樣本的分位點來均分損失函式存在偏差,本節用樣本權重來均分損失函式。

損失函式如下:

對其變形得到:

xi損失函式可以看做是以以gi/hi作為label的均方誤差,乘以大小hi的權重,換句話說,xi對loss的貢獻權重為hi ,構建樣本權重的分位點等於誤差的均分。

上節假設樣本權重相等,特徵值的分位點作為切分點,本節假設樣本權重是hi,構建樣本權重的均分點步驟:

(1)根據特徵大小對樣本進行排序

(2)定義排序函式:

其中x,z表示特徵

(3)設定排序函式的分位點為切分點

【例】如下圖

特徵與對應的排序函式值的關係,如下表:

紅色箭頭表示以三分位點作為切分點。

最後,選擇最優切分點。

easyui treegrid節點擊擇

easyui treegrid本身不能實現選中父節點子節點全選,必須通過另外的方法來實現,這裡說下如何通過修改節點樣式新增checkbox來實現級聯選擇效果 首先需要格式化節點的樣式 formatter function value,row,index show方法如下 function show ...

CTreeCtrl 節點擊擇問題

一 問題說明 樹形控制項,單擊某個節點彈出相應的對話方塊 二 問題處理 起先使用了ctreectrl的onselchangedoperate這個事件,實際操作中出現了問題 二次單擊時對話方塊不能顯示,上網查詢資料,才明白二次單擊並不能觸發onselchangedoperate事件 所以最後選擇了on...

樹形DP 結點選擇

問題描述 有一棵 n 個節點的樹,樹上每個節點都有乙個正整數權值。如果乙個點被選擇了,那麼在樹上和它相鄰的點都不能被選擇。求選出的點的權值和最大是多少?輸入格式 第一行包含乙個整數 n 接下來的一行包含 n 個正整數,第 i 個正整數代表點 i 的權值。接下來一共 n 1 行,每行描述樹上的一條邊。...