【视频】R语言机器学习高维数据应用:Lasso回归和交叉验证预测房屋市场租金价格

简介: 【视频】R语言机器学习高维数据应用:Lasso回归和交叉验证预测房屋市场租金价格

全文链接:http://tecdat.cn/?p=32646

分析师:Junjun Li


在这篇文章中,我们将着重探讨高维数据下的机器学习应用,以房屋市场租金价格预测为例


在实际生活中,房屋租金作为一个重要的经济指标,被广泛应用于城市规划、财务投资等方面的决策中。然而,如何准确地预测房屋租金价格却一直是一个具有挑战性的问题。

本文将介绍如何使用Lasso回归和交叉验证方法来解决高维数据下的房屋市场租金价格预测问题,并详细阐述R语言在此过程中的应用技巧和实现方法。


背景


Goal: 利用主体物业和租户的各种特征来预测房屋市场租金价格

Data: 在Inter-University Consortium for Politicaland Social Research(ICPSR)数据库中找到的2007年美国住房调查(全国微观数据)有65,000个观测值和超过500个变量

Limitation: 某些特征的不可观测

有部分特征在超过80%的观测值中没有数据的,导致没有办法配合预测模型进行变量的筛选

Model used:

Regularization: 10.fold Lasso & AICc Lasso

适合于大量数据处理(高维度多变量)

image.png

数据清理


使用R语言处理无法观测到的变量︰

  1. 观测codebook去除无关的变量
  2. 选择去除50%以上失踪的变量(可以反复对比去除了不同变量后的模型)
  3. 对于剩下的变量去除含有NA的观测值
  4. visualize部分重要变量是否合理

image.png

观测数据


大多数租金集中在一千美元左右,其平均租金(由红线标示)为1025美元(直方图呈现出略微右偏的近似正态分布)。

观测一些关键特征的信息,这些特征有助于预测公平市场租金,包括卧室数量、楼层数量、地块面积和主体单位的平方英尺面积。

image.png

点击标题查阅往期内容


贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据


01

02

03

04


模型分析


Regularization - Lasso Model

image.png

使用K-Fold cross validation确定最佳的lamda值:

数据被分成K个相等的部分,除了第k个折叠之外的所有数据都用于训练模型,第k个折叠用于测试模型,记录离样本外的偏差。

重复此过程,以至每个折叠都有机会成为测试集。导致离样本外偏差最小的lamda是最优lamda值,在案例中我采用K-10:

最终计算最小deviance中的样本内R^2与通过10 Fold cross validation计算出的样本外R^2。

image.png

左侧是套索正则化路径的绘图。我们可以看到随着lamda的增加,系数逐渐趋近于零。

右侧的图表显示了10Fold crossvalidation的离样本外偏差误差估计。最优lamda由最左边的垂直虚线表示。图表上的最低点实际上位于图表的最左侧,lamda的值最小。

与典型的图表不同,这个图表不是呈“u形。

在这种情况下,这意味着选择了最复杂的模型作为最优解。

image.png

模型分析


右图的值表示非零系数及其值,取重要变量进行合理性分析: 卧室数量:每增加—个卧室,月租金价格天约增加143.51美元,其他变量和特征保持不变。这个值是合理的,因为2个卧室的单位的租金价格很可能大于1个卧室的单位的租金价格。楼层数的系数是负数:对于每增加个楼层的单位或物业,月租金价格将减少约10.55美元,其他变量和系数保持不变。这个负系数是合理的,因为楼层数较多的物业更有可能是紧凑型的。

image.png

模型分析


与10-Fold cross validation相比,我还使用了一个计算上较为简便的替代方法是Akaike Information Criterion(AICc)。

在高维数据中,AICc倾向于产生过于复杂的模型,导致过拟合。然而,AICc得到的非零系数及其值与之前相同。

在右图中,我们展示了在我们的情况下,由AIC 、 AICc和10-Fold cross validation选择的最优lamda是相同的,即黑色、橙色和蓝色虚线重叠的部分.

image.png

总结


在执行Lasso Regularization后,我们看到模型从数据集中选择了186个变量中的76个变量。但有一些重要变量地没有包含在模型中,例如主体物业的建造年份和浴室数量,因为其中缺失了大量的观测值。

因为数据缺失较多所以模型只能用作客观预测,不能很好的反应各个变量之间的相关性, 在数据清理方面,选择去除含50%及以上数据缺失的变量也是一个需要权衡的方向,因为这个门槛选择太低又可能导致数据少无法正确反应变量之间的关系作用,而门槛太高就会出现没办法选择到一些比较重要的变量。

此模型不具备自适应性,所以需要新数据的更新支持才能更好的保证其预测的准确性。

image.png

目录
打赏
0
0
0
0
111
分享
相关文章
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
R语言中的机器学习库:caret与mlr的深度解析
【9月更文挑战第2天】Caret和mlr是R语言中两个非常重要的机器学习库,它们在数据预处理、模型构建、调优和评估等方面提供了丰富的功能。Caret以其易用性和集成性著称,适合初学者和快速原型开发;而mlr则以其全面性和可扩展性见长,适合处理复杂的机器学习项目。在实际应用中,用户可以根据具体需求和项目特点选择合适的库进行开发。无论是学术研究、商业智能还是教育场景,这两个库都能为数据科学家和机器学习爱好者提供强大的支持。
R语言数据变换:使用tidyr包进行高效数据整形的探索
【8月更文挑战第29天】`tidyr`包为R语言的数据整形提供了强大的工具。通过`pivot_longer()`、`pivot_wider()`、`separate()`和`unite()`等函数,我们可以轻松地将数据从一种格式转换为另一种格式,以满足不同的分析需求。掌握这些函数的使用,将大大提高我们处理和分析数据的效率。
R语言是一种强大的编程语言,广泛应用于统计分析、数据可视化、机器学习等领域
R语言是一种广泛应用于统计分析、数据可视化及机器学习的强大编程语言。本文为初学者提供了一份使用R语言进行机器学习的入门指南,涵盖R语言简介、安装配置、基本操作、常用机器学习库介绍及实例演示,帮助读者快速掌握R语言在机器学习领域的应用。
206 3
R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域
【10月更文挑战第21天】R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域。本文将介绍R语言中的一些高级编程技巧,包括函数式编程、向量化运算、字符串处理、循环和条件语句、异常处理和性能优化等方面,以帮助读者更好地掌握R语言的编程技巧,提高数据分析的效率。
104 2
|
6月前
R语言基于表格文件的数据绘制具有多个系列的柱状图与直方图
【9月更文挑战第9天】在R语言中,利用`ggplot2`包可绘制多系列柱状图与直方图。首先读取数据文件`data.csv`,加载`ggplot2`包后,使用`ggplot`函数指定轴与填充颜色,并通过`geom_bar`或`geom_histogram`绘图。参数如`stat`, `position`, `alpha`等可根据需要调整,实现不同系列的图表展示。
110 9
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
R语言基础机器学习模型:深入探索决策树与随机森林
【9月更文挑战第2天】决策树和随机森林作为R语言中基础且强大的机器学习模型,各有其独特的优势和适用范围。了解并熟练掌握这两种模型,对于数据科学家和机器学习爱好者来说,无疑是一个重要的里程碑。希望本文能够帮助您更好地理解这两种模型,并在实际项目中灵活应用。
R语言数据清洗:高效处理缺失值与重复数据的策略
【8月更文挑战第29天】处理缺失值和重复数据是数据清洗中的基础而重要的步骤。在R语言中,我们拥有多种工具和方法来有效地应对这些问题。通过识别、删除或插补缺失值,以及删除重复数据,我们可以提高数据集的质量和可靠性,为后续的数据分析和建模工作打下坚实的基础。 需要注意的是,处理缺失值和重复数据时,我们应根据实际情况和数据特性选择合适的方法,并在处理过程中保持谨慎,以避免引入新的偏差或错误。
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等