我是怎么走上推荐系统这条(不归)路的……

2019 年 4 月 9 日 全球人工智能
什么是推荐系统?有哪些类型的推荐系统?怎么做推荐系统?想知道?可以看看这篇小白文~


在这个系列文章中,我将分享掌握推荐系统的经验,以及围绕推荐系统从低级模型到高级模型的实现。



我还会简要提及你构建推荐系统时将会遇到的挑战以及我所用的解决办法。


最后,我会带你们浏览我追踪模型表现和构建其它机器学习模型时的想法、不成功的尝试和验证框架,以得出成功的方法。


但首先……


什么是推荐系统?


推荐系统可以说是大数据中最常见的应用了,它通过为你的网站推荐内容来改善个人用户体验。


推荐系统是信息过滤系统和人工智能的一部分,旨在预测用户偏好。


我们在哪些地方使用推荐系统?


最常见的领域是产品推荐字段过滤和通过用户的偏好来学习,以便将这些知识应用于他人。


我学习推荐系统的初衷


虽然我很享受生活,但我觉得…嗯,太安逸了。所以我决定改变一下这种状态。


然后我决定挑战点什么,你懂的。


比如漫游数据科学世界和征服人工智能什么的。


呵呵,挑战。


就是那种你后悔也为时晚矣的东西。


不过你看,我这不是冒险跳进来,和「海怪」斗争,最后存活下来了吗?也许,你可以听听我——「水手辛巴达」讲讲这个跌宕起伏的故事。


大概是一年前吧,我工作的电子邮件营销和自动化公司(Moosend)给我分配了一个全新的项目。


其理念是创建一个适合且适用于每个电子商务平台的数据驱动推荐引擎。这个通用系统要根据用户和产品的交互产生个性化的产品推荐。


这个项目的挑战之处在于它必须是完全动态的,能够适应各种模式,即季节性购买模式(如圣诞节、光明节、复活节等送礼期间),同时还要实现收益最大化。


如何理解推荐引擎?


每次接到新项目后,我做的第一件事就是了解它的基本信息;它是用来做什么的?什么时候用?系统的结构是什么?它可能具有的多样性和可扩展性?



总共有不同类型的推荐系统,而你选择哪种要取决于你接近客户的策略。


现在是数据的最好时代。过去从来没有像现在这样,这个世界为数据所驱动。大部分最大的电子商务网站依靠数据驱动决策系统来扩大销售。


而个性化的产品推荐是人工智能送给电子商务的礼物,因为它们可以帮你提高点击率和销售率。


就像我说的,AI 推荐系统有五种不同的类型:


基于内容的引擎:根据相似产品的属性(即每种产品的特性)来识别相似产品。


每个产品都有其属性(例如,手机的属性是屏幕大小、价格、相机、软件等),我们试图找出最相似的属性。


通过这种方式,我们给偏好具有特定属性的手机客户推荐相似的手机。


协同过滤引擎:识别相似客户的偏好,它基于这样一种概念:行为相似的人有相似的兴趣。


在这类系统中,我们用客户的交互来代表他们,预测他们对每个产品产生兴趣的概率,即客户真正欣赏推荐给他们的产品的可能性。


因此,我们可以通过给最相似的客户推荐产品来接近新客户。


混合系统:结合了基于内容的系统和协同过滤系统。


对两个模型中每个给定的产品进行评分,并对每个结果进行加权;最终的推荐结果来自两个分数的线性组合。


关联规则购物篮分析引擎与先前几种系统略有不同。


有了大量的交互数据集,我们可以找到经常作为序列一起购买的物品的模式;例如,有人在购物车里加了咖啡,但没加糖,我们就会给他推荐糖。


重复购买引擎:预测客户购买特定产品的具体时间或大概时间。


这种算法使用产品周期、购买历史和日期统计来预测未来购买日期。


例如,如果有人买月抛的隐形眼镜,我们可以每隔 30 天为他推荐同样的产品,如果他忘记购买的话。这样,就鼓励客户一直在我们店里买眼镜了。


协同过滤


为了更新你的记忆,这种推荐引擎会通过客户的产品交互(购买、产品视图和添加到购物车产品)来尝试识别具有相似兴趣的客户。



你可以用一两种方法实现协同过滤:基于记忆或基于模型的方法。在两种方法中,我们都用客户的交互行为来代表他们,就像向量格式化矩阵一样。


在基于记忆的方法中,你要测量所有向量(客户)彼此之间的距离,然后根据他们最相似的地方推荐产品。


而在基于模型的方法,即广为人知的矩阵分解模型中,我们要识别数据中的潜在因子。


在统计世界中,潜在因子不是我们直接观察或测量的变量,而是一组在较低维空间中解释(描述)其它变量及其关系而不丢失信息的变量。


而在推荐系统中,潜在因子发现和解码每个客户的模式,以识别他们之间的相似性。


推荐系统模型 #1(我的第一次尝试)


我想出来的第一个模型是标准的矩阵分解模型。


在这个案例里,我们在二维稀疏矩阵 R 中用客户的产品交互来代表他们;稀疏矩阵是一种高效计算和高效存储的方式,可以将大量数据存储在一起并准备处理。


矩阵中的行代表客户,列代表像向量一样的产品,然后我们在客户-产品交互单元中填上 1。


而在有产品但没有客户交互的单元格则是空的,如下所示:



下一步是将 R 矩阵分为两部分,一部分针对客户(P),一部分针对具有潜在因子的产品(Q)。然后,我们用 lambda 函数微调这两个矩阵并根据原始 R 矩阵的值测量误差率。当误差率从给定阈值开始下降时,我们中断这个过程。




为了格式化 R-hat 矩阵,我们计算了 P 和 Q 的点积。在线性代数中,点积是矩阵乘法的结果。


最后一步是推荐一组根据特定客户的最高购买概率排序的产品。



性能指标


为了监测模型的性能,我们要测量模型生成的推荐系统的质量。


在推荐系统中,我们用 Precision@k 和 Recall@k 测量了系统的性能,这两个指标广泛应用于信息检索场景。


精度被定义为客户已经与之交互(浏览、添加到购物车等)的推荐项目的数量,除以推荐集 k 中的项目数量。



召回是客户已经与之交互的 @k 推荐项目数量,除以客户已经与之交互的项目的总数量(即使在推荐集之外)。



我们还使用了另一个指标:准确率分数,以测量模型的整体性能。我们把准确率分数定义为客户已经与之交互(至少一次交互/集)的推荐集总和,除以客户推荐总数。



在所有模型中,我们在前 5 个(k=5)推荐产品中测量了模型的性能。



模型的优缺点


前方预警:


模型的缺点大于优点。


实现较好的方面是模型和进程非常直接,对那些了解基础知识且具有领域经验的人而言很简单。此外,该模型的实现可以使我们将所有信息放入单个「训练好的」矩阵,为用于生产的推荐做好准备。


那么不好的方面是什么呢?考虑到矩阵稀疏性,当新商店加入推荐引擎时,计算和耗时会呈指数增长。


因此,经过数十个网站后,该系统将消耗大量内存,并且需要花费几天时间进行调整和正常运作。


数据在产生个性化产品推荐时最为重要;举例而言,大量的中小商店没有足够的交互数据来产生自己的个性化推荐。



在观察到令人失望的结果以及想通了研究系统目的之后,我决定改变方向,*专注于如何处理和发布信息*。


如此一来,我可以帮助到数据薄弱的较小商店,同时减小交互矩阵的规模。


在下一篇文章中,我将向大家介绍如何自动融合产品信息以及不同店铺之间的交互。

作者:Dimitris Apostolopoulos来源:medium,机器之心


原文链接:https://medium.com/moosend-engineering-data-science/the-road-to-recommender-systems-d6bb79bd169d

广告 & 商务合作请加微信:kellyhyw    

投稿请发送至:mary.hu@aisdk.com

登录查看更多
11

相关内容

推荐系统,是指根据用户的习惯、偏好或兴趣,从不断到来的大规模信息中识别满足用户兴趣的信息的过程。推荐推荐任务中的信息往往称为物品(Item)。根据具体应用背景的不同,这些物品可以是新闻、电影、音乐、广告、商品等各种对象。推荐系统利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程。个性化推荐是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。随着电子商务规模的不断扩大,商品个数和种类快速增长,顾客需要花费大量的时间才能找到自己想买的商品。这种浏览大量无关的信息和产品过程无疑会使淹没在信息过载问题中的消费者不断流失。为了解决这些问题,个性化推荐系统应运而生。个性化推荐系统是建立在海量数据挖掘基础上的一种高级商务智能平台,以帮助电子商务网站为其顾客购物提供完全个性化的决策支持和信息服务。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
专知会员服务
121+阅读 · 2020年3月26日
专知会员服务
85+阅读 · 2020年1月20日
南洋理工大学,深度学习推荐系统综述
专知会员服务
172+阅读 · 2019年10月14日
可解释推荐:综述与新视角
专知会员服务
108+阅读 · 2019年10月13日
推荐系统(一):推荐系统基础
菜鸟的机器学习
25+阅读 · 2019年9月2日
推荐系统BAT面试题:说说协同过滤的原理
七月在线实验室
49+阅读 · 2019年1月30日
推荐系统
炼数成金订阅号
28+阅读 · 2019年1月17日
推荐系统概述
互联网架构师
8+阅读 · 2018年10月28日
2018年推荐系统入门指南
论智
15+阅读 · 2018年7月14日
推荐系统这事,难不?难在哪里?
聊聊架构
7+阅读 · 2018年2月26日
你们是不是都感觉自己少了个推荐系统?
互联网er的早读课
3+阅读 · 2017年12月15日
【推荐系统】一文读懂推荐系统知识体系
产业智能官
41+阅读 · 2017年10月31日
推荐系统杂谈
架构文摘
28+阅读 · 2017年9月15日
Arxiv
8+阅读 · 2019年5月20日
CoCoNet: A Collaborative Convolutional Network
Arxiv
6+阅读 · 2019年1月28日
Adaptive Neural Trees
Arxiv
4+阅读 · 2018年12月10日
Arxiv
8+阅读 · 2018年1月19日
Arxiv
5+阅读 · 2017年11月13日
VIP会员
相关资讯
推荐系统(一):推荐系统基础
菜鸟的机器学习
25+阅读 · 2019年9月2日
推荐系统BAT面试题:说说协同过滤的原理
七月在线实验室
49+阅读 · 2019年1月30日
推荐系统
炼数成金订阅号
28+阅读 · 2019年1月17日
推荐系统概述
互联网架构师
8+阅读 · 2018年10月28日
2018年推荐系统入门指南
论智
15+阅读 · 2018年7月14日
推荐系统这事,难不?难在哪里?
聊聊架构
7+阅读 · 2018年2月26日
你们是不是都感觉自己少了个推荐系统?
互联网er的早读课
3+阅读 · 2017年12月15日
【推荐系统】一文读懂推荐系统知识体系
产业智能官
41+阅读 · 2017年10月31日
推荐系统杂谈
架构文摘
28+阅读 · 2017年9月15日
相关论文
Arxiv
8+阅读 · 2019年5月20日
CoCoNet: A Collaborative Convolutional Network
Arxiv
6+阅读 · 2019年1月28日
Adaptive Neural Trees
Arxiv
4+阅读 · 2018年12月10日
Arxiv
8+阅读 · 2018年1月19日
Arxiv
5+阅读 · 2017年11月13日
Top
微信扫码咨询专知VIP会员