转载

Airbnb如何设计机器学习模型

作为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读者交流群 Airbnb如何设计机器学习模型 )。

正文到此结束
Loading...