丰富的线上&线下活动,深入探索云世界
做任务,得社区积分和周边
最真实的开发者用云体验
让每位学生受益于普惠算力
让创作激发创新
资深技术专家手把手带教
遇见技术追梦人
技术交流,直击现场
海量开发者使用工具、手册,免费下载
极速、全面、稳定、安全的开源镜像
开发手册、白皮书、案例集等实战精华
为开发者定制的Chrome浏览器插件
推荐系统,是当今互联网背后的无名英雄。
昨天,一个名为Stats&Bots的博客详解了构建推荐系统的五种方法。
量子位编译如下:
为了简化这个任务,Statsbot团队写了一份现有的主要推荐系统算法的概述。
协同过滤
协同过滤(Collaborativefiltering,CF)及其变体是最常用的推荐算法之一。即使数据科学的新手也可以用它来构建自己的个人电影推荐系统,起码可以写在简历上。
我们想给用户推荐东西,最合乎逻辑方法是找到具有相似兴趣的人,分析他们的行为,并向用户推荐相同的项目。另一种方法是看看用于以前买的商品,然后给他们推荐相似的。
CF有两种基本方法:基于用户的协同过滤和基于项目的协同过滤。
无论哪种方法,推荐引擎有两个步骤:
“最相似”在算法中是什么意思?
首先,我们只留下两个向量的值都已知的元素。
例如我们想比较Bill和Jane,已知比尔没有看泰坦尼克号,Jane没看过蝙蝠侠,于是,我们只能通过星战来衡量他们的相似度了。谁没看过星球大战呢是吧?
矩阵分解
所以我们可以用u和v的点积来估算x(第i个用户对第j个电影的评分)。我们用已知的分数构建这些向量,并使用它们来预测未知的得分。
聚类
上面两种算法都极其简单,适用于小型系统。在这两种方法中,我们把推荐问题当做一个有监督机器学习任务来解决。
现在,该开始用无监督学习来解决问题了。
业务开展之初,缺乏之前的用户数据,聚类将是最好的方法。
不过,聚类是一种比较弱的个性化推荐,因为这种方法的本质是识别用户组,并对这个组内的用户推荐相同的内容。
每个聚类都会根据其中用户的偏好,来分配一组典型的偏好。每个聚类中的用户,都会收到为这个聚类计算出的推荐内容。
深度学习
在过去的十年中,神经网络已经取得了巨大的飞跃。如今,神经网络已经得以广泛应用,并逐渐取代传统的机器学习方法。
接下来,我要介绍一下YouTube如何使用深度学习方法来做个性化推荐。
毫无疑问,由于体量庞大、动态库和各种观察不到的外部因素,为YouTube用户提供推荐内容是一项非常具有挑战性的任务。
这个任务由排序网络完成。
建立推荐系统前该知道的要点
如果你有一个庞大的数据库,而且准备提供在线的推荐,最好把这个任务拆分成两个子问题:
i.选择TopN个候选;ii.排序。
如衡量推荐模型的质量?
如果你正在使用分类算法解决推荐问题,应该考虑生成负例样本。如果用户购买了推荐的商品,你应该将其添加为正例样本,而其他列为负例样本。
要从在线得分和离线得分两个方面考察算法质量。一个只基于历史数据的训练模型,可能会导致低水平的推荐,因为算法没办法与时俱进。