当前位置 鱼摆摆网 > 视频 > 淘宝教程 > 营销引流 > 内容营销 >

成员说:数据和算法如何精确定位人和狗,你必学的数据引擎和系统推荐!

  公众号:弦计划   作者:LI相   2020-07-24 14:37

本文作者忘川,弦计划成员,

现为哔哩哔哩产品经理。

本文共6098个字,看完需要15min

1992年,Goldberg提出第一个个性化邮件推荐系统Tapestry,首次提出利用用户的标注和行为信息对邮件进行重排序。

1994年,Resnick等人第一次提出了针对新闻消息的推荐系统 Grouplens。

1995年,MIT的 Pattie maes研究小组创立了 Agents公司(后来更名为 Firefly Networks),这是推荐系统的第一次商业化应用。

1999年,Thomas Hofmann提出了pLSA,并讨论了pLSA在自动文档索引中的应用。同年底,Will Glaser和Tim Westergren提出了音乐基因组计划(Music Genome Project)的设想

2000年,Jon Kraft创立了Savage Beast Technologies,将他们的想法推向市场。

01

推荐系统的定义

按照维基百科的定义:推荐系统是一种信息过滤系统,用于预测用户对物品的评分或偏好。这个定义不是很好理解,因为它用“怎么做”来定义“是什么”,我们可以换个角度来理解:

它能做什么?

从本质上讲,推荐系统提升了信息分发和信息获取的效率。

随着信息技术和互联网行业的发展,信息过载成了人们处理信息的挑战。对于用户而言,如何在以指数增长的资源中快速、准确地定位到自己需要的内容是一个非常重要且极具挑战的事情。对于商家而言,如何把恰当的物品及时呈现给用户,从而促进交易量和经济增长,也是一件颇具难度的事情。

推荐系统能根据用户的档案或者历史行为记录,学习出用户的兴趣爱好,预测出用户对给定物品的评分或偏好。

如何搭建更有效的推荐系统对工业界可谓意义深远。据统计,推荐系统给亚马逊带来了35%的销售收入,给Netflix带来了高达75%的消费,Youtube主页上60%的浏览来自推荐服务。

它需要什么?

推荐系统需要已经存在的连接,去预测未来的连接。比如电商平台会根据你买过什么,浏览过什么这些人和商品之间的连接来预测你还可能会买什么,又比如你在使用今日头条时每一次点击,每一次阅读都是连接,根据已有过去的点击、浏览行为来预测你感兴趣的内容。

它是怎么做的呢?

预测用户评分和偏好,他们对应了推荐系统背后相关算法和技术的两大类别,还有更抽象的分类:机器推荐和人工推荐,也是我们常说的个性化推荐和编辑推荐。

02

你需要理解的几个概念

2.1 三个常见的理论

马太效应:产品中热门的东西会被更多人看到,热门的东西会变得更加热门,而冷门的东西更加冷门。

长尾理论:某些条件下,需求和销量不高的产品所占据的市场份额,可以和主流产品的市场份额相比。

信息过载:是指社会信息超过了个人或系统所能接受、处理或有效利用的范围,并导致故障的状况。

2.2 十种常见的推荐工程

1.基于内容推荐:分析用户看过的内容(历史内容等 )再进行推荐。

2.基于用户的协同过滤推荐(UserCF):给用户推荐和他兴趣相似的其它用户喜欢的物品。

3.基于物品的协同过滤推荐(ItemCF):给用户推荐和他之前喜欢的物品相似的物品。

4.基于标签的推荐:内容有标签,用户有画像,通过给用户打标签或是用户给产品打标签为其推荐物品。

5.隐语义模型推荐(LFM):通过隐含特征推荐和用户兴趣匹配的物品。

6.相似性推荐:基于统计模型的推荐,表现形式为A和B有很大的关联/相似性,买了A我就给你推荐B。

7.基于图模型的推荐:图模型指的是把用户行为表示为二分图模型,将个性化推荐算法放到二分图模型上。将用户推荐物品的问题转化为度量用户顶点和与它没有边相连的物品顶点在图上的相关性,相关性越高,物品在推荐列表中的权重越高。

8.社会化推荐:基于社交链路,让好友给用户做推荐。

9.根据时间上下文推荐:利用用户访问产品的时间优化推荐算法,或是根据季节性时令性变化进行推荐。

10.基于地理位置的推荐(LARS):根据用户的地理位置进行推荐。

03

推荐系统的架构

如果一个系统中将各种用户行为、特征和任务都考虑进去,系统会非常复杂,难以配置。因此推荐系统需要由多个推荐引擎组成,每个推荐引擎负责一类特真和一种任务,而推荐系统只是将推荐引擎的结果按照一定权重或优先级合并、排序,然后返回。

这样的优势在于:每一个引擎代表了一种推荐策率,可通过对单一的引擎调整来优化推荐系统。

推荐引擎整体可以分为四部分,分别是用户特征、候选物品集合、用户-物品匹配、过滤、融合和排序

3.1 模块A:从数据库或缓存中拿到用户行为数据,通过分析不同行为生成当前用户的特征向量。

3.2模块B:将用户的特征向量通过特征 - 物品相关举证转换为初始推荐物品列表。

候选物品集合:特征-物品相关推荐模块还可以接受一个候选物品集合。候选物品集合的目的是保证推荐结果只包含候选物品集合中的物品。它的应用场合一般是产品需求希望将某些类型的电视剧推荐给用户。比如有些产品要求给用户推荐最近一周加入的新物品,那么候选物品集合就包括最近一周新加的物品。

3.3模块C:对初始的推荐列表进行过滤,排名等处理,生成最终的推荐结果。

•过滤模块:在得到初步的推荐列表后,还不能把这个列表展现给用户,首先需要按照产品需求对结果进行过滤,过滤掉那些不符合要求的物品。

•排名模块:经过过滤后的推荐结果直接展示给用户一般也没有问题,但如果对它们进行一些排名,则可以更好地提升用户满意度。实际进行排名时,可以基于新颖性、多样性、用户反馈进行排名优化。

04

推荐系统的数据收集

推荐系统分为三个部分。数据收集、特征工程、算法训练。之前那篇聊用户画像的其实聊了用户特征,聊聊用户画像的标签体系。这篇就不聊标签了,有兴趣可以看看。今天这篇就不多聊用户特征是怎么处理的了,来聊聊推荐系统的数据收集。根据上文的介绍,推荐系统的目标就是预测用户喜欢什么东西,其模式从达成的连接目标角度分为两大类:

1.评分预测

2.行为预测

评分和行为其实是反映了用户对推荐结果的两类反馈,前者是一个显式反馈,直接表明用户对推荐的物品的喜好程度,而后者更多展示的是隐式反馈,比如用户仅仅是浏览阅读了推荐的物品,或者说电商类的加入购物车,收藏物品等等。

4.1 评分预测

评分预测主要做的事情就是,提前预测用户对物品的评分,比如对电影评分1-5分,或者是商品打多少颗星星。

一个比较朴素的实现思想:建立一个模型,基于用户历史评分的物品来预测分数。

如何衡量预测的好坏,通常可以用均方根误差(RMSE)来作为损失函数:

其中 n 是样本的总数,

是用户对物品的打分,

表示模型预测的分数,因此它们的相减就是模型和用户实际打分的误差,而 RMSE 只关心绝对值大小。

4.2 行为预测

行为预测就是利用隐式反馈数据预测隐式反馈的发生概率。行为预测更受到重视的原因有这几点:

1. 数据比显式反馈更加稠密。评分数据总体来说是很稀疏的;

2. 隐式反馈更代表用户的真实想法。

3. 隐式反馈常常和模型的目标函数关联更密切,也通常更容易在 AB 测试中和测试指标挂钩。比如 CTR 预估关注的就是点击这个隐式反馈。

行为预测的方式有很多,常见的是这两种方式:

• 直接预测行为本身发生的概率,也叫做点击率预估(CTR预估),但实际应用中也可以是收藏、购买行为的预估;

• 预测物品的相对排序。

05

冷启动问题

5.1 冷启动的类型

•用户冷启动一个新用户,没有任何历史行为数据,怎么做推荐。

•物品冷启动一个新上线的物品,没有用户对它产生过行为,怎么推荐给感兴趣的用户。

•系统冷启动一个新开发的网站,没有用户数据,怎么做个性化推荐。

5.2 如何解决冷启动问题?

1. 给新用户推荐热门排行榜,等用户数据收集到一定时候,切换为个性化推荐。

2. 利用用户注册时的人口统计学信息,粗粒度推荐。

3. 利用用户的社交网络账号登录信息。

4. 要求用户在登录时对一些物品信息进行反馈。

5. 新加入的物品,按照物品内容相似性,进行推荐。

6. 针对系统冷启动,引入专家知识,迅速建立物品的相关度表。

5.3冷启动时,物品具有以下特点

•比较热门

•具有代表性和区分性

•启动物品集合需要有多样性

5.4如何解决启动物品集合多样性问题

通常情况下,我们会使用决策树解决。

首先,给定一群用户,用这群用户对物品评分的方差度量这群用户兴趣的一致程度。如果方差很小,说明这一群用户的兴趣不太一致,也就是物品具有比较大的区分度,反之则说明这群用户的兴趣比较一致。

然后,根据用户的评分方差计算物品的区分度。

对于物品i,将用户分为3类:喜欢物品i的用户,不喜欢物品i的用户和不知道物品i的用户。如果这3类用户集合内的用户对其他的物品兴趣很不一致,说明物品i具有较高的区分度。

算法会从所有用户中找到具有最高区分度的物品i,然后将用户分成3类。然后在每类用户中再找到最具区分度的物品,然后将每一类用户又各自分为3类,然后继续划分,最终通过对一系列物品的看法将用户进行分类。

在冷启动时,从根节点开始询问用户对该节点物品的看法,然后根据用户的选择将用户放到不同的分枝,直到进入最后的叶子节点,此时对用户的兴趣有了比较清楚的了解,从而可以开始对用户进行比较准确地个性化推荐。

06

推荐系统的评价指标

一般来说,评价一个推荐系统的好坏可以从以下维度出发:

用户满意度:用户作为推荐系统的重要参与者,其满意度是评测推荐系统的最重要指标。但是,用户满意度没有办法离线计算,只能通过用户调查或者在线实验获得。

预测准确度:预测准确度度量一个推荐系统或者推荐算法预测用户行为的能力。这个指标是最重要的推荐系统离线评测指标。

覆盖率:覆盖率描述一个推荐系统对物品长尾的发掘能力。覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。

多样性:用户的兴趣是广泛的,为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同的兴趣领域,即推荐结果需要具有多样性。

新颖性:新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。在一个网站中实现新颖性的最简单办法是,把那些用户之前在网站中对其有过行为的物品从推荐列表中过滤掉。

惊喜度:与新颖性不同,如果推荐结果和用户的历史兴趣不相似,但却让用户觉得满意,那么就可以说推荐结果的惊喜度很高,而推荐的新颖性仅仅取决于用户是否听说过这个推荐结果。

信任度:对于基于机器学习的自动推荐系统,同样存在信任度( trust )的问题,如果用户信任推荐系统,那就会增加用户和推荐系统的交互。同样的推荐结果,以让用户信任的方式推荐给用户就更能让用户产生购买欲,而以类似广告形式的方法推荐给用户就可能很难让用户产生购买的意愿。

实时性:推荐系统需要实时地更新推荐列表来满足用户新的行为变化,推荐系统需要能够将新加入系统的物品推荐给用户。这主要考验了推荐系统处理物品冷启动的能力。

健壮性:任何一个能带来利益的算法系统都会被人攻击,这方面最典型的例子就是搜索引擎。搜索引擎的作弊和反作弊斗争异常激烈,而健壮性(即 robust,鲁棒性)指标衡量了一个推荐系统抗击作弊的能力。

07

推荐系统的实验方法

评测指标的实验方法,通常分3种:

•离线实验(offline experiment)

•用户调查(user study)

•A/B实验(A/Bexperiment)

离线实验

离线实验的方法的步骤如下:

a)通过日志系统获得用户行为数据,并按照一定格式生成一个标准的数据集;

b)将数据集按照一定的规则分成训练集和测试集;

c)在训练集上训练用户兴趣模型,在测试集上进行预测;

d)通过事先定义的离线指标,评测算法在测试集上的预测结果。

用户调查

用户调查需要一些真实的用户,让他们在需要测试的推荐系统上完成一些任务。在他们完成任务时,需要观察和记录用户的行为,并让他们回答一些问题。

最后,我们通过分析他们的行为和答案,了解测试系统的性能。

A/B实验

在线实验最常用的评测算法是【A/B测试】,它通过一定的规则将用户随机分成几组,对不同组的用户采用不同的算法,然后通过统计不同组的评测指标,比较不同算法的好坏。它的核心思想是:

a) 多个方案并行测试;

b) 每个方案只有一个变量不同;

c) 以某种规则优胜劣汰。

08

本文小结

推荐系统是一种信息过滤系统,用于预测用户对物品的“评分”或“偏好”。从本质上讲,推荐系统提升了信息分发和信息获取的效率。一个完整的推荐系统主要由以下几个部分组成。

1.数据收集

构建推荐模型需要收集很多数据,包括用户行为数据,用户相关数据及推荐“标的物”相关数据。如果将推荐系统比喻为厨师做菜,那么这些数据是构建推荐算法模型的原材料。巧妇难为无米之炊, 要构建好的推荐算法收集到足够多的有价值的数据是非常关键和重要的。

2.数据仓库

收集到的原始数据一般是非结构化的,ETL(ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过萃取、转置、加载至目的端的过程。)的主要目的是从收集到的原始数据中提取关键字段 (拿视频行业来说:用户 id,时间,播放的节目,播放时长,播放路径等都是关键字段),将数据转化为结构化的数据存储到数据仓库中。同时根据一定的规则或策略过滤掉脏数据,保证数据质量的高标准。

3. 特征工程

推荐系统采用各种机器学习算法来学习用户偏好,并基于用户偏好来为用户推荐“标的物”, 而这些推荐算法用于训练的数据是可以“被数学所描述”的,一般是向量的形式,其中向量的每一个分量 / 维度就是一个特征,所以特征工程的目的就是将推荐算法需要的,以及上述 ETL 后的数据转换为推荐算法可以学习的特征。

当然,不是所有推荐算法都需要特征工程,比如,如果要做排行榜相关的热门推荐,只需要对数据做统计排序处理就可以了。最常用的基于物品的推荐和基于用户的推荐也只用到用户 id,标的物 id,关系评分三个维度。

4. 推荐算法

推荐算法模块是整个推荐系统的核心之一,该模块的核心是根据具体业务及可利用的所有数据设计一套精准、易于工程实现、可以处理大规模数据的 (分布式) 机器学习算法,进而可以预测用户的兴趣偏好。

09

一些问题

效率与可拓展性

对于推荐系统而言,不仅需要考虑模型的准确度,运行效率和可维护性也是非常重要的方面。效率指的是当用户发来一个请求时,推荐系统能够以接近实时的速度返回结果,而不需让用户等待;可维护性指系统的部署简便,能够支持定期更新,或者增量式更新。随着数据量的激增,如何更高效地处理数据是我们面临的一个挑战。

多样化数据融合

在推荐系统中,用户或者物品的数据往往是复杂多样的。物品的内容可以包括文本、图像、类别等数据;用户的行为数据可以来自多个领域,例如社交网络、搜索引擎、新闻阅读应用等;用户的行为反馈也可以是丰富多样的,例如电商网站中,用户的行为可能有搜索、浏览、点击、收藏、购买等。单一、同构的模型是不能有效地处理这些多样化的数据的。如何对这些数据进行深度融合,是一个值得思考的问题。

捕捉用户长短期偏好

用户的偏好大致可以分为长期和短期两类。长期偏好往往指用户的兴趣所在,例如她是五月天的歌迷,那么未来很长时间她都会对五月天的歌曲、演唱会门票感兴趣;短期偏好指的是用户在当前环境下的即时兴趣,例如最近一周用户比较喜欢听抖音上的热门歌曲,那么推荐系统也应该捕捉到用户的这个兴趣,或者用户在未来一个月有搬家的打算,那么推荐系统可以适当地推送一些搬家公司的广告。那么,如何结合情境因素的影响,将用户的长期偏好与短期需求更紧密、有效地结合起来呢?

如果对以上问题有任何好的想法和建议欢迎添加我的微信:JemiLH一起交流。

相关资料:

1.《Large Scale Parallel Collaborative Filtering For The Netflix Prize》

2.《Collaborative Filtering For Implicit Feedback Datasets》

3.《Matrix Factorization Techniques For Recommender Systems》

4. 项亮老师的《推荐系统实践》

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 yubaibai360@qq.com 举报,一经查实,本站将立刻删除。

[ 标签:数据引擎 ]
  • 全部评论(0
说点什么吧