假设房地产分析师想要根据家庭、年龄以及就业中心的距离来预测房价。其典型的目标是在给定这些因素的情况下生成最佳房价点估计,其中"最佳"通常是指预测与现实之间的最小平方偏差。

但是,如果他们想要预测的不只是单一的估计,还有其范围呢?这称为预测区间,产生它们的一般方法称为分位数回归。在这篇文章中,我将描述这个问题是如何正式化,如何采用六种线性,基于决策树和深度学习的方法中实现它(在Python中,这是Jupyter记事本),以及它们如何针对真实数据集执行的。

https://colab.research.google.com/drive/1nXOlrmVHqCHiixqiMF6H8LSciz583_W2

分位数回归的最小化分位数损失

正如回归最小化平方误差损失函数以预测单点估计一样,分位数回归最小化了预测某个分位数时的分位数损失。最流行的分位数是中位数或第50%,在这种情况下,分位数损失只是绝对误差的总和。其他分位数可以给出预测区间的终点。例如,中间80%的范围由第10%和90%来定义。分位数损失根据评估的分位数而不同,使得更多的负误差对于更高的分位数更多地受到惩罚,并且更多的正误差对于更低的分位数更加不利。

在深入研究公式之前,假设我们已经预测了一个真值为零的单点,我们的预测范围从-1到+1。也就是说,我们的错误范围从-1到+1。该图表示分位数损失如何随误差而变化,具体取决于分位数。

让我们分别看每一行:

中蓝色线显示中位数,它在零附近对称,其中所有损失均等于零,因为预测是完美的。到目前为止看起来很好:中位数的目的是将预测集合平分,因此我们希望将低估等同于高估。正如我们很快就会看到的那样,中位数附近的分位数损失是绝对偏差的一半,因此-1和-1都是0.5,0时是0。

浅蓝色线显示第10个百分位数,它为负误差分配较低的损失,对正误差分配较高的损失。第10个百分位意味着我们认为真实价值低于该预测值的可能性为10%,因此将低估的损失分配给低估,而不是高估是有意义的。

深蓝色线显示第90个百分位数,这是与第10个百分位数相反的模式。我们还可以通过分位数来查看低估和高估的预测。分位数越高,分位数损失函数惩罚低估的次数就越多,惩罚高估的次数就越少。

鉴于这种直觉,这里是分位数损失公式:

在Python代码中,我们可以用最大语句替换分支逻辑:

接下来我们将看看六种方法:最小二乘法(OLS)、线性分位数回归、随机森林、梯度提升、Keras和TensorFlow,并了解它们如何与一些真实数据一起工作。

数据

该分析将使用波士顿住房数据集,其中包含代表波士顿地区城镇的506个观测值。它包括目标旁边的13个特征,自住房屋的中位值。因此,分位数回归预测城镇(非住宅)的比例,其中位值住宅价值低于一个值。

https://www.kaggle.com/c/boston-housing

我训练80%的模型并测试剩余的20%。为了便于可视化,第一组模型使用单一特征:AGE,即1940年之前建造的住户自用单位的比例。正如我们所预期的那样,城镇的较旧房屋拥有较低的价值,尽管这种关系是嘈杂的。

对于每种方法,我们将预测测试集上的第10个,第30个,第50个,第70个和第90个百分位数。

(1)普通最小二乘法(OLS)

虽然最小二乘法(OLS)预测均值而不是中值,但我们仍然可以根据标准误差和逆正态累积分布函数(CDF)计算预测区间:

这种基线方法产生以均值为中心的线性和平行分位数(预测为中位数)。经过良好调整的模型将在顶部和底部线之间显示大约80%的点。请注意,这些点与第一个散点图不同,因为我们在此处显示了用于评估样本外预测的测试集。

(2)线性分位数回归

线性模型超出平均值到中位数和其他分位数。线性分位数回归预测给定的分位数,放松最小二乘法的平行趋势假设,同时仍然强加线性(它使分位数损失最小化)。这对于statsmodel来说很简单:

(3)随机森林

我们首次离开线性模型的是决策树的一种集合随机森林。虽然这个模型没有明确地预测分位数,但我们可以将每棵树视为一个可能的值,并使用其经验CDF计算分位数:

https://blog.datadive.net/prediction-intervals-for-random-forests/

在这种情况下,它有点疯狂,暗示过度拟合。由于随机森林更加常用于高维数据集,我们将在向模型添加更多功能后返回它们。

(4)梯度提升

另一种基于决策树的方法是梯度提升,scikit-learn的实现支持显式分位数预测:ensemble.GradientBoostingRegressor(loss ='quantile',alpha = q)

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html

虽然不像随机森林那样跳跃,但它在单一特征模型上看起来并不好看。

(5)Keras(深度学习)

Keras是一个用户友好的包装器,包括TensorFlow的神经网络工具包。因此需要查看Jupyter记事本或阅读Sachin Abeywardana的更多信息,了解它是如何工作的。https://colab.research.google.com/drive/1nXOlrmVHqCHiixqiMF6H8LSciz583_W2#scrollTo=g7s7Grj-A-Sf

最底层的网络是具有扭结的线性模型(称为整流线性单元,或ReLU),我们可以在视觉上看到:Keras预测在1940年之前建造的城镇住宅价值会增加70%,同时在非常低和非常高的房龄。这似乎是基于测试数据拟合的良好预测。

(6)TensorFlow

Keras的一个缺点是必须分别训练每个分位数。为了利用分位数共有的模式,我们必须转到TensorFlow本身。请参阅Jupyter笔记本和Jacob Zweig的笔记本以了解更多相关信息。

https://colab.research.google.com/drive/1nXOlrmVHqCHiixqiMF6H8LSciz583_W2#scrollTo=g7s7Grj-A-Sf

我们可以在其预测中看到跨越分位数的这种共同学习,其中模型学习共同的扭结而不是每个分位数的单独的扭结。这看起来是一个很好的奥卡姆风格的选择。

哪个做得最好?

通过观察表明深度学习表现良好,线性模型表现良好,基于决策树的方法表现不佳,但我们能否量化哪个最好?是的,我们可以使用测试集上的分位数损失。

回想一下,分位数损失根据分位数而不同。由于我们计算了五个分位数,因此测试集中的每个观测值都有五个分位数损失。对所有分位数观测值求平均证实了视觉直觉:随机森林的表现最差,而TensorFlow表现最佳。

我们也可以通过分位数来解决这个问题,揭示基于决策树的方法在第90百分位时表现得特别差,而深度学习在较低的分位数处表现最佳。

较大的数据集提供了更多改进最小二乘法(OLS)的机会

因此,随机森林对于这个单一特征的数据集非常糟糕,但这并不是它们的目的。如果我们将其他12个功能添加到波士顿的住宅模型会发生什么?

基于决策树的方法卷土重来,最小二乘法(OLS)在改进后,将与其他非决策树方法之间的差距不断扩大。

现实世界的问题往往超出预测手段。也许应用程序开发人员不仅对用户的预期用途感兴趣,而且对他们成为超级用户的可能性感兴趣。或者一家汽车保险公司想知道司机在不同门槛下的高价值索赔的可能性。经济学家可能希望随机将信息从一个数据集归结于另一个数据集,从CDF中挑选以确保适当的变化(我将在后续文章中探讨一个例子)。

分位数回归对于这些用例中的每一个都很有价值,并且机器学习工具通常可以胜过线性模型,尤其是易于使用的基于树的方法。那么尝试采用自己的数据,让我知道它是怎么回事!

python分位数回归模型_从线性模型到决策树再到深度学习的分位数回归相关推荐

  1. R语言glmnet拟合岭回归模型实战:岭回归模型的模型系数(ridge regression coefficients)及可视化、岭回归模型分类评估计算(混淆矩阵、accuracy、Deviance)

    R语言glmnet拟合岭回归模型(ridge regression)实战:岭回归模型的模型系数(ridge regression coefficients)及可视化.岭回归模型分类评估计算(混淆矩阵. ...

  2. R语言使用ggplot2函数可视化需要构建泊松回归模型的计数目标变量的直方图分布并分析构建泊松回归模型的可行性

    R语言使用ggplot2函数可视化需要构建泊松回归模型的计数目标变量的直方图分布并分析构建泊松回归模型的可行性 目录

  3. Python黑马头条推荐系统第四天 TensorFlow框架介绍和深度学习

    深度学习与推荐系统 6.1 推荐系统与深度学习关联 学习目标 目标 无 应用 无 6.1.1 深度学习到推荐系统 深度学习发展成功与局限 最近几年深度学习的流行,大家一般认为是从2012年 AlexN ...

  4. 一文让你完全弄懂逻辑回归和分类问题实战《繁凡的深度学习笔记》第 3 章 分类问题与信息论基础(上)(DL笔记整理系列)

    好吧,只好拆分为上下两篇发布了>_< 终于肝出来了,今天就是除夕夜了,祝大家新快乐!^q^ <繁凡的深度学习笔记>第 3 章 分类问题与信息论基础 (上)(逻辑回归.Softm ...

  5. 如何用Python一门语言通吃高性能并发、GPU计算和深度学习

    [CTO讲堂]如何用Python一门语言通吃高性能并发.GPU计算和深度学习 发表于2016-01-04 15:11| 4374次阅读| 来源CSDN| 4 条评论| 作者蒲婧 CTO俱乐部CTOCT ...

  6. 深度学习基础--SOFTMAX回归(单层神经网络)

    深度学习基础–SOFTMAX回归(单层神经网络) 最近在阅读一本书籍–Dive-into-DL-Pytorch(动手学深度学习),链接:https://github.com/newmonkey/Div ...

  7. 深度学习掩膜_交叉新趋势|采用神经网络与深度学习来预报降水、温度等案例(附代码/数据/文献)...

    欢迎订阅微信公众号:『气象学家』 阅读建议 随着人工智能的发展,拥有了越来越丰富的应用场景,气象行业也不例外,在突破传统预报方法的情况下,神经网络与深度学习来预报气象要素也取得了不错的效果,下面就给出 ...

  8. 深度学习导论(2)深度学习案例:回归问题

    深度学习导论(2)深度学习案例:回归问题 问题分析 优化方法 代码 采样数据 计算误差 计算梯度 梯度更新 main函数 结果输出 这篇文章将介绍深度学习的小案例:回归问题的问题分析.优化以及实现代码 ...

  9. 金融模型python_盘点金融领域里常用的深度学习模型

    作者 | Sonam Srivastava ,译者 | sambodhi ,编辑 | Vincent ,AI前线出品| ID:ai-front 在今天我们发布的这篇文章中,作者 Sonam Sriva ...

  10. k均值例子 数据挖掘_人工智能、数据挖掘、机器学习和深度学习的关系

    一.人工智能 人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器. 实际应用比如:机器视觉,指纹识别,人脸识别,视网膜识别,虹膜识别,掌纹识 ...

最新文章

  1. 池化方法总结(Pooling)
  2. 数据库中范式的理解1NF、2NF、3NF
  3. ALV报表中设置可修改字段
  4. 腾讯技术研究类和数据分析第一次笔试(2021.8.22)——Python
  5. Spring注解之@Import用法解析
  6. Leetcode每日一题:767.reorganize-string(重构字符串)
  7. 樊登高效休息法读书心得_读书时间丨高效休息法:让身体和大脑彻底放松的七个方法...
  8. MVC的优点及不足之处
  9. 第八周 4.18 --- 4.24
  10. 小白菜飘过计算机三级数据库
  11. 游戏蛮牛unity权威指南全实例讲解书籍上线
  12. EXCEL所有单元格加减乘除一个数 -- 选择性粘贴的用法
  13. 网站服务器登录很慢,网站打开速度慢如何解决?有何技巧?
  14. linux设备模型五(device和device_driver)
  15. win10打开Android模拟器后电脑重启问题
  16. 微信小程序覆盖map组件
  17. 使用Bboss处理ES的dsl语句
  18. STM32之RTC实时时钟
  19. 高斯混合模型(GMM)浅入理解
  20. vue 获取id元素_.vue组件中获取DOM元素问题

热门文章

  1. python 爬取订单_【python实战】【持续更新】爬取某发卡网订单
  2. 计算机基础:12、计算机CPU--控制器
  3. PCI/PCIe硬件相关知识
  4. win10和ubuntu双系统,切换优先启动
  5. 步道乐跑 位置模拟刷步数
  6. linux文件权限651,Linux基础之文件权限详解
  7. EI的检索方法快速检索(Quick Search)
  8. SMT操作手册V1.0 模板
  9. Idea起服务报错java heap space,GC overhead limit exceeded,Information:javac 1.8.0_181 was used to comp解决办法
  10. 2021鹏业安装算量软件常见问题整理(十三)