梯度提升决策树算法(GBDT)

本文介绍了梯度提升决策树算法(Gradient Boosting Decision Tree,下文简称GBDT)相关内容。

简介

GBDT是一款基于梯度提升的决策树算法。可解释性强,预测速度快。同时,GBDT算法相比于其它算法需要更少的特征工程,可以不用做特征标准化,也不必关心特征之间是否相互依赖,能很好的处理字段缺失的数据,健壮性好。

使用场景

GBDT通常被应用在二分类、多分类以及排序等场景。

例如,在个性化商品推荐场景中,通常需要做点击预估模型。将用户过往的行为(点击、曝光未点击、购买等)作为创建模型数据,来预测用户点击商品的概率。该问题可以视为一个二分类问题,使用GBDT来建模,使用数字0和1来表示是否点击商品。并根据用户行为和用户属性来提取一些特征,特征包括用户活跃度、商品价格和商品购买率等,这类特征通常为整数或浮点数。

参数说明

下表中的参数为创建模型CREATE MODEL语法中model_parameter参数的取值,您可以根据当前需求选择对应的参数。

参数

说明

loss

弱学习的类型。取值范围如下:

  • deviance(默认):对数损失函数。

  • exponential:指数损失函数。

n_estimators

树的个数。取值为正整数。默认值为100。

learning_rate

学习率。取值为浮点数。默认值为0.06。

max_leaf_nodes

树的最大叶子节点树。取值为空或者整数。默认值为空,表示对树的叶子节点树无限制。

min_samples_leaf

叶子节点最少的样本数量。取值为正整数。默认值为1。

说明

如果某叶子节点数小于叶子节点最少的样本数量,则该节点会和兄弟节点一起被剪枝。

subsample

创建模型样本占总样本的比例。

取值范围:0~1。默认值为1。

说明

如果该值小于1,则只有这部分比例的样本会参与创建模型。

max_features

创建模型所用特征占总特征的比例。取值为浮点数。

取值范围:0~1。默认值为1。

max_depth

树的最大深度。默认值为1。取值为整数,且取值越大,精度越高。但太高容易过拟合。

random_state

随机数种子。取值为整数。默认值为1。

model_type

模型的存储类型。取值范围如下:

  • pkl(默认):PKL类型的文件。

  • pmml:PMML类型的文件。

示例

创建模型与模型离线学习

/*polar4ai*/CREATE MODEL airline_gbdt WITH 
(model_class = 'gbdt', 
x_cols = 'Time,Length',
y_cols='Delay',model_parameter=(n_estimators=200)) 
AS (SELECT * FROM db4ai.airlines);

模型评估

/*polar4ai*/SELECT Airline FROM EVALUATE(MODEL airline_gbdt, 
SELECT * FROM db4ai.airlines LIMIT 20) WITH 
(x_cols = 'Time,Length',y_cols='Delay',metrics='acc');

模型预测

/*polar4ai*/SELECT Airline FROM PREDICT(MODEL airline_gbdt, 
SELECT * FROM db4ai.airlines limit 20) WITH 
(x_cols = 'Time,Length');