1. 引言
住房不管在任何时期都是人们最基本的生活需求,与人民的生活品质密切相关,然而近几年我国各地房价持续上涨成为了社会的热点关注话题。与此同时,由于城市内可以用来建筑新房的土地越来越少,二手房交易市场越来越活跃,逐步取代新房在房地产行业占据主导地位。因此对二手房价格进行精准的预测,不仅可以为老百姓买卖房屋提供指导意见,并且对政府合理调控房地产交易市场具有重要意义。
近年来,随着互联网、大数据等技术的发展,有学者开始尝试使用数据挖掘、机器学习的新技术去预测房价,与其他方法相比,机器学习在非线性和多元统计上表现出了良好的应用前景 [1]。本文使用随机森林算法 [2] 对重庆市二手房价格进行预测,并结合岭回归、Lasso回归和回归决策树模型对训练结果进行比较,使用RMSE和R2对模型进行评估,最后结果显示随机森林模型的均方根误差RMSE最小和拟合优度R2最大,对二手房价格的预测误差最小。
2. 数据分析及预处理
2.1. 数据集分析
由于考虑到城乡地区二手房价格有一定的差距,因此本文仅对重庆市九大主城区的二手房价格进行分析及预测。本文的数据集有96,346条样本,每个样本包含了20个特征,其中14个为数值型特征,6个为类别型特征。被解释变量为单位面积房屋价格(元/平方米),解释变量分为宏观因素与微观因素,宏观变量包括经济因素和人口因素相关的7个特征,如地区生产总值,全体居民人均可支配收入、年末常住人口等,微观因素包括13个房屋基本信息相关的特征,如成交年月、房屋面积、所属区域、房屋户型等。其中宏观变量来自于重庆市统计年鉴,微观变量是使用网络爬虫技术于重庆市链家网站上获取,之所以选择链家网站进行数据获取是因为链家是以二手房交易起步的房屋交易平台,其房源信息的真实性、完整性和丰富性要高于其他平台。
2.2. 数据预处理
2.2.1. 数据清洗
在对数据进行分析处理之前,首先要对数据进行清洗工作,主要包括处理重复值、缺失值和异常值,避免这些脏数据影响最终的预测结果。使用Python的工具包检查到本数据集不存在重复值与缺失值,然后使用箱线图分析法检测到三个异常点,对异常点进行删除,最终有效样本为96,343条。
2.2.2. 离散变量重编码
离散型变量是不能直接用于建模,需要对这些数据进行重编码,将字符型变量转化为数值型变量,比如本数据集中需要处理的字符型变量有户型、建筑结构、装修状况、所属区域、商圈等信息。
2.2.3. 特征归一化
对离散型变量进行数值化后,由于各个特征取值的大小不同,会造成特征空间中样本点的距离被个别特征值所主导,归一化 [3] 是为了将数据映射到0~1之间,去掉量纲的过程,使计算更加的合理,让不同维度之间的特征在数值上有一定的可比性,提高预测的准确性。公式如下:
2.2.4. 对非正态数据进行正态化
由于大多数机器学习不能很好的处理非正态数据,需要将偏态数据进行正态化,本文选择使用Box-Cox变换 [4],其一般变化形式为:
其中
表示变换后得到的新变量,y表示原始连续变量,
表示变换参数,Box-Cox变换要求原始变量y取值为正。经检查存在3个倾斜的数值型变量,使用Box-Cox变换将其进行转化,如图1为房屋面积转化前分布图和P-P图,图2为房屋面积转化后分布图和P-P图。
Figure 1. Curve: Distribution of raw data
图1. 原始数据分布
Figure 2. Curve: Data distribution after conversion
图2. 转换后数据分布
3. 随机森林模型
随机森林是一种集成算法,既可以应用于分类问题也可以应用于回归问题,对于分类问题就是以少数服从多数的原则,将多颗决策树结果作为最终判断样本的类别;对于回归问题,样本最后的预测结果为多颗树的结果求平均值 [5]。由于被解释变量单位面积房屋价格为连续型的数值,因此本文选择建立随机森林回归模型。由于计算量巨大,本文使用Python中的软件包RandomForestRegressor实现基于随机森林回归模型的二手房样本训练。
3.1. 相关参数的设置
使用python拟合随机森林回归模型时,主要调整的参数有随机森林所包含的决策树的个数(n_estimators)、决策树的最大深度(max_depth)、决策树根节点或中间节点能够继续分割的最小样本量(min_samples_split)、决策树叶节点的最小样本量(min_samples_leaf)。通过10重交叉验证的网格搜索,得到单棵回归决策树的最佳参数组合为max_depth = 19,min_samples_leaf = 2,min_samples_split = 2,最后通过手动调参确定随机森林是决策树个数n_estimators = 500,在测试集上得到的RMSE为129.528,结果较为理想。
3.2. 模型评估
对模型的评估选择均方根误差RMSE和拟合优度R2两种指标,均方根误差RMSE对模型的预测效果做定量的统计值,有关计算公式如下:
其中n表示预测的样本量,
表示被解释变量的真实值,
表示被解释变量的预测值。MSE或RMSE越小,说明模型对数据的拟合效果越好。拟合优度R2是指对观测值的拟合程度,计算公式如下:
,
R2最大值为1,R2值越接近1,说明对数据的拟合效果越好。
将数据集按照8:2的比例划分训练集与测试集,经过调整参数之后在训练集上对模型进行训练,再将划分出来的19,269条测试集上的样本对二手房价格进行预测,预测结果如表1所示,模型在训练集和测试集上的评分如表2所示,由于测试集上的样本量非常多,因此表1仅选择20条进行展示,其中
反映了预测值(
)与真实值(
)之间的匹配情况。
反映了预测值(
)与真实值之间的实际误差。从表1可以看到匹配度的取值在0.9~1.01之间,预测的效果较好。表2是分别在训练集与测试集上的均方根误差与拟合优度,从表2中可以看到测试集上的拟合优度为0.99867,非常接近1,说明建立的随机森林回归模型能较好挖掘训练集上各特征与被解释变量之间的关系并将其很好的拓展到了测试集样本上。
Table 1. Prediction results of random forest for test sets
表1. 随机森林对测试集的预测结果
Table 2. Test set and training set score comparison
表2. 训练集与测试集评分对比
4. 不同算法实例比较
对重庆市九大主城区二手房数据集同时使用岭回归模型、Lasso回归模型 [6] 以及单个回归决策树模型,并与随机森林回归模型进行对比。各个模型在测试集上的表现如表3所示,从表3可以看到,在对测试集上的样本进行预测时,岭回归和Lasso回归RMSE略大于随机森林,回归决策树相对较好,但都不如随机森林算法。
Table 3. RMSE and R2 of each model on the test set
表3. 各模型在测试集上的RMSE和R2
5. 结束语
本文以重庆市九大主城区二手房价格预测为基础,使用岭回归、Lasso回归、回归决策树和随机森林,经实验证明,随机森林回归算法在测试集上取得的RMSE最小,R2最大,说明集成算法相较于传统的回归模型具有一定的优越性,基于二手房价格建立的随机森林回归模型可以推广应用到其他住宅价格预测中去,得到的房价预测具有一定的指导意义。