梯度提升回归的预测区间

Beginner

This tutorial is from open-source community. Access the source code

简介

本实验演示了如何使用分位数回归,通过 scikit-learn 创建预测区间。我们将为回归问题生成合成数据,对其应用该函数,并使用对数正态分布创建目标观测值。然后,我们将数据拆分为训练集和测试集,拟合非线性分位数和最小二乘回归器,并创建一个均匀分布的评估集,其输入值范围为[0, 10]。我们将比较预测中位数和预测均值,分析误差指标,并校准置信区间。最后,我们将调整分位数回归器的超参数。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签页,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟,以便 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。

生成合成数据

我们将通过对均匀采样的随机输入应用该函数,为回归问题生成合成数据。为了使问题更有趣,我们将目标 y 的观测值生成为函数 f 计算出的确定性项与服从中心对数正态分布的随机噪声项之和。对数正态分布是非对称且长尾的:很可能会观察到较大的异常值,但不可能观察到较小的异常值。

将数据拆分为训练集和测试集

我们会将数据拆分为训练集和测试集。

拟合非线性分位数和最小二乘回归器

我们将拟合使用分位数损失且 alpha = 0.05、0.5、0.95 训练的梯度提升模型。对于 alpha = 0.05 和 alpha = 0.95 得到的模型会产生一个 90% 的置信区间。使用 alpha = 0.5 训练的模型会产生中位数回归。

创建一个均匀分布的输入值评估集

我们将创建一个均匀分布的输入值评估集,其范围为[0, 10]。

绘制真实条件均值函数 f

我们将绘制真实条件均值函数 f、条件均值的预测值(损失等于均方误差)、条件中位数以及条件 90% 区间(从第 5 个到第 95 个条件百分位数)。

分析误差指标

我们将在训练数据集上使用均方误差(mean_squared_error)和平均弹球损失(mean_pinball_loss)指标来评估模型。其中一列展示了通过相同指标评估的所有模型。

调整分位数回归器的超参数

我们将通过在 alpha = 0.05 的弹球损失上进行交叉验证来选择最佳模型参数,从而调整第 5 百分位数的新回归器的超参数。然后,我们将调整第 95 百分位数回归器的超参数。

总结

本实验展示了如何使用分位数回归,通过 scikit-learn 创建预测区间。我们为一个回归问题生成了合成数据,对其应用函数,并使用对数正态分布创建目标观测值。我们将数据拆分为训练集和测试集,拟合非线性分位数和最小二乘回归器,并创建了一个均匀分布的输入值评估集,其范围为[0, 10]。我们比较了预测中位数和预测均值,分析了误差指标,并校准了置信区间。最后,我们调整了分位数回归器的超参数。