gpt4 book ai didi

python-2.7 - 在生产中实现梯度提升回归树 - 以数学方式描述学习模型

转载 作者:行者123 更新时间:2023-11-30 08:47:26 25 4
gpt4 key购买 nike

我一直在使用逻辑回归(LR,start_params 作为之前(训练)数据集和 L1 正则化获得的参数)来建模我们的用例(使用一些复杂的特征转换)。我在部分相同数据上尝试了梯度提升分类器,它似乎提供了更好的拟合。传统上,我一直使用梯度增强分类器的特征重要性,并将其用作 LR 特征工程的反馈。

我认为全面采用梯度提升(GB)的经典障碍是我不太明白如何将“学习树”公式化为其数学结构。到目前为止我主要使用这些classificationregression SKLearn 文档中的示例可用于测试和比较预测。

问题:据我所知,梯度提升是一种非参数模型。这是否意味着我永远无法恢复数学结构。抱歉,如果这听起来很原始,但我没有将这些投入生产的经验。也就是说,除非我真正实时学习和预测类别,否则我将如何将标签“分类”为一类或另一类?如何在生产中使用该模型?

# Fit regression model
params = {'n_estimators': 500, 'max_depth': 4, 'min_samples_split': 1,
'learn_rate': 0.01, 'loss': 'ls'}
clf = ensemble.GradientBoostingRegressor(**params)

pred_object=clf.fit(X_train, y_train)
pred_object
GradientBoostingRegressor(alpha=0.9, init=None, learning_rate=0.01, loss='ls',
max_depth=4, max_features=None, min_samples_leaf=1,
min_samples_split=1, n_estimators=500, random_state=None,
subsample=1.0, verbose=0)
# Next, I get the feature importances,
pred_object.feature_importances_
array([ 3.08111834e-02, 1.44739767e-04, 1.31885157e-02,
2.68202997e-05, 3.01134511e-02, 2.82639689e-01,
7.67647932e-02, 5.90503853e-02, 7.86688625e-03,
2.48124873e-02, 8.52094429e-02, 3.93616279e-02,
3.50009978e-01])

我深入研究了 dir(pred_object),但找不到我可以立即理解的内容。考虑到特征重要性数组、损失函数 ='ls'、alpha 和其他参数,是否可以将特定的数学构造放入其中?或者,因为它是一棵树,所以在尝试预测新数据点的类时,它总是会尝试在给定更多数据点(测试集)的情况下“重新平衡”?

最佳答案

有两种方法可以将 GBM“推向生产”。

  1. 将数据提取到 python、R 或用于拟合模型的任何语言中。对其进行评分,并将其写回数据库(或任何生产数据存储)。这实际上可以很好地扩展:如果您可以将需要评分的“事件”放入队列中,则可以让 20、100 或 1000 台机器运行 Python 模型的重复副本,独立地对每个“事件”进行评分。
  2. 将您的模型编码为 SQL 语句,并在您选择的数据库上运行它。 (如果您使用的是 nosql 数据库或其他数据存储,希望您有某种方式运行 if-then-else 语句)。

1 是非常不言自明的。将生产数据分解为可管理的 block ,并在运行模型的不同机器上对每个 block 进行评分。这需要一些工作来构建基础架构,但您不需要更改任何建模代码。

2 有点难理解:基于树的模型的核心是 if-else 语句的集合:

if var1>10 and var2<3 then outcome = 0
else if var1<10 and var2<3 then outcome = 1
else if var2<10 and var2<1 then outcome = 0

等等

这样的语句很容易在基于 SQL 的数据库中编码,也很容易在大多数编程语言中编码。如果您可以在 python 中循环遍历 GBM 中的每棵树并将其转换为 SQL 语句,则可以通过运行每个 SQL 语句并将其乘以 GBM 的正确权重来对生产中的模型进行评分。这需要您将模型转码为另一种语言,但它可以让您对数据进行评分,而无需将其从数据存储中取出。

关于python-2.7 - 在生产中实现梯度提升回归树 - 以数学方式描述学习模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24478868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com