在这篇文章中,我们将着重探讨高维数据下的机器学习应用,以房屋市场租金价格预测为例。
在实际生活中,房屋租金作为一个重要的经济指标,被广泛应用于城市规划、财务投资等方面的决策中。
然而,如何准确地预测房屋租金价格却一直是一个具有挑战性的问题。
本文将介绍如何使用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
适合于大量数据处理(高维度多变量)
Junjun Li
数据清理
使用R语言处理无法观测到的变量︰ 1.观测codebook去除无关的变量2.选择去除50%以上失踪的变量(可以反复对比去除了不同变量后的模型) 3.对于剩下的变量去除含有NA的观测值
visualize部分重要变量是否合理
观测数据
大多数租金集中在一千美元左右,其平均租金(由红线标示)为1025美元(直方图呈现出略微右偏的近似正态分布)。
观测一些关键特征的信息,这些特征有助于预测公平市场租金,包括卧室数量、楼层数量、地块面积和主体单位的平方英尺面积。
模型分析
Regularization – Lasso Model
使用K-Fold cross validation确定最佳的入值:
数据被分成K个相等的部分,除了第k个折叠之外的所有数据都用于训练模型,第k个折叠用于测试模型,记录离样本外的偏差。
随时关注您喜欢的主题
重复此过程,以至每个折叠都有机会成为测试集。导致离样本外偏差最小的入是最优入值,在案例中我采用K-10:
最终计算最小deviance中的样本内R^2与通过10.Fold cross validation计算出的样本外R^2。
左侧是套索正则化路径的绘图。我们可以看到随着lamda的增加,系数逐渐趋近于零。
右侧的图表显示了10.Fold crossvalidation的离样本外偏差误差估计。最优入由最左边的垂直虚线表示。图表上的最低点实际上位于图表的最左侧,lamda的值最小。
·与典型的图表不同,这个图表不是呈“u形
在这种情况下,这意味着选择了最复杂的模型作为最优解。
模型分析
右图的值表示非零系数及其值,取重要变量进行合理性分析: 卧室数量:每增加—个卧室,月租金价格天约增加143.51美元,其他变量和特征保持不变。 这个值是合理的,因为2个卧室的单位的租金价格很可能大于1个卧室的单位的租金价格。 楼层数的系数是负数:对于每增加个楼层的单位或物业,月租金价格将减少约10.55美元,其他变量和系数保持不变。这个负系数是合理的,因为楼层数较多的物业更有可能是紧凑型的。
模型分析
与10-Fold cross validation相比,我还使用了一个计算上较为简便的替代方法是Akaike Information Criterion(AICc)
在高维数据中,AICc倾向于产生过于复杂的模型,导致过拟合。然而,AICc得到的非零系数及其值与之前相同
·在右图中,我们展示了在我们的情况下,由AIC 、 AICc和10-Fold cross validation选择的最优lamda是相同的,即黑色、橙色和蓝色虚线重叠的部分.
总结
在执行Lasso Regularization后,我们看到模型从数据集中选择了186个变量中的76个变量。但有一些重要变量地没有包含在模型中,例如主体物业的建造年份和浴室数量,因为其中缺失了大量的观测值。
因为数据缺失较多所以模型只能用作客观预测,不能很好的反应各个变量之间的相关性, 在数据清理方面,选择去除含50%及以上数据缺失的变量也是一个需要权衡的方向,因为这个门槛选择太低又可能导致数据少无法正确反应变量之间的关系作用,而门槛太高就会出现没办法选择到一些比较重要的变量。
此模型不具备自适应性,所以需要新数据的更新支持才能更好的保证其预测的准确性。
关于作者
Junjun Li
在此对Junjun Li对本文所作的贡献表示诚挚感谢,他在加州大学圣克鲁兹完成了应用经济与金融专业的硕士学位,专注机器学习、数理金融、应用(计量)经济学领域。擅长R语言、Python。