全部產品
Search
文件中心

PolarDB:梯度提升迴歸樹演算法(GBRT)

更新時間:Jul 06, 2024

本文介紹了梯度提升迴歸樹演算法(Gradient Boosting Regression Tree,下文簡稱GBRT)相關內容。

簡介

GBRT演算法是整合學習Boosting家族的成員,使用了前向分布演算法,但是弱學習器限定了只能使用CART迴歸樹模型。前向分布演算法的思想是基於當前模型和擬合函數來選擇合適的決策樹函數,從而最小化損失函數。

GBRT主要有以下兩部分組成:

  • 迴歸樹(Regression Tree(RT)):迴歸樹是決策樹類別之一,用來預測實際值。GBRT演算法是一種迭代的迴歸樹演算法,由多棵迴歸樹組成,所有迴歸樹的結論累加起來為最終結果。

  • 梯度提升(Gradient Boosting(GB)):梯度提升通過迭代多棵樹來共同決策最終結果。每一棵樹都是學習之前的樹的結論和殘差。

使用情境

GBRT是一個迴歸模型,主要用於擬合數值。

GBRT演算法可以應用於流行病學。例如,有關於人的死亡率和發病率早期證據來自於迴歸分析的觀察性研究。假設有一個迴歸模型,在迴歸模型中死亡率(或發病率)是需要擬合的變數y_cols,則社會經濟地位、教育或收入等可以做為其因變數。

參數說明

下表中的參數為建立模型CREATE MODEL文法中model_parameter參數的取值,您可以根據當前需求選擇對應的參數。

參數

說明

n_estimators

迭代次數。次數越多擬合越好,通常為正整數,預設值為100。

objective

學習任務及相應的學習目標。取值如下:

  • ls(預設):最小二乘法。

  • lad:最小一乘法。

  • huber:最小二乘法和最小一乘法結合使用。

max_depth

樹的最大深度。預設值為7。

說明

如果設定為-1,則表示不對樹的深度做限制。但為防止過擬合,建議合理設定該值。

random_state

隨機狀態。通常為正整數,預設值為1。

樣本

模型建立與模型離線訓練

/*polar4ai*/
CREATE MODEL gbrt1 WITH
( model_class = 'gbrt', x_cols = 'dx1,dx2', y_cols='y',
 model_parameter=(objective='ls')) AS (SELECT * FROM db4ai.testdata1);

模型評估

/*polar4ai*/
SELECT dx1,dx2 FROM EVALUATE(MODEL gbrt1, 
SELECT * FROM db4ai.testdata1 LIMIT 10) WITH 
(x_cols = 'dx1,dx2',y_cols='y',metrics='r2_score');

模型預測

/*polar4ai*/SELECT dx1,dx2 FROM
PREDICT(MODEL gbrt1, SELECT * FROM db4ai.testdata1 LIMIT 10)
WITH (x_cols = 'dx1,dx2');
說明

x_colsy_cols中的列資料類型必須是浮點型或整型。