分享到微博 分享到人人 分享到LinkedIn 分享到Email
推荐无处不在

原文作者:前微软首席研究员Thore Graepel

译者:林弘韬

在日常生活中我们常常需要好的建议。无论是寻找符合自己口味的书和电影,还是在Facebook、LinkedIn上寻找志同道合的人,自动推荐系统都是你寻求建议的好选择。

在微软发布Azure机器学习平台(Microsoft Azure ML)之前,推荐系统仅在有限的几家大型互联网公司中使用;如今,Azure机器学习平台使其有了更广泛的受众群体,个人和企业都可以使用自动推荐系统,使自身或客户从中受益。

推荐系统是如何工作的

一个推荐系统通常由两个部分构成:用户和产品。用户就是你给出推荐建议的对象;产品则是指你希望推荐给用户的内容,例如电影、书籍、网页、菜品,甚至是其他用户。

现在让我们举个具体的例子。假设我们希望根据用户群体对于餐厅的评分来给某个用户推荐一个餐厅。简单来说,这项任务包含了两个步骤:

  • 预测这个用户对每个餐厅的评分,以5星评价指数为例。
  • 从所有符合条件的餐厅中,选取用户评分最高的餐厅推荐给此用户。

而问题的关键在于,对于该用户还未评过分的餐厅他会作何评价,我们该怎样去预测呢?在这里,机器学习就派上用场了。

如何预测评分

为了建立一个机器学习的模型去预测某个用户对某个产品的评分,我们首先需要搜集数据表单——(用户,产品,对应的评价)。这就像是在建立一个庞大的矩阵,行代表产品,列代表用户,对应矩阵单元格的内容则代表某用户对某产品的评价。结果如下图所示:

由于大部分用户只会对一小部分的餐厅做出评价,因此对应的矩阵就会是一个稀疏矩阵(sparse matrix),即矩阵的很多单元格为空值。根据这些数据,Azure ML用贝叶斯推荐系统(Bayesian RS)训练出了一个模型,主要通过返回的函数值来预测某个用户对某餐厅可能给出的评分。为了做出更个性化的推荐,特别是当没有更多的可用信息时,系统在考虑用户的评价依据时,不仅仅限于评分这一个标准,用户的购买记录、点击页面、以及在该页面停留的时间等信息也同样不容忽视。

那么这个推荐系统究竟是如何工作的呢?系统可将用户和产品整合到一个我们称为“潜在特质空间(latent trait space)”中,如下图所示。如果用户(图中的蓝点)和产品(图中的红点)所代表的向量方向一致,代表用户给该产品好评;反之,代表用户给出差评。在潜在特质空间中,相似的用户和相似的产品会被放在相近的地方,这样一来,即使用户对某产品未曾做出评价,也能根据周围其他数据做出推断。为了方便说明,我们只给出了二维的潜在特质空间图,而在实际运作时,我们则会将维数提升至20~100。有意思的是,有时我们能从图中意外发现一些有意义的轴线,即所谓的特质。以下图为例,从上到下,电影用户群体从成年人向儿童过渡;而从左到右,电影类别从主流向小众过渡。

对于新用户和新产品的处理

对于推荐系统,一个关键问题在于对“冷启动”的处理,即新用户做出的评价太少,或新产品被评价的次数也很少,导致系统很难根据以往的数据做出预测。为了解决这个问题,除用户和产品ID外,Azure ML推荐系统还根据其元数据构建了一个特征向量。对于用户而言,如年龄、地理位置这样的个人描述性信息都可以考虑在内;对于产品,以电影为例,就可以考虑影片类型、演员、导演、发行年份等信息。这样一来,通过用户和产品元数据上的相似性,我们的推荐系统就可以建立用户和产品间的联系。

了解更多

如果你对推荐系统中的数学基础很感兴趣,可以参考论文Matchbox: Large Scale Bayesian Recommendations

如果你很想建立自己的推荐系统,快到Microsoft Azure ML去大显身手吧! Azure ML Studio为你提供了一个推荐系统的模块和功能强大的网页界面支持,如拖放文件等,如下图所示,它将使你的工作更加轻松。

事实上,Azure ML的推荐系统整合了两种强大的评级预测范例——基于内容的过滤和协同过滤(collaborative filtering)。通过推广这个系统,我们希望自动推荐系统能应用于更多的场景,让更多的用户受益。