如何利用机器学习预测房价?

对于我在梅蒂斯的最后一个项目,我希望能包含过去三个月里所学到的东西,而预测波特兰房价这个题目正符合我的要求,因为我能够将网络爬取技术、文本自然语言处理,图像上的深度学习模型以及梯度增强技术进行整合来实现这个项目。

下面你可以看到我抓取到的2016年7月至2017年7月这段时间内波特兰市8300个独户住宅的销售数据。

显然,街区在这其中起了非常重要的作用。西山(红色)是镇上最昂贵的地区之一,而东波特兰则便宜很多。平均售价为44.2万美元。

我希望能够在比街区更细粒度的水平上预测价格。例如,假设以下房子是彼此毗邻的。

这些房子面积相同,在同一年份建成,并位于同一条街上。但是,一个明显能让人产生购买的欲望,而另一个则没有。那么Zillow或Redfin(美国的两家大型房地产网站)或其他公司能够仅仅依靠一些房屋的文字数据来预测它们的价格呢?他们不能。这就是为什么我要把对房屋门口照片的分析作为其中一个特征纳入预测模型的原因。

当务之急就是要获取到所有的数据。这比原本预想的要困难的多。首先,我使用波特兰地图的官方API来爬取波特兰独户住宅的销售数据。不幸的是,API存在调用限制(每10分钟约150次调用),所以我不得不在AWS服务器上长时间地运行程序来抓取所有的详细数据。我使用Zillow API抓取了每个家庭的元数据和房地产商对房屋的描述。但是,抓取的速度也很慢,因为Zillow只允许你每天调用API 1000次。(我让丈夫、母亲和几个朋友来帮我获取更多的API密钥)

最后,数据收集过程中最困难的部分是获取图像。这是因为Zillow有获取图片的API,但Redfin没有,但Redfin会在房子出售后仍把图片留那,而Zillow不会。为了获取到Redfin网站上的图片,我编写了一个Selenium脚本,在Google Images上通过在搜索条目后增加“Redfin”一词来搜索房屋地址,然后抓取Google列出的第一张图片的URL。

不幸的是,虽然我有了图像的URL,实际要直接将它们下载下来并不简单。这是因为Redfin不允许你使用标准的Python包,例如发送请求获取数据,也不允许你使用简单的curl命令。幸运的是,在与别人讨论后,我们提出了这样一个想法:在curl命令的末尾加上“User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)……”,以此来将你的终端请求伪装成浏览器请求。这终于成功了,最终我抓取到了8300个房屋的数据和图片!

现在数据有了,我准备要开始实现模型了。如下图所示:

让我们来详细介绍一下这三种输入数据类型。 Zillow元数据包含你原本预期的描述性文字:平方英尺、街区、建造年份等等。当我按p值对每个特征进行排序时,出现了一些惊喜的发现。我一直不知道格鲁吉亚建筑是什么样子的,直到我查了一下之后。

我准备采用自然语言处理技术来分析地产商的描述性文字。我对地产商的描述性文字做了两件事情:为每一个描述创建一个字矢量矩阵,这样就可以将其与Zillow元数据合并到一个特征矩阵中,还有,用NLTK情绪包来计算情绪评分:

我想,房地产经纪商的平均积极分数很高(平均分数为0.6,范围在-1到+1之间)并不让人觉得奇怪。因此,把情绪评分作为特征并没有改善模型。但是,在数据集中挖取最积极和最负面的分数非常有趣:

最后,为了将图片合并到模型中,我采用了VGG16深度神经网络对图像进行处理,以便提取出它们的特征(8300 x 25000的图像特征矩阵)。运行该模型的计算量相当得大,所以我需要在AWS上安装一个g2.8xlarge的GPU ubuntu实例。

图片模型在预测房价方面的效果如何呢?不错!这些是测试集中预测价格最高的三间屋子,显然,它们真的不错:

同样的,图片模型在预测廉价房屋方面也表现得很好:

我的模型在处理什么类型的图片时会存在问题呢?包含绿化的房屋!我的模型预测下面这个房屋价值250万,但实际上,图中的很多绿化都是免费赠送的!

好的,现在我确信我的图像模型已经挺不错了。我准备将Zillow元数据、地产商描述字矩阵和图像特征矩阵组合并到一个矩阵中,然后通过使用梯度提升算法来预测房价。作为一个基准预测,回想一下,数据集的平均房价是44.2万元。如果我预测每个家庭都值得这么多,那么平均而言,每个房子的价格就会下降16.1万元。而将图像合并到模型中能够立即将该错误降低2万元。把地产商描述添加到模型中则会将错误再降低1万元。最后,将Zillow元数据添加进来,则将平均绝对误差降低到大约7.1万元。

也许你想知道如果在预测房价上只使用Zillow元数据的话效果会怎么样?平均来说,它给出了一个7.0万元的误差。在添加了房地产商的描述后略微下降到6.9万元,但后来添加了图片后却增加到7.1万元。换句话说,现在的图片会轻微地降低模型的质量,而不是提升质量。

但是,请注意,图像特征矩阵具有25000列,而我只使用了8300张照片。我根本没有足够的数据来支撑这种模型。如果我在网上爬一个月并能获得更多的图片的话,我相信将图片整合到模型中将有助于提升预测的准确率。

总而言之,在完成这个项目的过程中,我学到了很多东西,也克服了几个重要的困难。我遇到的最大的困难是如何抓取Redfin图像以及如何使用VGG16模型。我发现Keras的文档仍然很少,所以在使用它的时候需要试错很多次。我为自己能完成这个项目而感到自豪,现在我需要做的只是获取更多的数据!你可以在这里找到GitHub项目。

文章原标题《Predicting Portland Home Prices》,作者:Lauren Shareshian,译者:夏天,审校:主题曲。

文章为简译,更为详细的内容,请查看原文

时间: 2024-08-04 10:06:01

如何利用机器学习预测房价?的相关文章

Google Sheets推出可利用机器学习预测未知值的Sma

摘要: Google Sheets是Google的一款类似Excel电子表格的云服务.今天,这家搜索巨头又宣布为它增加了一个名为Smart Autofill 的智能填充插件. 不过这个智能填充插件跟以往的智能填充功能不太一样 Google Sheets是Google的一款类似Excel电子表格的云服务.今天,这家搜索巨头又宣布为它增加了一个名为Smart Autofill 的智能填充插件. 不过这个智能填充插件跟以往的智能填充功能不太一样,它是真的有点智能.以往所谓的智能填充是指用户填充过的表单

机器学习预测农民是否可以得到贷款

通过最佳实践帮助您实现上述案例效果 Step1:数据导入MaxCompute 1.1 创建需要上传的本地数据 贷款预测表:(今年申请贷款者) 字段名 含义 类型 描述 id 数据唯一标识符 string 人 name 用户名 string 人 region 用户所属地区 string 从北到南排列 farmsize 拥有土地大小 double 土地面积 rainfall 降雨量 double 降雨量 landquality 土地质量 double 土地质量数值越大越好 farmincome 收入

《Python机器学习——预测分析核心算法》——第2章 通过理解数据来了解问题

第2章 通过理解数据来了解问题 Python机器学习--预测分析核心算法新数据集(问题)就像一个包装好的礼物,它充满了承诺和希望.一旦你能解决它,你就收获了喜悦.但是直到你打开它,它都一直保持着神秘.本章就是告诉你怎么"打开"新的数据集,看清楚里面都有什么,知道如何处置这些数据,并且开始思考如何利用这些数据构建相应的模型. 本章有两个目的:一是熟悉这些数据集,这些数据集被用来作为解决各种类型问题的例子,主要是利用第4章和第6章介绍的算法:另一个目的就是展示Python中分析数据的工具包

谷歌公司利用机器学习技术帮助市场营销人员改善广告追踪能力与效果

这是每一家企业在市场营销方面面临着的重要问题.而在日前于旧金山举办的Marketing Next大会上,谷歌公司制定了新的目标,即通过一项新服务帮助营销人员了解其广告及其它营销性举措到底效果如何. 此次发布的新服务被谷歌公司命名为Google Attribution.尽管名称平淡无奇,但此项新服务承诺以更理想的方式对个人电脑.智能手机乃至从搜索到实体店面访问在内的多渠道状况进行追踪,从而准确把握宣传活动的具体成效. 作为一项免费服务,Attribtuion背后的基本思路在于着眼特定产品的买家在决

Spark 数据挖掘 - 利用决策树预测森林覆盖类型

Spark 数据挖掘-利用决策树预测森林覆盖类型 1 前言 预测问题记住一点:最垃圾的预测就是使用平均值,如果你的预测连比直接给出平均值效果都要差,那就省省吧!统计学诞生一个多世纪之后,随着现在机器学习和数据科学的产生,我们依旧使用回归的思想来进行预测,尽管回归 就是用平均值向后不断回滚来预测.回归的技术和分类的技术紧密相关.通常情况下,当目标变量是连续数值时指的是回归,例如预测 身高和体重.当预测的目标变量是名义或者说是类别变量时,指的就是分类,例如预测邮件是否是垃圾邮件.无论是分类还是回归,

在 Airbnb 使用机器学习预测房源的价格

本文讲的是在 Airbnb 使用机器学习预测房源的价格, 原文地址:Using Machine Learning to Predict Value of Homes On Airbnb 原文作者:Robert Chang 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:lsvih 校对者:TobiasLee, RichardLeeH, reid3290 位于希腊爱琴海伊莫洛维里的一个 Airbnb 民宿的美好风景 简介 数据产品一直是 Airbnb 服

美国银行将 AI 应用于企业应收账款处理;联合国或将利用机器学习技术帮助救灾工作

8 月 24 日消息,据外媒报道,美国银行(Bank of America)与 Fintech 创业公司 High Radius达成合作,将人工智能应用于企业应收账款处理.该应用程序专为大型.复杂的公司管理大笔支付业务,因这些公司常常发生回款信息丢失或一方单独收到付款的情况. 美国银行全球应收账款负责人 Rodney Gardner 解释说,汇款信息的不完善导致协调过程非常艰巨并且昂贵. "我们的解决方案汇集了 AI,机器学习和光学字符识别(OCR),在应收账款对账和支付匹配中设置了一个新的条件

《Python机器学习——预测分析核心算法》——导读

前言 Python机器学习--预测分析核心算法 从数据中提取有助于决策的信息正在改变着现代商业的组织,同时也对软件开发人员产生了直接的影响.一方面是对新的软件开发技能的需求,市场分析师预计到2018年对具有高级统计和机器学习技术的人才需求缺口将达140000-190000人.这对具有上述技能的人员来说意味着丰厚的薪水和可供选择的多种有趣的项目.另一方面对开发人员的影响就是逐步出现了统计和机器学习相关的核心工具,这减轻了开发人员的负担.当他们尝试新的算法时,不需要重复发明"轮子".在所有

《Python机器学习——预测分析核心算法》——第1章 关于预测的两类核心算法

第1章 关于预测的两类核心算法 Python机器学习--预测分析核心算法 本书集中于机器学习领域,只关注那些最有效和获得广泛使用的算法.不会提供关于机器学习技术领域的全面综述.这种全面性的综述往往会提供太多的算法,但是这些算法并没有在从业者中获得积极的应用. 本书涉及的机器学习问题通常是指"函数逼近(function approximation)"问题.函数逼近问题是有监督学习(supervised learning)问题的一个子集.线性回归和逻辑回归是解决此类函数逼近问题最常见的算法