大資料技術GBDT演算法解析

2021-12-30 02:44:53 字數 2051 閱讀 9451

大資料技術gbdt演算法解析。

單模型情況下**結果容易產生過擬合,例如普通決策樹,要想達到比較好的**效果,需要將樹的深度調得比較深,葉節點的最大樣本數目調得小一點等才能達到比較高的準確率。但是這樣會帶來嚴重的過擬合問題,針對這些問題,gbdt採用多顆決策樹組合的方法來實現比較高的準確率,同時避免過擬合問題。

假設待分類樣本為((x(1),y(1)),(x(2),y(2)),?,(x(m),y(m))),其中m為樣本數量,x(i)為第i個樣本的特徵,y(i)為第i個樣本的類標籤。gbdt的任務是構建k顆決策樹f1,f2,?fk,對於每個樣本i,其最終的**值是每顆決策樹的**值的和:

predict(x(i))=∑k=1kfk(x(i))

對於一批訓練樣本((x(1),y(1)),(x(2),y(2)),?,(x(m),y(m))),首先計算標籤的均值作為第一步的**值:

μ=1m∑i=1my(i)

然後計算每乙個樣本的殘差:

dy(i)=y(i)?μ

這樣得到的殘差作為第一棵樹的學習標準。即:

接下來會以((x(1),dy(1)),(x(2),dy(2)),?,(x(m),dy(m)))作為第一顆樹的根節點,學習出一顆cart樹,具體學習方法見cart樹演算法詳解。當指定最大樹的深度,最大葉節點的個數,葉節點包含的最大樣本數目後,樹會在某一時刻停止訓練,此時得到學習器,也就是第乙個決策樹tree1。

對於得到的tree1和所有的樣本,根據tree1得到每個樣本的**值predicti,然後跟新每個樣本的殘差:

dyi=dyi?αkpredict(treek,x(i))

其中αk為學習率,通常設定為定值, x(i)為第i個樣本的特徵值, predict(treek,x(i))為第k顆決策樹對第i個樣本的**值。由此得到更新後的殘差值(dy(1),dy(2),?,dy(m)),然後作為第2顆樹的學習標準,以此類推,直到訓練到第k顆樹為止。

在gbdt決策樹當中,採用的損失函式為:

l(θ)=12∑i=1m(hθ(x(i))?y(i))2m為樣本數量

其中hθ(x(i))為前面j顆樹對於樣本i的**值之和,即:

hθ(x(i))=μ+∑i=1jpredict(treej,x(i))

因此用l(θ)對x(i)求導,得:

?l(θ)?h(x(i))=hθ(x(i))?y(i)

即梯度的方向就是每次訓練完成之後樣本的殘差,然後將此殘差作為下一顆樹的target值繼續學習,整個演算法的基本過程為:

對於m個訓練樣本((x(1),y(1)),(x(2),y(2)),?,(x(m),y(m))),計算均值:

μ=1m∑i=1my(i) 計算樣本的殘差dyi=y(i)?μ 設樹的總顆數為k,對於k∈,對於所有的殘差dy1,dy2,?,dym通過cart樹學習出乙個學習器treek,即:

treek=train_learner(x,dy)

然後更新殘差:

dyi=dyi?αtreek(x(i))

其中α為學習率,treek(x(i))為第i個樣本在第k顆樹上的**值。 不斷重複3中的步驟,直到訓練到第k顆樹為止。 最終的**結果為,第j個樣本的**值為所有樹的**值的疊加和:

predict(x(j))=μ+α∑k=1ktreek(x(j))

loss=∑i=1m(hθ(x(i))?y(i))2

安裝graphviz並配置環境變數 安裝pydotplus

gbdt_model = grid.best_estimator_from sklearn import tree

import pydotplus

estimators = gbdt_model.estimators.shape[0]

for i in range(estimators):

dot_data = tree.export_graphviz(gbdt_model)

graph = pydotplus.graph_from_dot_data(dot_data)

graph.write_pdf("../data/tree_"+str(i)+".pdf")

大資料關鍵技術解析

大資料技術,就是從各種型別的資料中快速獲得有價值資訊的技術。大資料領域已經湧現出了大量新的技術,它們成為大資料採集 儲存 處理和呈現的有力 大資料處理關鍵技術一般包括 大資料採集 大資料預處理 大資料儲存及管理 大資料分析及挖掘 大資料展現和應用 大資料檢索 大資料視覺化 大資料應用 大資料安全等 ...

大資料技術之Hadoop解析

大資料技術之hadoop解析。1 資料現狀 2006年數字世界 digital universe 專案統計得出全球資料總量為0.18zb,2011年將達到1.8zb 1zb 1 000eb 1 000 000pb 1 000 000 000tb 資料增長速度也在加快。2 資料的儲存 資料讀取速度慢 ...

大資料相關技術和演算法

大資料的關鍵技術 大資料的關鍵技術分為分析技術和處理技術,可用於大資料分析的關鍵技術主要包括a b測試,關聯規則挖掘,資料探勘,整合學習,遺傳演算法,機器學習,自然語言處理,模式識別,模型,訊號處理,空間分析,監督式學習,時間序列分析等,可用於大資料處理的關鍵技術主要是商業智慧型,雲計算,資料倉儲,...