摘要:本文关注房价的影响因素,从79个影响特征中选择重要的特征,并且使用特征处理方案来得到更优特征,用以训练多个回归模型,包括Lasso回归模型,以及XGBoost回归模型,最终使用Stacking模型融合方案来预测房价。在测试数据集中的表现模型融合优于单模型结果,所以最终使用模型融合方案来对房价做预测。通过此次房价预测,旨在发现房屋价格的影响因素以及得到房屋预测模型用以将来迁移学习其他地域的房屋价格预测。
关键词:模型融合;线性回归;房价预测;建模分析
中图分类号:F299.23 文献识别码:A 文章编号:2096-3157(2020)19-0120-03
一、研究背景
随着大数据时代的到来,具备大数据思想至关重要,人工智能技术在各行各业的应用已是随处可见。在生产制造业,人工智能技术可以极大地提高生产效率,节省劳动成本,提升产品质量;在服务业,可以优化行业现有产品和服务,提升其质量和劳动生产率;金融、医疗等领域,也因人工智能技术的加入而愈发繁荣,人们的生活也因为其更加便利。
房屋作为每个公民的必需品,在生活中的地位非常重要,买房已成为人们谈论较多的话题,如何在合适的时间买房卖房也成为了人们关注焦点,因此在这样的背景下,产生了本次的房价预测相关问题。目前在房价预测领域主要体现在两个问题上:一是选择合适的数学模型来预测房价走向,用以评估房价的变化;二是寻找引起房价变化的原因,国家可借此来帮助市场协调房价变化,公民可以根据时事来判断入手时机。本文主要分析第一个问题,即选择合适的数学模型来帮助预测房价。
本文将从波士顿的房价数据为着手点,以该市的房屋的相关属性来作为特征,筛选重要信息,并且将一些信息做适当处理,最终用以预测该市的其他房屋价格。
二、研究方法
1.线性回归算法简介
(1)算法思想
在统计学中,线性回归[2](Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析[3][4]。这种函数是一个或多个称为回归系数的模型参数的线性组合。一元线性回归,即只含有一个自变量的线性回归模型。
(2)模型求解(梯度下降法)
梯度下降法,即利用沿着梯度下降最快的方向求偏导数,得到损失函数的全局最小值时的参数θ,涉及到偏导数、学习速度、更新、收敛等问题[6][7]。首先对θ赋值,这个值可以是随机的,也可以是一个零向量;然后改变θ的值,使得J(θ)按梯度下降的方向进行减少; 当J(θ)下降到无法下降时为止,即J(θ)对θ的导数为0时,比较J(θ)的值是否有变化。
对损失函数J(θ)求偏导,得到:
更新过程可以理解成:θi沿着梯度下降最快的方向进行递减的过程。
等式左边的θi表示更新之前的值,等式右边表示沿着梯度方向减少的量,α表示步长,也称作学习速度,这个值需要人工手动设置。
不断更新θi的值直到J(θ)收敛,可以通过比较J(θ)的前后两个值是否有发生变化(继续下降),当没有发生变化时表示已经达到了最小值(可能是局部最小值)。
2.XGBoost算法简介
(1)算法思想
XGBoost是Boosting[8][9][10]算法的其中一种。Boosting算法的思想是将许多弱分类器集成在一起形成一个强分类器。因为XGBoost是一种提升树模型,所以它是将许多树模型集成在一起,形成一个很强的分类器。而所用到的树模型则是CART回归树模型。
该算法思想就是不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数,去拟合上次预测的残差。当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数,最后只需要将每棵树对应的分数加起来就是该样本的预测值。
(2)XGBoost模型介绍
在了解了什么是XGBoost之后,那么如何能够学习这个模型呢?答案是,所有监督学习模型都是如此:定义目标函数并对其进行优化。首先,定义目标函数如下:
接下来,在目标函数基础上,我们开始考虑每一棵树的学习过程,由于不能够用一棵树完成最终的目标,所以我们需要每一次在上一次的基础上做目标逼近。我们使用一个加法策略:修复我们学到的东西,并一次添加一个新树。然后我们有:
由公式可知,每一次更加逼近我们的目标值obj最小。由于一般的模型会采用均方误差(MSE)来作为损失函数,所以目标函数又变成了:
更一般的,我们不仅仅采用MSE来作为损失函数,还会考虑将目标函数做泰勒二阶展开,以方便模型优化。
3.Stacking 融合模型介绍
Stacking简单理解就是讲几个简单的模型,一般采用将它们进行K折交叉验证[3]输出预测结果,然后将每个模型输出的预测结果合并为新的特征,并使用新的模型加以训练。
三、实验及结果
1.实验过程
(1)数据预處理
我们采用Python中的Pandas来加载数据,并做数据展示,训练数据展示如表所示。
每一行就是一个房屋,每一列是房屋的属性或者价格。一共包含有79列的房屋属性。由于房屋价格在做数据描述时,能够发现其大致符合高斯分布[5],所以我们加入了房屋价格的平滑处理,我们最终得到训练集的特征大小为1460×79,其中1460为房屋数目,79为特征数目,还有一列对应的房屋价格label的数据。与此同时,也有1459×79大小的测试集。
(2)训练模型
本项目中的模型训练,共采用三种方案来考虑。第一种方案为线性回归。将相关特征作为输入,目的是为拟合一条符合房屋价格分布的曲线。第二种方案为采用XGBoost算法来做回归预测。第三种方案为采用两者综合,使用stacking的集成方案来完成房价预测。
①回归模型
Lasso回归为在普通回归基础上添加了L1正则化,增大稀疏性的同时也增大了模型的泛化能力。在训练好该模型后,查看相关模型参数如图1所示。
这里分别摘取影响大小为前后10条的模型特征,由图1可知,比较正相关的特征有GrLiveArea(生活区面积)。我们也可以尝试绘制相关性系数矩阵来得到特征的有效性。我们使用fold为5的交叉验证方案,损失值为RMSE(均方根误差)来确定模型的有效性,经过训练后,获取其RMSE为0.128。说明该结果较好,但仍有一定的提升空间。
②XGBoost
XGBoost作为boosting算法的一种,因为其训练速度快,泛化性强著称,在本项目中,使用其回归模型来做房价预测。由于boost算法是按照决策树迭代更新的,所以根据迭代次数查看训练和测试的RMSE图像后,训练迭代次数的增长,训练集的RMSE逐渐减少,但是测试时的RMSE在迭代90次左右后进入拐点,下降速率降低,所以采用迭代次数为100次左右效果是最好的。
③ Stacking
Stacking集成方案為将数据提前拆分为两部分:第一部分为初始模型训练,第二部分为二级模型训练。第一部分将训练两个模型:Lasso回归模型与XGBoost回归模型。第二部分数据将使用这两个模型做预测,得到的两个预测结果再做线性拟合,得到二级模型。查看两个一级模型的相关性如图2所示。
由图2可以看出,两个模型在一定程度上是符合正相关的,所以使用这两个模型来做线性拟合,是有意义的尝试。
2.实验结果
本文一共采用了三种方案来做房屋价格预测,分别是线性回归、XGboost回归模型、Stacking集成方案,其中第三种方案为前两种的方案模型融合。最终结果显示,第三种方案的平均RMSE为0.113,低于前两种模型结果,是一个很好的方案。
四、研究结论与建议
综上所述,本文采用了Lasso线性回归、XGboost以及两者的集成融合stacking模型,最终得到多项结果,也证明了我们提出的融合模型效果最佳,也对测试集中的其他房屋做出了预测,得到房屋的预测结果。与此同时,探索了多个特征对房屋预测模型的影响,思考了大数据、人工智能在帮助我们解决生活中的问题可能性。这次解决房价预测,也能够迁移到国内的房价预测方案,该模型为将来国内城市的房屋预测提供了模型基础。
通过本次房屋预测模型的建立,能够得到影响房屋总价值的不仅仅是房屋居住总面积这一个重量级特征,还有街道名称、装修完整度等其他影响特征,并且有些看起来不是很重要的特征也能够影响房价,例如房屋类型、功能等。数据帮助我们筛选出重要的特征,排除了一些“想当然”的结果,能够更好地抓住事情的本质,这就是大数据辅助我们解决生活中的事情的实际例子。
参考文献:
[1]Tianqi Chen.A Scalable Tree Boosting System[D].CN:ACm,2016.
[2]T Chen,C Guestrin.Regression shrinkage and selection via the lasso[D].united american:princeton university,1996.
[3]李航.统计学习方法[M].北京:清华大学出版社,2012:10.
[4]周志华.机器学习[M].北京:清华大学出版社,2017:53.
[5]Qcon 2017 feature engineering by Gabriel Moreira.
[6]Thomas M Cover,Joy A.Thomas.Elements of Information Theory.2006.
[7]Christopher M.Bishop.Pattern Recognition and Machine Learning.Springer-Verlag.2006.
[8]J H Friedman.Greedy Function Approximation:A Gradient BoostingMachine[EB/OL].https://statweb.stanford.edu/~jhf/ftp/trebst.pdf.
[9]J H Friedman.Stochastic Gradient Boosting[EB/OL].https://statweb.stanford.edu/~jhf/ftp/stobst.pdf.
[10]J H Friedman.Stochastic Gradient Boosting[EB/OL].https://statweb.stanford.edu/~jhf/ftp/stobst.pdf.
作者简介:
王景行,唐山市第二中学学生。