每个人都需要住房,房地产行业历史悠久,数据积累下来是非常可观的。链家成立了15年,这15年里积累了百万级别的成交数据,用户画像数量超过2000万,日志数据6T。链家依托房地产行业累积的海量数据,从中挖掘出最有价值的数据,进行房屋估价、房源推荐等等,从而改善行业体验,推动行业进步。
蔡白银,毕业于北京大学。目前任链家网大数据架构师,负责链家网大数据体系的建设,运用大数据挖掘技术助力房产领域的O2O,提升房屋买卖体验;在大数据数据挖掘领域有多年的经验。加入链家网之前就职于百度,负责百度口碑后端策略架构,使得口碑的污染率低于2%,有效的保证了内容的准确性和公正性。
InfoQ:请问您能给InfoQ的读者们介绍下您的背景经历吗?百度口碑如何利用大数据?和链家的业务有类似的地方吗?为什么选择了链家?
蔡白银:我毕业于北京大学物理学院, 原来学的是理论物理的分支——宇宙学。 毕业之后先在nvidia做了一年多基于cuda的高性能计算,然后加入到百度,从事算法策略, 如今在链家网从事大数据相关工作。 这项工作,本身对于数学的要求略高,这一点理论物理的数学训练还是颇有帮助的。
在百度时作为百度口碑的策略负责人,带领7个小伙伴搭建了百度口碑的策略体系。百度口碑是个ugc产品,用户可以在口碑中点评自己所知晓或者接触过的商家,我们需要使用百度的海量用户行为数据来让用户快速触达评论实体 ,然后通过算法对评论内容进行排序和反作弊。
从业务上来说,口碑和链家的业务没有很相似的地方。
至于为何选择链家。之前一直在纯互联网行业工作,对于传统行业和互联网密切联系的垂直领域O2O一直很感兴趣,同时也知道自己的几个非常优秀的同事加入了链家, 仔细了解了链家的规划和愿景后,就毫不犹豫的加入链家了。目前很庆幸自己当初的选择,深感当前的平台宽广而深远,工作内容能够带来助力行业进步的成就感,也充满挑战性。加之周围同事都很优秀,『每个人都像一支队伍』,这种感觉我很喜欢。
InfoQ:链家的数据源如何获取的?如何保证数据的实时性?
蔡白银:链家的数据来源于线下和线上两个渠道。线下渠道包括经纪人录入的数据,例如用户的带看行为,带看反馈等等,还不得不说的是链家网的6000万楼盘字典数据, 是我们的工作人员一栋一栋梳理出来的第一手的房屋数据, 十分珍贵。
线上数据包括在掌上链家app,链家网web端和链家网m站的各种行为数据,以及经纪人在link作业app上的行为数据等。
线下渠道的数据,在link上线前,经纪人是每天晚上必须要将今天自己涉及到的全部用户的线下行为数据录入进SE体系; link上线后, 这些行为数据也已经全部线上化,实时性进一步得到了保证。 至于用户的线上行为,通过日志流,这些数据实时的进入大数据仓库,实时性自是有保障的。
InfoQ:如果靠爬虫爬取链家网上的数据,这些数据是否可有效利用?有什么反爬措施没?
蔡白银:链家网的数据都是真实的房源数据、成交数据和挂牌数据,所以这些数据都是可以拿来做分析使用的。 链家集团和其他地产公司的一些对数据比较敏感的经纪人,会持续收集链家的数据,形成自己的分析知识体系。
目前链家网做了一些简单的反爬措施,例如针对ip的访问频次限制。整个反爬系统正在建立中。
InfoQ:大数据能帮助链家解决哪些房地产方面的痛点?
蔡白银:上次在Qcon2016北京全球软件开发者大会的分享中有提到,房地产行业自古而今,一直存在的痛点可以总结为:
1) 房源真假如何判断
2)用户如何找到合适自己的房源,用合适的价格,从而高效率的成交
3)对于卖房者同样如此
4)经纪人如何才能更好的了解客户的真实需求,从而提升服务体验。
这几个问题的解决都仰赖于大数据。 楼盘字典的7000万数据解决了房源真假的问题;基于大数据的房屋估价可以供用户和卖家定出合适的价格;房源和小区推荐,让用户快速触达适合自己的房屋;基于用户画像的房客图谱和客源解读,让经纪人的服务能力得到更好的体现,让用户感知到越来越好的服务体验。总结一句话就是:技术推动行业进步,让买卖房屋不再难。
InfoQ:如何避免虚假房源?安全上有哪些措施保障?
蔡白银:虚假房源中影响最大的就是那些价格虚假的房源,这个时候,大家可以使用下我们掌上链家的估价功能,预估下这个房子当前的价格到底如何,从而有个明确的认知。
和虚假房源对应的就是真实房源,所以这个问题也可以翻译成链家在保障房源真实性上做了哪些保障。 那么,如何定义“真房源”?侠义上来说,“真房源”的4个标准:
1)房源“真实存在”,不是虚构或虚拟房源;
2)“真实价格”,在各渠道发布房源价格以业主委托报价为基准;
3)“真实在售”,房源的在租在售状态均反映业主真实意愿;
4)“真实图片”,房源图片与真实房屋一对一匹配
基于此, 链家在真房源的保障上,做了如下几件事:
1)从技术和数据上来说:链家首先建立了一个楼盘字典。这个字典里包含有30多个城市,近7000万套房屋的关键信息,除此之外还采集了小区物业费、采暖设施和配套设施等大家公认的信息
2)管理范围上,实现了房源的全生命周期管理,实现了房源的新增录入、库存、核销的全链条管理。
3) 从机制上说,品控检查,内部经纪人监督检举以及消费者监督。链家承诺假一赔百。
三管齐下,保证了房源的真实性。
InfoQ:针对不同地域、不同房型、政策等,如何自动制定一个买方和卖方都认可的价格?
蔡白银:分别回答如下:
1)地域的考虑是这样的:我们的估价是分城市做的,在同一个城市内,每个商圈有自己的单独的模型,同时我们正在做不同地铁线路沿线的估价模型,也考虑针对准确率偏低的商圈交界处单独做模型。
2)至于房型,极端的例子是同一个商圈里既有别墅,又有普通户型。由于链家的楼盘字典里,将房屋类型都做了明确的标记,因此基于我们的历史成交数据有丰富的房源类型和成交价格之间的关系。建模时,我们的样本里将房源类别特征做了离散化,因此模型能够很好的判断出房型对价格的影响
3)至于政策,政策的影响对价格的影响是很大的,未来会有什么样的政策出台以及会带来多少影响,也不能尽知。政策的影响也不太容易做特征化。 因此,我们在估价模型的训练样本的选择上,我们只选择了近半年的成交房源,同时样本特征里加入时间因子,把政策的影响放在时间因子中,让非线性模型自己去学习政策对价格带来的持续性影响。
InfoQ:能讲一下链家大数据架构是怎么样的吗?
蔡白银:链家的大数据架构目前如下图所示:从下往上依次是数据采集层、存储计算层、DW层、分析计算层和应用挖掘层。
数据采集层包括了线下和线上两个层面。基于link系统的上线,现在很多的线下数据也已经实现了线上采集,所以数据的实时性变得越来越得到了保障;日志流使用kafka进行实时采集,经过Flume后存储至存储层;
存储计算层我们采用的是业界一直使用的HDFS和Hadoop体系。
DW层则是对原有的表进行业务层面的聚合,使得产生的数据表结构更清晰,更容易被使用;
在应用挖掘层,为了实时的update用户画像以及房源推荐,我们还引入了spark streaming 和 Elastic search,关于这点,可以参见之前在大数据杂谈上的分享。贯穿始终的是认证权限安全系统和调度系统。
整体的大数据架构从起初就定了下来,没有大的体系上的调整,近半年多来,在集群规模、仓库设计、权限管理、调度方法上都在不停的演变。例如调度体系我们将之前的luigi替换成了ozzie。
InfoQ:房地产数据挖掘会用到哪些算法?
蔡白银:房产领域的数据挖掘用到的算法和平常大家用到的算法并不会有什么类别的不同,只是数据挖掘本身需要和业务紧密关联,所以这些算法在房产领域的使用细节上会有不同。
我们现如今已经使用的算法包括了 GBDT、随机森林、Hedonic、神经网络、卷积神经网络、逻辑回归、SVM、HMM、ItemCF、UserCF、聚类算法等。
GBDT、随机森林、Hedonic、神经网络是我们在估价中使用的。卷积神经网络是我们在户型图识别中使用的, 逻辑回归、SVM则是在用户画像中判别同一用户、和判别用户是否是买家还是卖家使用。HMM是我们用来描述用户买卖行为阶段的算法。 聚类则是用在相似的楼盘识别,也用在了房源推荐和小区推荐当中。
InfoQ:接下来,链家对大数据的利用,关注点会放在哪儿?有什么计划吗?
蔡白银:链家对大数据的使用依旧会集中在如何更好的服务用户,如何提高买卖体验上。
我们会继续完善用户画像、房屋画像/楼盘画像、经纪人画像, 增加画像数据的更新频率、画像数据的丰富维度等。同时也会用更多更好的数据产品满足大家对于房产数据的更深层次的需求,例如估价的准确率的进一步提升, 估价对资产评估的数据支撑等, 或者帮助用户如何更好的找到合适的房子等等。
InofQ:能介绍下链家大数据团队的情况吗?你们看重团队成员什么方面的背景?哪些数据科学技能?
蔡白银:链家的大数据团队有60多人,分为四个子方向,分别为基础数据建设方向、数据开发方向、数据分析方向和数据挖掘方向。 我们看重的是大家对数据的热情、对数据的敏感度和做事的靠谱度,以及对于数据价值的深度思考。
技能上,希望数据开发能够有统计学知识, 掌握1-2种通用编程语言,布式计算知识(Hadoop,Spark等)、SQL语句,以及网络爬虫技能等。数据挖掘人员需要掌握数据开发相关的知识和技能,也需要有数据结构和算法知识,概率统计和线性代数等数学知识,数据可视化,还需要熟悉常用的机器学习算法,了解和使用过机器学习常用的库。数据分析人员要有业务数据抽象能力,需求分解能力,需要精通常用的excel技巧,知道数据埋点知识。
InfoQ:如何成为一名数据科学家?您能根据您的经验给大家说说自己的看法吗?
蔡白银:这个问题好大。 回答起来颇有压力。 我只能根据我自己的理解给大家抛砖引玉了。数学科学是从数据中提取知识的研究,数学科学的从业者被称为数据科学家。数据科学家需要精通一门、两门、甚至是多门学科,同时使用数学,统计学和计算机科学的知识和技能来展开工作。『数据科学家一个人就像一支队伍』。要成为一名数据科学从业者,需要具备如下技能:
(1) 计算机科学
数据科学家大多要求具备计算机专业知识,要求具备编程能力。除了一般的脚本编程语言, 知道常用的数据库知识外, 最好具备处理大数据所必需的Hadoop、Mahout,spark等大规模并行处理技术与机器学习相关的技能。
(2) 数学、统计学和数据挖掘
数学统计学的知识能够让我们对数据更具有把控,同时也能更好的对数据的结果进行解释。当然工具的使用也是必不可少,例如SPSS、SAS等主流统计分析软件的技能,尤其推荐对R的学习。R包含了丰富的统计分析库,且具备将结果进行可视化的高品质图表生成功能,可以通过简单的命令来运行。
个人建议最好也要会python。python学习起来简单方便,能够快速上手,且拥有丰富的统计学习包和机器学习的包和数据可视化的包,NumPy ,SciPy ,Scikit-learn,matplotlib, pandas等。
(3) 数据可视化
大数据时代,数据纷繁复杂,信息海量而多变。信息的质量和能否被接受很大程度上依赖于其表达方式。对数据中所包含的意义进行分析,开发Web页面,使用外部API将图表、地图、Dashboard等其他服务统一起来,从而使分析结果可视化,这是对于数据科学家来说十分重要的技能。
(4) 精通业务
数据是和具体的业务紧密相关的,没有业务场景的数据是价值寥寥的。所以数据从业者需要对业务知识尽可能深入掌握,从而做到数据取之于业务,也用于业务。
(5) 贡献社区、多读论文和博客
社区里卧虎藏龙,且大神们都乐于分享自己掌握的经验和知识,例如infoq里的很多文章中就饱含了独到的见解。另外,想要知道其它数据科学家在做些啥,目前领域内有哪些新的技术,新的想法这些都需要多关注论文和博客。