梯度提升回归树算法(GBRT)

本文介绍了梯度提升回归树算法(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中的列数据类型必须是浮点型或整型。