张志锋 崔亚东 崔霄
摘要:为了更精确快速的预测二手房房价,将对最近抓取的南京二手房数据集进行数据样本分析。通过对样本的基本信息和属性的可视化分析,对数据集进行异常识别填补、哑编码、数据标准化等数据预处理工作;提出将使用XGBoost算法对南京二手房数据集进行训练建模;结合线性回归,岭回归和lasso回归,对训练结果进行比较,XGBoost模型应用效果比较好,在预测房价上具有一定的实用性。
关键词:XGBoost;岭回归;lasso回归;二手房
中图分类号:F832.4;TP181 文献标识码:A 文章编号:1007-9416(2019)11-0178-03
0 引言
房地产市场的发展快速,尤其是最近几年,多数家庭都会选择购买房屋。由于购房为消费者的刚性需求,而二手房的性价比较高,所以在市场上的交易量也较大,二手房房价的精准快速预测有着重要意义。
XGBoost是陈天奇在arixv上发布的一篇关于XGBoost的论文,而根据kaggle競赛在2015年的统计,29只冠军队中,有17只使用了XGBoost算法,其中有8只队伍仅使用了XGBoost一种算法。XGBoost的基分类器为CART回归树,建了高可扩展的端到端的boosting系统,提出了具有合理理论支撑的分布分位调整框架;介绍了并行使用稀疏处理树的学习算法;提出了基于缓存块的结构便于外存树的学习。
1 数据集分析
在对进本信息进行可视化[1]之前,可以先通过pandas库中的数据描述函数对数据有个整体的认知。还可以通过对数据进行词云化整理,通过二手房信息中经常出现的高频词,确定需要可视化的特征属性,从而不需要对所有的特征进行可视化。
对数据进行总体可视化,分析数据规律。
(1)通过图1比较中文数据词云[2]和特征值,对比特征出现频率和特征间对应关系,并且决定接下来如何对数据进行异常值处理[3]等。(2)通过图2二手房数量条形图比较二手房分布信息。(3)通过图3建筑面积直方图分析房屋在不同面积分布区域的数量信息。(4)通过图4房屋户型条形图分析不同类型房屋所占比例,便于后续的选择户型进行哑编码处理。(5)通过图5二手房总价与建筑面积分布散点图分析异常值,对异常值进行处理。
2 南京二手房房价预测模型
2.1 XGBoost模型原理分析
给出n个实例,m维特征的情况下,D={(xi,yi)}(|D|=n, xi∈m,yi∈),回归树的继承模型(多个模型相加的过程)使用k个相加函数预测结果。
为了避免出现过拟合的现象,需要给模型增加正则项来修正模型。一种标准的正则化目标项为损失函数与正则项组合。这里主要使用L2正则。
根据boosting算法思想,回归树的集成模型不能再传统的欧几里得空间中得到合适的解,而应该通过迭代求近似解[4]。
2.2 数据预处理
在对二手房数据集建模时,首先需要对数据集进行清理,将数据集中一些缺失值和异常数据剔除掉,保证数据的准确性;查看数据集会发现,数据集中会有一些特征项需要进行哑编码操作,将对象类型(Object)的数据转化为模型可以识别的语言,比如在本数据集中需要处理的对象类型特征包括二手房所在区域,户型,楼层等信息,还有一些例如建筑面积等特征需要转换为单精度类型(float)等。
2.3 超参数优化
XGBoost算法十分的精致,可以处理各种不规则的数据,而使用XGBoost构造模型过程中,提高模型的表现并不是那么容易,而对于提高模型表现来说,参数的调整十分必要。本文中,主要通过网格交叉验证的方式,来对参数进行调整,主要调整的参数有learning_rate,max_depth,n_estimators。每个参数给出一定范围的值,共进行192次的筛选,最终得到了最佳参数:Best: 0.796658 using {‘learning_rate:0.1,‘max_depth:6,‘n_estimators:200}。
2.4 特征选择
关于特征选择有很多算法可以运用。这里使用基于模型的特征排序算法,对于此次建模来说,也是比较高效的一种,在模型建立过程中对特征进行筛选排序,在不影响预测准确度的情况下,抽取最少的特征出来。这里共抽取了36维的特征,即保证了预测准确度,又最大限度的减少了训练模型时间。
2.5 模型训练
这里按照训练集与测试集8:2的比例对数据集进行随机抽样,通过超参数优化以及特征选择之后,在训练集上对模型进行训练,最后得到模型的训练R2(R-Square)为:0.796558。
模型训练结果可以看出,对模型在训练集上的表现还不错,例如在相对正常的数据集里预测效果很好,在一些异常值上,并没有完美的重合,可以看出模型并没有过拟合,有相当稳定的鲁棒性。
2.6 评价指标
本文是通过XGBoost算法在南京二手房数据集训练模型,主要是为了准确预测二手房房屋总价,所以评价标准即为预测的准确度。本模型的评价指标为在测试集中计算模型的R2,以最终的分数作为该模型的评价指标。计算公式如下:
R2=1-
3 不同算法实例比较
本文对南京二手房数据集使用了线性回归、岭回归与lasso回归,并与XGBoost算法进行了对比。
(1)多变量线性回归模型见图6;(2)lasso回归模型见图7;(3)ridge回归模型图见图8;(4)XGBoost集成算法模型见图9。
从图6到图9中可以看出,在对数据集的测试中,线性回归表现出了明显的欠拟合,岭回归和lasso回归表现良好,但在测试集上效果都不如XGBoost算法。
4 结语
本文提出了基于XGBoost集成算法的二手房房价预测模型,并通过对数据进行预处理,特征选择,基分类器选择,网格交叉验证,超参数优化构建出了集成模型,通过对数据集的随机抽样分割为训练集和测试集,并在测试集上对模型进行评估,R2值达到0.796558,在保证准确度的情况下,尽可能的对模型进行了优化。
参考文献
[1] 刘彧祺,张智斌,陈昊昱,等.基于XGBoost集成的可解释信用评分模型[J].数据通信,2019(03):27-32.
[2] 钱仲文,陈浩,纪德良.一种基于XGBoost算法的月度负荷预测方法[J].浙江电力,2019,38(05):77-82.
[3] 陈欣,于俊洋,赵媛媛.基于CNN和B-LSTM的文本处理模型研究[J].轻工学报,2018,33(05):103-108.
[4] 朱颢东,薛校博,李红婵,孟颍辉.海量数据下基于Hadoop的分布式FP-Growth算法[J].轻工学报,2018,33(05):97-102+108.