爱荷华州埃姆斯市房价预测

1. 数据获取及预处理

1.1 数据来源

我们使用的数据集来自Kaggle。

1.2 数据说明

数据集中包括训练模型所需的训练数据集(train.csv),以及用于测试模型性能的测试数据集(test.csv)。每一条数据记录表示的是每间房屋的相关信息,其中训练数据有1460条,测试数据有1459条。数据的特征列有79个,其中35个是数值类型的,44个类别类型。由于特征过多,受篇幅限制,我们选取其中比较重要的特征进行介绍,其余特征可以参考数据集中的data_description.txt。

  • YearBuilt:建造年份
  • TotalBsmtSF: 地下室面积
  • GrLivArea: 生活面积
  • 1stFlrSF:一楼面积
  • FullBath: 带浴缸或淋浴的盥洗室数量
  • OverallQual:对房子的整体材料和装修进行评估
  • GarageCars:车库可容纳的车辆数
  • GarageArea: 车库面积
  • YearBuilt:建造年份

1.3 数据预处理

完成了如下的数据预处理工作。

1.3.1 缺失值处理

我们统计一下数据的缺失值,

可以发现有一些特征缺失值达到了50%以上,对于此类我想在后续处理过程中最好直接剔除该特征。那些缺失值少的特征,我们可以根据不同特征进行不同的分析。其中Garage为前缀的几个特征,可以发现它们具有相同的缺失值个数,有可能这些缺失是来自同几条数据。经过后续的数据可视化以及数据相关度分析,我们发现车库的重要特征是GarageCars和GarageArea,其他的特征对于房屋价格影响甚微,外加我们的经验可以判断,这几个车库特征可以舍弃。同样的,我们可以发现这后边的这几个缺失值似乎都是不那么重要的特征,外加有非常多(将近80个)的特征待分析,可以直接删去含有缺失值的特征。不过Electrical这个特征只有一个缺失值,我们可以选择删除该条数据而不是特征。这样我们就得到了不含缺失值的数据了。

1.3.2 异常值处理

我们经过后续的相关性分析,选出具有代表性的特征,之后根据这个特征和房价的关系分析异常值。选出的代表特征是‘GrLivArea’,很好理解,房屋价格和居住面积的关系密不可分。画出房屋价格和售价的散点图:

一般来讲房屋价格和居住面积应该呈正比关系,那么右下角的两个点应该是异常值,我们剔除这两条数据。

在最终报告中会有一些更详细的预处理策略。

2. 数据分析与可视化

先看下房屋价格的分布情况:

近似呈正态分布(positively skewed)。均值方差等见右图。

之后看一下各个特征的相关矩阵:

我们先删去相关性大的特征,再选取和房屋价格相关系数最大的几项特征列出:

  • ‘OverallQual’,‘GrLiveArea’和房屋价格的相关性非常强,入选后续预测的判断标准。
  • ‘GarageCars’和’GarageArea’因为相关系数为0.89,很大,留一个就够了,选择和房屋价格相关系数更大的’GarageCars’。
  • ‘TotalBsmSF’和’1stFlrSF’同理,这二者也类似,所以我们选择‘TotalBsmSF’。
  • ‘YearBuilt’建造年份入选,按道理该特也会和价格相关。

接下来我们看一下房屋价格和这些特征的关系图: 首先看下价格和总评的关系,用盒图来展示:

可以看到,总体评估越高,房屋价格越高。

接下来看一下价格和建造年份的关系:

关系不是非常明显,不过似乎处于中间区域的房子价格偏低。

在最终报告中会有一些更详细的可视化策略。

3. 模型选取

使用LASSO回归、弹性网络回归、核岭回归、XGBoost等进行预测,也可以使用深度学习的方法(CNN,LSTM)进行预测。

4. 挖掘实验的结果

选出了重要程度较高的几个特征,如前文分析所示。接下来根据这些特征进行房屋价格预测。

5. 存在的问题

一些特征可能不是很有代表性,导致结果不是非常好。我们也许可以构造出一些特征进行预测。同时可以结合CNN,或许可以提高准确率。

6. 下一步工作

完善之前的方案,进行更精准的预测。

7. 任务分配与完成情况

任务分配如开题报告所述,每个人的任务进展都根据任务需求互相稳步推进中。