scikit-garden中的RandomForestQuantileRegressor .fit方法在训练最后一棵树时冻结

我已经使用scikit-garden大约两个月了,尝试训练分位数回归森林(QRF),类似于这篇论文中的方法。论文的作者使用了R语言,但由于我和同事们已经熟悉Python,我们决定使用scikit-garden中的QRF实现。首先,这个包的状态很糟糕,似乎没有完全正常工作(我们不得不更改一些源代码才能使其运行)。这是我尝试使其工作的最后努力。

在完成了创建可用的数据集的代码后,我们现在尝试使用标准超参数训练一个简单的QRF,以获得误差的初步估计。到目前为止,没有一次训练运行完成,因为它似乎总是在训练最后一棵树时停滞/冻结,我总是不得不自己终止任务以免惹恼系统管理员。

例如,我最近一次训练是在8个CPU上进行的(每个CPU训练一棵树),标准设置构建并训练10棵树。除了最后一棵树外,所有树都在5-6分钟内构建并训练完毕,我让最后一棵树运行了一周才被迫终止它。重要的是,8个预留的CPU中只有一个处于活跃状态,并且(显然)以100%的负载运行。

我们的数据集相当大(约200万个观测值),但即使是使用较小的数据片段,它仍然在最后一棵树上冻结。我觉得所有树都应该在完整数据集上快速训练,除了最后一棵树,这对我来说毫无意义。

这是主要训练代码的一个小片段:

xtrain, xtest, ytrain, ytest = train_test_split(features, target, test_size=testsize)model = RandomForestQuantileRegressor(verbose=2, n_jobs=-1).fit(xtrain, ytrain)ypred = model.predict(xtest)

这是我第一次在这里提问 – 如果我遗漏了任何重要信息,请告诉我!非常感谢任何能帮助我的人! 🙂


回答:

这里有一个快速的、积极维护的QRF实现,可能适合你的问题:https://github.com/zillow/quantile-forest

按照你的片段,使用该包的一个简单示例:

from quantile_forest import RandomForestQuantileRegressorfrom sklearn import datasetsfrom sklearn.model_selection import train_test_splitX, y = datasets.fetch_california_housing(return_X_y=True)X_train, X_test, y_train, y_test = train_test_split(X, y)qrf = RandomForestQuantileRegressor(n_estimators=10)qrf.fit(X_train, y_train)y_pred = qrf.predict(X_test, quantiles=[0.025, 0.5, 0.975])

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注