迭代決策樹GBRT(漸進梯度回歸樹)

2021-06-29 10:06:11 字數 2477 閱讀 7192

一、決策樹模型組合

單決策樹c4.5由於功能太簡單,並且非常容易出現過擬合的現象,於是引申出了許多變種決策樹,就是將單決策樹進行模型組合,形成多決策樹,比較典型的就是迭代決策樹gbrt和隨機森林rf。 在最近幾年的*****上,如iccv這種重量級會議,iccv 09年的裡面有不少文章都是與boosting和隨機森林相關的。模型組合+決策樹相關演算法有兩種比較基本的形式:隨機森林rf與gbdt,其他比較新的模型組合+決策樹演算法都是來自這兩種演算法的延伸。 核心思想:其實很多「漸進梯度」 gradient boost都只是乙個框架,裡面可以套用很多不同的演算法。

首先說明一下,gbrt這個演算法有很多名字,但都是同乙個演算法: gbrt (gradient boostregression tree) 漸進梯度回歸樹 gbdt (gradient boostdecision tree) 漸進梯度決策樹 mart (multipleadditive regression tree) 多決策回歸樹 tree net決策樹網路

二、gbrt

迭代決策樹演算法,在阿里內部用得比較多(所以阿里演算法崗位面試時可能會問到),由多棵決策樹組成,所有樹的輸出結果累加起來就是最終答案。它在被提出之初就和svm一起被認為是泛化能力(generalization)較強的演算法。近些年更因為被用於搜尋排序的機器學習模型而引起大家關注。

gbrt是回歸樹,不是分類樹。其核心就在於,每一棵樹是從之前所有樹的殘差中來學習的。為了防止過擬合,和adaboosting一樣,也加入了boosting這一項。

提起決策樹(dt, decisiontree)不要只想到c4.5單分類決策樹,gbrt不是分類樹而是回歸樹! 決策樹分為回歸樹和分類樹:

回歸樹用於**實數值,如明天溫度、使用者年齡

分類樹用於分類標籤值,如晴天/陰天/霧/雨、使用者性別

注意前者結果加減是有意義的,如10歲+5歲-3歲=12歲,後者結果加減無意義,如男+女=到底是男還是女?gbrt的核心在於累加所有樹的結果作為最終結果,而分類樹是沒有辦法累加的。所以gbdt中的樹都是回歸樹而非分類樹。

第一棵樹是正常的,之後所有的樹的決策全是由殘差(此次的值與上次的值之差)來作決策。

三、演算法原理

0.給定乙個初始值

1.建立m棵決策樹(迭代m次)

2.對函式估計值f(x)進行logistic變換

3.對於k各分類進行下面的操作(其實這個for迴圈也可以理解為向量的操作,每個樣本點xi都對應了k種可能的分類yi,所以yi,f(xi),p(xi)都是乙個k維向量)

4.求得殘差減少的梯度方向

5.根據每個樣本點x,與其殘差減少的梯度方向,得到一棵由j個葉子節點組成的決策樹

6.當決策樹建立完成後,通過這個公式,可以得到每個葉子節點的增益(這個增益在**時候用的)

每個增益的組成其實也是乙個k維向量,表示如果在決策樹**的過程中,如果某個樣本點掉入了這個葉子節點,則其對應的k個分類的值是多少。比如gbdt得到了三棵決策樹,乙個樣本點在**的時候,也會掉入3個葉子節點上,其增益分別為(假設為3分類問題): (0.5, 0.8, 0.1), (0.2, 0.6, 0.3), (0.4, .0.3, 0.3),那麼這樣最終得到的分類為第二個,因為選擇分類2的決策樹是最多的。

7.將當前得到的決策樹與之前的那些決策樹合併起來,作為乙個新的模型(跟6中的例子差不多)

四、gbrt適用範圍

該版本的gbrt幾乎可用於所有的回歸問題(線性/非線性),相對logistic regression僅能用於線性回歸,gbrt的適用面非常廣。亦可用於二分類問題(設定閾值,大於閾值為正例,反之為負例)。

五、搜尋引擎排序應用ranknet

搜尋排序關注各個doc的順序而不是絕對值,所以需要乙個新的cost function,而ranknet基本就是在定義這個cost function,它可以相容不同的演算法(gbdt、神經網路...)。

實際的搜尋排序使用的是lambda mart演算法,必須指出的是由於這裡要使用排序需要的cost function,lambdamart迭代用的並不是殘差。lambda在這裡充當替代殘差的計算方法,它使用了一種類似gradient*步長模擬殘差的方法。這裡的mart在求解方法上和之前說的殘差略有不同。

搜尋排序也需要訓練集,但多數用人工標註實現,即對每個(query, doc)pair給定乙個分值(如1, 2, 3, 4),分值越高越相關,越應該排到前面。ranknet就是基於此制定了乙個學習誤差衡量方法,即cost function。ranknet對任意兩個文件a,b,通過它們的人工標註分差,用sigmoid函式估計兩者順序和逆序的概率p1。然後同理用機器學習到的分差計算概率p2(sigmoid的好處在於它允許機器學習得到的分值是任意實數值,只要它們的分差和標準分的分差一致,p2就趨近於p1)。這時利用p1和p2求的兩者的交叉熵,該交叉熵就是cost function。

有了cost function,可以求導求gradient,gradient即每個文件得分的乙個下降方向組成的n維向量,n為文件個數(應該說是query-doc pair個數)。這裡僅僅是把」求殘差「的邏輯替換為」求梯度「。每個樣本通過shrinkage累加都會得到乙個最終得分,直接按分數從大到小排序就可以了。

決策樹(二)決策樹回歸

回歸 決策樹也可以用於執行回歸任務。我們首先用sk learn的decisiontreeregressor類構造一顆回歸決策樹,並在乙個帶雜訊的二次方資料集上進行訓練,指定max depth 2 import numpy as np quadratic training set noise np.r...

回歸決策樹

決策樹是處理分類的常用演算法,但它也可以用來處理回歸問題,其關鍵在於選擇最佳分割點,基本思路是 遍歷所有資料,嘗試每個資料作為分割點,並計算此時左右兩側的資料的離差平方和,並從中找到最小值,然後找到離差平方和最小時對應的資料,它就是最佳分割點。sklearn.tree.decisiontreereg...

決策樹 回歸

決策樹常用於分類問題,但是也能解決回歸問題。在回歸問題中,決策樹只能使用cart決策樹,而cart決策樹,既可以分類,也可以回歸。所以我們說的回歸樹就是指cart樹。為什麼只能是cart樹 1.回想下id3,後需要計算每個類別佔總樣本的比例,回歸哪來的類別,c4.5也一樣 2.回歸問題肯定是連續屬性...