本文介绍了梯度提升决策树算法(Gradient Boosting Decision Tree,下文简称GBDT)相关内容。
简介
GBDT是一款基于梯度提升的决策树算法。可解释性强,预测速度快。同时,GBDT算法相比于其它算法需要更少的特征工程,可以不用做特征标准化,也不必关心特征之间是否相互依赖,能很好的处理字段缺失的数据,健壮性好。
使用场景
GBDT通常被应用在二分类、多分类以及排序等场景。
例如,在个性化商品推荐场景中,通常需要做点击预估模型。将用户过往的行为(点击、曝光未点击、购买等)作为创建模型数据,来预测用户点击商品的概率。该问题可以视为一个二分类问题,使用GBDT来建模,使用数字0和1来表示是否点击商品。并根据用户行为和用户属性来提取一些特征,特征包括用户活跃度、商品价格和商品购买率等,这类特征通常为整数或浮点数。
参数说明
下表中的参数为创建模型CREATE MODEL
语法中model_parameter
参数的取值,您可以根据当前需求选择对应的参数。
参数 | 说明 |
loss | 弱学习的类型。取值范围如下:
|
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 | 模型的存储类型。取值范围如下:
|
示例
创建模型与模型离线学习
/*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');