梯度提升回归的预测区间

Machine LearningMachine LearningBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

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

虚拟机使用提示

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49152{{"梯度提升回归的预测区间"}} end

生成合成数据

我们将通过对均匀采样的随机输入应用该函数,为回归问题生成合成数据。为了使问题更有趣,我们将目标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]。我们比较了预测中位数和预测均值,分析了误差指标,并校准了置信区间。最后,我们调整了分位数回归器的超参数。