如何将AI能力与大数据技术结合,助力数据分析治理等工作的效率大幅提升,优化大数据引擎的性能及成本? 了解详情
写点什么

Airbnb 如何设计机器学习模型

  • 2015-07-09
  • 本文字数:2032 字

    阅读完需:约 7 分钟

作为 2008 年在美国旧金山市成立的公司, Airbnb 主要为广大用户提供发布和预订世界各地独特房源的网络平台。该公司最大的特点在于其新颖的 p2p 租房模式,允许任何人将闲置的房屋进行长期或短期出租。目前,Airbnb 的服务范围已经扩展到了 190 国家的 34000 个城市,客户数量超过 100 万。作为一个网络平台的服务商,Airbnb 把维护社区的信任和安全当作首要的任务。预订房源时,房客可以通过支付宝等方式将房款先支付到 Airbnb。而房东在房客入住后才可通过 Airbnb 收到付款。

然而,即使采用了这种交易方式,p2p 的运营模式仍然会受到来自房客或房东的欺诈攻击。其中,最典型的情况就是由于盗卡交易、房源信息有误或者虚假等引起的拒付( chargeback )。为了维护一个安全、可靠的社区环境,Airbnb 公司信任和安全团队的数据专家建立了各种各样的机器学习模型来帮助识别交易中的风险。作为公司业务的后盾,该团队究竟是如何建立机器学习模型的呢?近日,Airbnb 公司公布了利用相关数据建立和改善机器学习模型的过程。接下来,本文就对该过程进行简单介绍。

为了便于理解,文章设定机器学习的目标是建立一个模型来预测某些虚构的人物是否为坏人。作为模型建立过程的第一步,决定模型究竟用来预测哪些东西是该过程中最根本的问题。这个看似简单的问题会影响到其他更深的问题。以对人物的可信度进行评分为例,该问题所牵涉的其他问题就包括:哪些人纳入评分范围,是新加入的人还是所有人?对于前者,需要何种程度的介绍和了解才足够进行评分?对于后者,多久进行一次分数的更新比较合适?只有深入思考并正确回答了这些问题,模型的建立才能沿着正确的方向前进。

如果只对新加入的人进行评分,那么人物以后的分数发生变化就不好追踪。而且,初始信息的错误会一直影响人物的分数。因此,第一种方案并不合适。另外一方面,系统可以在每次事件发生时对人物的分数进行更新。但是,人物分数可能在单个事件中很少变化。这种做法就容易加大统计的工作量。那么,这种方案也不是最优方案。最优的办法就是结合两种方法——只在发生大事件(如新盟友的加入、资产数量的变化等)后再进行每个人物的分数更新。这样,既能保证分数的动态更新,又避免了大量无意义的细节。

接下来关键的问题就是如何使用之前方法构建和统计出的数据集。机器学习中一个重要的步骤就是利用现有数据构建训练集,指导系统的学习过程。既然系统的目标是分析分数,训练集就需要反应人物在一段时间内的活动与得分情况。训练集中的时间不一定连续,但要把大的进展包含进来。然后,针对大规模数据集,系统需要进行采样。一般而言,基于行的采样方式可以有效的进行表格数据的处理。然而,对于本例子中表格每行统计不同人物活动与得分的情况,该方法并不适用。基于行的采样可能面临只有隶属于同一个人物的数据用于建模和验证的情况,导致训练集不能反应整体数据的特征。因此,本例中最好采用基于人物的采样。这样,每一个人物都会有一部分数据被采样到。

然后,系统就需要进行特征学习( Feature Learning )相关的工作。特征学习作为机器学习的组成部分,主要用于对数据的特征进行理解,从而帮助建立更好的模型。特征学习主要包括了特征规整(Feature Normalization)和类属特征的处理。特征规整负责把一些特征进行归一化处理,以方便比较。例如,Dineas 和 Serion 分别在掌权的 2 年和 5 年内拥有了 10000 名士兵。比较士兵的绝对数量就不能反映二者掌权的速度。只有把每年增加的士兵数量作为比较量才能明确反应人物在掌权速度方面的特征。

实现类属特征转换最常见的方法是利用独热码(One-Hot Coding)进行向量化。而对于多个层次的类属特征的情况,条件概率编码(Conditional-Probability coding,CP-coding)比较适用。其基本想法就是在给定分类层次的情况下计算事件发生的概率。该方法可以把一个类属特征的各个层次的值映射到一个单独的数值变量。而且,系统可以利用加权平均、全局概率等方法来消除条件概率编码的转换过程中引入的噪音。但是,独热码或条件概率编码都有各自适用的场景。系统需要根据具体情况来决定建模过程中采用哪种方法。

完成采样数据集的训练之后,模型建立过程的最后一个步骤就是评估模型本身的性能。本例中,所要评估的就是系统给出的好人和坏人的预测是否正确。这牵涉到准确率(precision)和召回率(recall)的问题。准确率反映的是模型预测的所有坏人中该人物的确为坏人的概率。而召回率则是指所有坏人中被正确预测为坏人的概率。可以看出,二者的计算公式中分子相同,但是分母不同。一般而言,系统都需要根据要求在两者之间进行权衡,找到合适的取值。此外,系统也可以通过添加更好的特征、优化树的剪枝等同时提高二者的值,从而完善系统模型。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-07-09 06:553806
用户头像

发布了 268 篇内容, 共 110.6 次阅读, 收获喜欢 23 次。

关注

评论

发布
暂无评论
发现更多内容

轻松带你学习java-agent

华为云开发者联盟

Java Trace Java虚拟机 java-agent 挂载

TcaplusDB君· 行业新闻汇编(4月21日)

TcaplusDB

数据库 nosql 分布式 TcaplusDB

家务活中的python协程

行者AI

协程 python学习

【转载】提高系统开发效率的“银弹”——X-series可视化大规模应用开发工具集

赫杰辉

一入爬虫深似海,从此早睡是路人

Thrash

知识分享:SQL注入的流程和步骤

Thrash

sql

Redis的适用场景简单剖析

大数据技术指南

redis 4月日更

2020年12月的面试经历:美团4面+字节4面(均已拿offer),面试真题分享

Java架构师迁哥

https如何使用python+flask来实现

华为云开发者联盟

Python flask https ssl HTTP协议

重磅来袭:Spring之RequestBody的使用姿势小结

学Java关注我

Java 编程 架构 技术 程序人生

华云大咖说 | 华云数据与数科网维携手共建国产云生态

华云数据

一文搞定 Flink Job 的运行过程

shengjk1

flink flink源码 flink源码分析

前端DDD总结与思考

白玉兰开源

大前端 DDD

软件测试——教育机构课程顾问常见黑话大全

程序员阿沐

程序员 软件测试 教育 机构 教育培训

5个超好用的Instagram图片下载工具推荐

科技猫

分享 下载 教程 图片 Instagram

手把手教你从数据预处理开始体验图数据库

NebulaGraph

数据库 数据预处理

GitHub开源:17M超轻量级中文OCR模型、支持NCNN推理

不脱发的程序猿

人工智能 GitHub 开源 OCR 4月日更

【转载】图形化系统开发组件X-Series(一)——XrossUnit介绍

赫杰辉

智汇华云 | ArSDN打通软件定义数据中心的“任督二脉”

华云数据

三步法助你快速定位网站性能问题

华为云开发者联盟

html 网站 网站优化 Performance面板 瀑布图

什么是Selenium?使用Selenium进行自动化测试

信码由缰

DevOps selenium

0门槛成为“技术牛人”!星环科技线上分享课“星课堂”开播,快来报名,一探究竟

星环科技

人工智能 数据库 云计算 大数据 直播技术

阿里巴巴的“双11”高并发秒杀终极版教程!(Java语言设计)

Java架构追梦

Java 阿里巴巴 架构 面试 秒杀架构设计

4行指令解决pip下载Python第三方库太慢问题(pip更换国内下载源)

不脱发的程序猿

Python pip 4月日更 Python库安装

Golang 对象池

escray

学习 极客时间 Go 语言 4月日更

前端规范之路

白玉兰开源

大前端 开发规范

前端⼤规模构建演进实践

白玉兰开源

架构 大前端

GitHub惊现!JVM G1GC的算法+实现,90张图+33段代码,你的面试专属!

Java架构师迁哥

分布式锁之Redis实现

Sakura

4月日更

从源码分析 MySQL 死锁问题入门

比伯

Java 编程 程序员 架构 计算机

Airbnb如何设计机器学习模型_语言 & 开发_张天雷_InfoQ精选文章