vlambda博客
学习文章列表

基于朴素贝叶斯算法对某地区二手房成交周期的预测

 本文采集了某地区成交二手房的部分数据,以期望根据已成交的二手房数据,并结合朴素贝叶斯算法对二手房的成交周期进行预测。



主要的思路是把二手房的房屋单价,户型与楼层作为数据集的 3个特征,成交周期作为数据集的类别。选择一定数量的数据作为训练集,计算出类别的先验概率P(成交周期),以及各个特征的类条件概率P(单价|成交周期)、P(户型|成交周期)、P(楼层|成交周期)等,根据朴素贝叶斯算法建立预测模型,然后再选择一定量的数据作为测试集,对预测模型的准确度进行评估。





01



朴素贝叶斯预测模型



此案例套用朴素贝叶斯算法得出公式如下:

第一步,计算先验概率P(成交周期)。由于成交周期是以天为单位的连续性数值,需要对数据进行转换处理,本文采用分段法将成交周期分为5个数值,分别代表的含义是1个月内成交,1个月以上到3个月内成交,3个月以上到半年内成交,半年以上到一年内成交以及一年以上成交。为了方便描述,以下简称为P(成交周期1),P(成交周期2),P(成交周期3),P(成交周期4)和P(成交周期5

本文使用的训练集记录有1650条,成交周期为1-5的数据分别有430条,487条,316条,177条,79条,得出先验概率P(成交周期)如下表所示

名称

取值

P(成交周期1

0.2887844190732035

P(成交周期2

0.3270651443922095

P(成交周期3

0.2122229684351914

P(成交周期4

0.11887172599059771

P(成交周期5

0.05305574210879785

 第二步,计算类条件概率。房屋单价是连续性数值,楼层和户型是离散型数据,都需要进行转换处理。房屋单价由低到高划分了10个区间,映射为1-10;楼层划分为低楼层,高楼层和中楼层,映射为1-3;户型由小到大划分了5个区间,映射为1-5。数据转换后就可以进行计算了。根据上面的朴素贝叶斯公式需要计算出P(单价,楼层,户型|成交周期)。而朴素贝叶斯算法假设各个特征是相互独立的,所以P(单价,楼层,户型|成交周期)=P(单价|成交周期)*P(楼层|成交周期)*P(户型|成交周期)。

由于P(单价,楼层,户型)对于各个类别来说是相等的,所以只要计算出上面公式的分子就可以比较出各个类别在某种特征组合的情况下概率,然后进行比较,结果最大的就是对应的预测类别。

第三步,使用测试集进行预测模型的验证。

举例来说,一套单价为 53400 元,户型为 2 1 厅,高楼层的二手房,它的各个类别的成交周期概率计算方法如下:

公式左边

公式右边分子

结果

P(成交周期1|单价6,户型2,楼层2

P(单价6|成交周期1*P(户型2|成交周期1*P(楼层2|成交周期1*P(成交周期1

0.008791712507913633

P(成交周期2|单价6,户型2,楼层2

P(单价6|成交周期2*P(户型2|成交周期2*P(楼层2|成交周期2*P(成交周期2

0.011535160178177531

P(成交周期3|单价6,户型2,楼层2

P(单价6|成交周期3*P(户型2|成交周期3*P(楼层2|成交周期3*P(成交周期3

0.007902850891045362

P(成交周期4|单价6,户型2,楼层2

P(单价6|成交周期4*P(户型2|成交周期4*P(楼层2|成交周期4*P(成交周期4

0.003698480998933286

P(成交周期5|单价6,户型2,楼层2

P(单价6|成交周期5*P(户型2|成交周期5*P(楼层2|成交周期5*P(成交周期5

0.00209193111821789

对比以上五个结果,第二个结果最大,也就是说这套二手房的成交周期对应的类别是2,而实际上它的成交周期类别是4,所以此条记录预测错误。

举一个例子,一套单价为 55090 元,户型为 2 1 厅,低楼层的二手房,它的各个类别的成交周期概率计算方法如下:

公式左边

公式右边分子

结果

P(成交周期1|单价6,户型2,楼层1

P(单价6|成交周期1*P(户型2|成交周期1*P(楼层1|成交周期1*P(成交周期1

0.009354382108420106

P(成交周期2|单价6,户型2,楼层1

P(单价6|成交周期2*P(户型2|成交周期2*P(楼层1|成交周期2*P(成交周期2

0.007816174109803354

P(成交周期3|单价6,户型2,楼层1

P(单价6|成交周期3*P(户型2|成交周期3*P(楼层1|成交周期3*P(成交周期3

0.004416299027348879

P(成交周期4|单价6,户型2,楼层1

P(单价6|成交周期4*P(户型2|成交周期4*P(楼层1|成交周期4*P(成交周期4

0.0025524728020807183

P(成交周期5|单价6,户型2,楼层1

P(单价6|成交周期5*P(户型2|成交周期5*P(楼层1|成交周期5*P(成交周期5

0.001813006969122171

对比以上五个结果,第一个结果最大,也就是说这套二手房的成交周期对应的类别是1,而实际上它的成交周期类别也是1,所以此条记录预测正确。


02


后记


本文使用了三个特征进行概率统计,随机选取了150条记录进行验证,并且进行了多次验证。预测准确度在30%~40%之间,这个准确度有些低,说明此预测模型不能准确预测二手房成交周期。作者尝试重新更换训练数据,更换特征组合,最终准确度都没有超过50%

遂查阅相关资料,看到朴素贝叶斯算法的优缺点的描述:朴素贝叶斯算法的健壮性比较好,对于不同类型的数据集不会呈现出太大的差异性。当数据集属性之间的关系相对比较独立时,朴素贝叶斯分类算法会有较好的效果。属性独立性的条件同时也是朴素贝叶斯分类器的不足之处。数据集属性的独立性在很多情况下是很难满足的,因为数据集的属性之间往往都存在着相互关联,如果在分类过程中出现这种问题,会导致分类的效果大大降低。

初次尝试机器学习算法,效果不佳,望各位过路的前辈能够指点一二。