gbdt算法是什么?

gbdt算法是什么?,第1张

如下图:

在建立GBDT对象并作fit之后,可以使用如脊仔基下代码获得要的规则代码:

dot_data = tree。export_graphviz(model_tree, out_file=None,

max_depth=5, feature_names=names_list, filled=True, rounded=True) # 将决策树规则生成dot对象。

模型最终可以描述戚隐为:

Fm(x)=∑m=1MT(xθm)Fm(x)=∑m=1MT(xθm)

模型一共训练M轮,每轮产生一个弱分类器T(xθm)T(xθm)。弱分类器的损失函数

θ^m=argminθm∑i=1NL(yi,Fm−1(xi)+T(xiθm))θ^m=arg⁡minθm⁡∑i=1NL(yi,Fm−1(xi)+T(xiθm))

Fm−1(x)Fm−1(x)为当前的模型,gbdt通过经验风险极小化来确定下一个弱分类器的参数。具体到损失函数本身的选择也就是L的选择,有平方损失函数,0-1损失函数,对数损失函数等等。如果我们选择平方损失函数,那么这个樱谨差值其实就是我们平常所说的残差。

以Python调用sklearn为例,在你建立GBDT对象并作fit之后,可以使用如下代码获得你要的规则代码绝谈:

dot_data = tree.export_graphviz(model_tree, out_file=None,

max_depth=5, feature_names=names_list, filled=True, rounded=True) # 将决策树规则生成dot对象

其中tree就是你的数对象,如果你的out_file后面是一个文件名,那么你的规则会输出到文件中;如果是None(就像上面代码),那么值会保存在dot_data中。

无论哪种方法,你都能获得规则文本。然后剩下的就是普通的文本解析的事情了。

在决策树算法对象的tree_属性中,存储了所有有关决策树规则的信息(示例中的决策树规则存储在model_tree.tree_中)。最主要的几个属性:

children_left:子级左侧分类节点

children_right:子级右侧分类节点

feature:子节点上用来做分裂的特征

threshold:子节点上对应特征粗宏笑的分裂阀值

values:子节点中包含正例和负例的样本数量

上述属性配合节点ID、节点层级便迭代能得到如下的规则信息:

1 [label="rfm_score <= 7.8375\ngini = 0.1135\nsamples =

14581\nvalue = [13700, 881]", fillcolor="#e58139ef"]

其中规则开始的1代表节点ID,rfm_score是变量名称,rfm_score

<= 7.8375是分裂阀值,gini = 0.1135是在当前规则下的基尼指数,nsamples是当前节点下岩含的总样本量,nvalue为正例和负例的样本数量。

来源:知乎


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12216851.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存