×

几行代码改进房价免费评估系统影响深远

消耗积分:1 | 格式:rar | 大小:0.2 MB | 2017-09-22

分享资料个

  几行代码改进房价免费评估系统影响深远

  Zillow(房产估价网站)和Kaggle最近组织了一项100万美元的竞赛来改进Zestimate(Zillow自行开发的一套计算机系统)。此教程使用了H2O的AutoML生成解决方案的公共Domino项目。

  新的Kaggle Zillow Price竞赛获得了大量的媒体关注。正如他们在竞赛描述中说的,改进这一估计可以更准确地影响美国近1.1亿家庭的价值!

  此教程采用的是一个脚本take_my_job.R,它使用了令人吃惊的H2O AutoML框架。

  H2O的机器学习库是行业的领导者,他们最近将AI推向大众的是AutoML功能。通过单个函数调用,它可以并行地训练许多模型,将它们集合在一起,并构建强大的预测模型。

  代码只有36行:

  01library(data.table)

  02library(h2o)

  03

  04data_path 《- Sys.getenv(“DOMINO_EARINO_ZILLOW_HOME_VALUE_PREDICTION_DATA_WORKING_DIR”)

  05

  06properties_file 《- file.path(data_path, “properties_2016.csv”)

  07train_file 《- file.path(data_path, “train_2016.csv”)

  08properties 《- fread(properties_file, header=TRUE, stringsAsFactors=FALSE,

  09 colClasses = list(character = 50))

  10train 《- fread(train_file)

  11

  12properties_train = merge(properties, train, by=“parcelid”,all.y=TRUE)

  在前12行中,设置了开发环境,并将数据导入为R data.table对象。使用第4行中的Domino环境变量功能,无需对脚本中的任何路径进行硬编码,因为硬编码路径通常会导致重大挑战。

  在第12行,通过将属性文件与训练数据集合并创建训练集,其中包含我们将要预测的logerror列。

  14h2o.init(nthreads = -1)

  15

  16Xnames 《- names(properties_train)[which(names(properties_train)!=“logerror”)]

  17Y 《- “logerror”

  18

  19dx_train 《- as.h2o(properties_train)

  20dx_predict 《- as.h2o(properties)

  21

  22md 《- h2o.automl(x = Xnames, y = Y,

  23 stopping_metric=“RMSE”,

  24 training_frame = dx_train,

  25 leaderboard_frame = dx_train)

  这个代码块是利用H2O的AutoML基础设施所需要的!

  在第14行,我们正在初始化H2O以使用与机器有核心一样多的线程。第16和17行用于设置预测变量和响应变量的名称。在第19和20行,我们将我们的data.table对象上传到H2O(首先可以避免使用h2o.importFile)。在第22-25行中,我们告诉H2O在训练数据集上建立我们可以使用RMSE作为早期停止度量的最好的模型。

  27properties_target《- h2o.predict(md@leader, dx_predict)

  28predictions 《- round(as.vector(properties_target$predict), 4)

  29

  30result 《- data.frame(cbind(properties$parcelid, predictions, predictions * .99,

  31 predictions * .98, predictions * .97, predictions * .96,

  32 predictions * .95))

  33

  34colnames(result)《-c(“parcelid”,“201610”,“201611”,“201612”,“201710”,“201711”,“201712”)

  35options(scipen = 999)

  36write.csv(result, file = “submission_automl.csv”, row.names = FALSE )

  在第27行,我们使用训练有素的AutoML对象来预测我们的回应。然后,我们将答案舍入为4位精度,构建结果数据框架,设置名称并写出来。

  挂羊头卖狗肉,我们添加的只有1位是1%,收缩在每一行的LOGERROR,并假设Zillow的团队总是使他们的模型更好一点。

  在没有任何输入的情况下,这个包建立一个提供公开排行榜得分的模型0.0673569。这不惊人,但是考虑到我甚至没有看过数据,这是非常出色的。汇集H2O的算法以及灵活的可扩展计算和易于环境配置的Domino使该项目快速简便!

  自己动手尝试

  欢迎您分享这个公共项目,将其作为起点,然后操作它。只需点击几下,代码和环境就可以在Domino上使用。

  不幸的是,根据Kaggle的严格规定,我们无法为您提供数据。为了使用数据,您将必须:转到Kaggle数据页并下载。

  将其上传到Domino数据项目或直接插入到您的分支项目中。

  修改第4行take_my_job.R以设置文件的基本路径。如果你只是把它放到你的项目中,只需将它设置为“。/”,如果你正在使用一个数据项目,只需修改我引用的环境变量。

  虽然手动制作的解决方案在Kaggle排行榜上的得分明显优于这种解决方案,但仍然令人兴奋的是,全自动化解决方案的效果相当不错。全自动数据科学的未来令人期待,我们迫不及待地继续支持社区开发的惊人工具!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !