打开

推荐策略产品经理:剖析协同过滤(千人千面推荐的核心 )-上

凤城狂客 23817阅读 2019-02-28

前文:@首发社区+[策略产品经理研习社](公众号chanpin007),已托管维权骑士转载请联系。PS:本文首发社区为有标注、加粗、颜色区分重点,因为编辑器不同所以整篇内容可能看起来会稍微有些“混”,希望谅解。

剖析千人千面的大脑——推荐引擎部分,

其中这篇是定位:对推荐引擎中的核心算法:协同过滤进行深挖。

首先,千人千面融合各种场景,如搜索,如feed流,如广告,如风控,如策略增长,如购物全流程等等;其次千人千面的大脑肯定是内部的推荐引擎,这里有诸多规则和算法在实现对上述各个场景进行“细分推荐排序”;最后是推荐引擎的算法又以“协同过滤”为最核心、最主流热门,也是当下众多内容型、电商型、社交工具、分发型的基础。

【面试关键词:覆盖广、适用性强、推荐引擎的算法核心,也是最有价值的算法之一】

所以,这篇是深挖:协同过滤的算法。

由于协同过滤的算法介绍,网上也蛮多但片段化。要么侧重讲“原理流程”,这个占了4成;要么讲算法公式,这个占5成;还有1成是偏向业务的理解,但这个笼统很难参考。

因此,这篇是属于推荐引擎-理论搭建体系-之二,PM可以侧重关注:

(1)了解协同过滤之前,先知道什么是:集体智慧。(没有对比就没有“感知”,这个集体智慧是更好帮助了解、对比协同过滤。因为网上很多片段化的文章,没有对比出来,不利于PM去联想和学习的)

(2)了解什么是协同过滤(这点偏向理论,网上的很多也如此。但我挑选了精简部分,就只要2点关键:1知道它有什么作用,2为什么需要是它)

(3)学习协同过滤的核心。要实现包括三大重要部分:【干货,核心】

  1. 一是收集用户偏好(知道为什么要收、收哪些哪样的、如何收集、收集过程有什么原则?);
  2. 二是找到相似的用户或者物品(这里的核心有2大方面:1是怎样定义算“相似”,属于相似度问题,用什么公式去计算、有什么特点;2是相似邻居问题,可用什么公式计算两个相似邻居);
  3. 三是计算推荐(这里核心是基于物品的方式是如何计算推荐、基于用户又是如何、两者PK又有什么差异点,如在场景,多样性)每个部分再挖出各个关键点、(学习,不是了解,是学习)

(4)举个推荐引擎中-应用协同过滤的实践案例。国外的产品案例。(包括如何使用,用什么公式,什么场景,有什么问题,怎么解决,代码层面附录。PS:为什么选国外呢? 是因为这个推荐最早是应用于国外,不管是算法还是理论层面,确实要比国内深究多一分,觉得比较客观,可以参考和适用更强,这点可以跳着看。)

以上,个人认为走推荐、画像、搜索等PM核心要掌握第(1)~(3)部分。(公式可以除外。),其他策略PM们也可以关注各种的原理、特点、面试关键词,以用来作为谈资、需求筹码、面试拔高、综合素质的层次跨越获取高薪。

#目录#

  • 一、集体智慧和协同过滤
  • (1)什么是集体智慧
  • 1、原理和介绍
  • 2、从案例去看
  • (2)什么是协同过滤
  • 怎么去理解呢?
  • 会遇到什么问题?
  • 二、深入协同过滤的核心
  • (1)收集用户偏好
  • 1、原理作用:
  • 2、核心策略:如何收集呢?
  • a、通用、标准的
  • b、偏业务:如内容型(以腾讯视频为例)
  • c、偏业务:如服务型(以美团为例)
  • d、总结-提取策略、方法论
  • (2)找到相似的用户或物品
  • 1、相似度的计算
  • 2、相似邻居的计算
  • (3)计算推荐
  • 1、基于用户的 CF(User CF)
  • 2、基于物品的 CF(Item CF)
  • 3、User CF vs. Item CF
  • 4、小结:
  • 三、案例分析:基于 Apache Mahout 实现高效的协同过滤推荐
  • (1)简单介绍
  • (2)Preference
  • (3)DataModel
  • (4)实现推荐:Recommender
  • 1、User CF
  • 2、Item CF
  • 3、Slope One
  • 四、总结

一、集体智慧和协同过滤

(1)什么是集体智慧

1、原理和介绍

集体智慧 (Collective Intelligence) 并不是 移动互联网时代特有的,只是在 移动互联网时代,大家在 Web 应用中利用集体智慧构建更加有趣的应用或者得到更好的用户体验。

核心原理:

集体智慧是指在大量的人群的行为和数据中收集答案,帮助你对整个人群得到统计意义上的结论,这些结论是在单个个体上无法得到的,它往往是某种趋势或者人群中共性的部分。

(PS:从上面可以知道,这里的“结论”是提取共性。这里的本质应用就可以是推荐系统的“人以群分,物以类聚”思想。)

( 补充1:)

集体智慧(Collective Intelligence,CI),简称集智,它是一种共享的或群体的智能。

在互联网时代之前就存在,可以分为两面去看:

  • 在网络时代来临之前,集体智慧就一直活跃在生物学、社会学、计算机科学、大众行为学等领域 [1] [2] 。
  • 随着Web 2.0的崛起和社会性软件的普及,集体智慧这在社交网络服务、众包、分享、评论和推荐等领域也得到了广泛应用 [3] (典型案例包括:维基百科、百度百科、百度知道、猪八戒网、任务中国、Threadless、InnoCentive、digg、iStockphoto、Mechanical Turk等。)

(补充2:)

为什么会补充说明这个。有2个原因,一是有些饭友不太清楚;二是我觉得这个概念其实很多公司、业务、产品在设计、在做策略、在做发展都离不开,多多少少会掺和到,所以抛出这个概念,可以让大家注意到。

总之越来越多的传统公司和组织也开始使用各种集体智慧平台或工具,借助外部智慧以解决复杂问题。尤其现在主推的各种智能平台,智能城市、策略。

2、从案例去看

Wikipedia 和 Google 是两个典型的利用集体智慧的 移动互联网 应用:

【Wikipedia】(维基百科)

  • Wikipedia 是一个知识管理的百科全书。(相对于传统的由领域专家编辑的百科全书)
  • Wikipedia 允许最终用户贡献知识,随着参与人数的增多,Wikipedia 变成了涵盖各个领域的一本无比全面的知识库。
  • 所以在 Wikipedia 上,这种改版和修正被变为每个人都可以做的事情,任何人发现错误或者不完善都可以贡献他们的想法,即便某些信息是错误的,但它一定也会尽快的被其他人纠正过来。从一个宏观的角度看,整个系统在按照一个良性循环的轨迹不断完善,这也正是集体智慧的魅力。
  • (补充:或许也许有人会质疑它的权威性,但如果你从另一个侧面想这个问题,也许就可以迎刃而解。在发行一本书时,作者虽然是权威,但难免还有一些错误,然后通过一版一版的改版,书的内容越来越完善。(饭友们可以回忆思考下。常见的个性化推荐产品,如电商,如头条,网易等等,不管是推荐系统也好,搜索也罢,各种策略产品,是不是都说你越使用、越反馈,越懂你,越精准,这里的本质原理是“相通”的))

【Google】(姑姑,哈哈)

  • Google:目前最流行的搜索引擎,与 Wikipedia 不同,它没有要求用户显式的贡献,但仔细想想 Google 最核心的 PageRank 的思想,它利用了 Web 页面之间的关系,将多少其他页面链接到当前页面的数目作为衡量当前页面重要与否的标准;
  • (补充:或许饭友们绝对这不好理解,那么你可以把它想象成一个选举的过程,每个 Web 页面都是一个投票者同时也是一个被投票者,PageRank 通过一定数目的迭代得到一个相对稳定的评分。Google 其实利用了现在 Internet 上所有 Web 页面上链接的集体智慧,找到哪些页面是重要的。 (饭友们同样可思考下:这里的页面上各种的链接,找到哪些页面,是不是和我们很多内容型产品,找到相似的内容资料,如文章,如视频等相似呢? 这里“投票者”其实可以理解是用户对内容的行为反馈))

(补充1:这里的web页面不算仅指PC端,也是包含移动端。更多是泛指产品中的每个”网络页面”。)

(2)什么是协同过滤

怎么去理解呢?

协同过滤是利用集体智慧的一个典型方法。

(PS,协同过滤是推荐的核心算法,即集体智慧和推荐是关系的,个中原理参见上面所说的)

要理解什么是协同过滤 (Collaborative Filtering, 简称 CF),首先想一个简单的问题:

  • 如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?
  • 大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而一般更倾向于从口味比较类似的朋友那里得到推荐。这就是协同过滤的核心思想。

核心原理:协同过滤一般是在海量的用户中发掘出一小部分和你品位比较类似的,在协同过滤中,这些用户成为邻居,然后根据他们喜欢的其他东西组织成一个排序的目录作为推荐给你。

会遇到什么问题?

当然其中有一些核心的问题:

  • 如何确定一个用户是不是和你有相似的品位?(数据,动作,用户/内容画像)
  • 如何将邻居们的喜好组织成一个排序的目录?(召回,排序,推荐)

如同第一章所说,同样与集体智慧PK。可以发现:

协同过滤相对于集体智慧而言,它从一定程度上保留了个体的特征,就是你的品位偏好,所以它更多可以作为个性化推荐的算法思想。

(补充2:所以可以想象,这种推荐策略在 移动互联网 的长尾中是很重要的,将大众流行的东西推荐给长尾中的人怎么可能得到好的效果,所以回到推荐系统的一个核心问题:了解你的用户,然后才能给出更好的推荐。)

二、深入协同过滤的核心

前面作为背景知识,介绍了集体智慧和协同过滤的基本思想,主要是为饭友们对推荐相关的打一些基础和铺垫。

接下来,下面这一节将深入分析协同过滤的原理,介绍基于协同过滤思想的多种推荐机制,优缺点和实用场景。

(核心1、面试问题坑、需求反推工作量思考:协同过滤的基本核心有3个要素。)

首先,要实现协同过滤,需要一下几个步骤

  • 收集用户偏好
  • 找到相似的用户或物品
  • 计算推荐

(1)收集用户偏好

1、原理作用:

(口水话,面试、需求观点)

一句话:要从用户的行为和偏好中发现规律,并基于此给予推荐。所以,如何收集用户的偏好信息成为系统推荐效果最基础的决定因素。(前者饭友PM都知道,后者是面试或需求中常会问)

2、核心策略:如何收集呢?

(即用户有很多方式向系统提供自己的偏好信息,而且不同的应用也可能大不相同,下面举例进行介绍。以下可以作为需求分析、口径定义使用。)

(补充1:【面试坑:当问到具体的用户偏好收集、如何定义行为、权重、正负反馈等相关问题,实际就是这节相关内容,所以下面的案例都可以参考回答,基本对全产品都通用,具有很强的适用性,】)

(补充2:这种类型相关的,可以参考以前社区的一些文章,以下我找了一些:)

  • 【重要/实践】腾讯视频推荐策略:播放结束后,如何进行推荐策略思考?
  • 【快课/实践】剖析京东JD在“猜你喜欢”的产品设计+推荐策略

(补充3:有很多办法和操作,具体业务,具体产品都可能不太同。我也无法罗列完全,但挑选了业内常用,实用性和发散性好的。如下表。)

(表 1 用户行为和用户偏好)

(补充4:PS: 布尔值是“真” True 或“假” False 中的一个。代码层有时也会在适当时将值 True 和 False 转换为 1 ...)

a、通用、标准的

71fe4a1f5727f04c42fc0734c531556d-picture

b、偏业务:如内容型(以腾讯视频为例)

(上面已经提过了。再举个形象例子:你说你很爱你女友;女友反问:你有多爱?如果女友是讲情义的,那么你就给以前为她做过的DIY礼物打上最高权重,优先展示说出这些内容;如果女友是讲金钱的,那么你就准备为她买过的、即将买的iPhoneXS送她,优先物质。权重,就是优先级,重要性。)(下面的,可以直接应用到视频平台的推荐赋值,还是比较全面的。但是,我建议还是要思考到业务情况,赋值和权项范围是要视情况调整。)

8d9d4e8c29e9fcbabff09f2972db5b56-picture

c、偏业务:如服务型(以美团为例)

  • 用户特征
  • 人口属性:用户年龄,性别,职业等。
  • 行为特征:对商户/商圈/品类的偏好(实时、历史),外卖偏好,活跃度等。
  • 建模特征:基于用户的行为序列建模产生的特征等。
  • 商户特征
  • 属性特征:品类,城市,商圈,品牌,价格,促销,星级,评论等。
  • 统计特征:不同维度/时间粒度的统计特征等。
  • 图像特征:类别,建模特征等。
  • 业务特征:酒店房型等。
  • Query特征
  • 分词,意图,与商户相似度,业务特征等。
  • 上下文特征
  • 时间,距离,地理位置,请求品类,竞争情况等。
  • 广告曝光位次。

(其他如电商也是同理,在这里就不一一梳理。有兴趣可以看社区的用户画像、推荐等专辑内容,里面有不同细分类的梳理,由于这些是要结合,所以会相对分散到某个不同细分领域的产品或业务上。)

d、总结-提取策略、方法论

(补充1:下面是对提上述的一些“收集特征、权重赋值”等抽象出“可复用”的思想。)

(补充2:)【面试坑、问题点】

(关于策略类PM都离不开大数据的行为收集,特征定义。下面是对这些细分的总结。我梳理每个独立的点,都可以回答。回答的问题范围是“上述案例的一些“关键词””,所以建议先回答下面的一些要点,若面试官深挖再回答上面的细分案例。

(补充3:

上述回答逻辑,即总-分-分原理,这样有助于逻辑回答,也有助于符合面试的不断深挖过程。尽量避免一开始就回答具体,这样会让面试官一来问的更细,反而出现没有学习和复盘到而出现更多意外,二来也是给各自心理门槛,即过三关心理,面试官深入问的,你基本都能回答出。)

(下面不用产品这个词,而是用“应用”,泛指更多端的产品)

策略1:

以上列举的用户行为都是比较通用的、经典业务的。但是如果是推荐、搜索等PM,是可以根据自己应用(业务、产品)的特点添加特殊的用户行为,并用他们表示用户对物品的喜好。

策略2:

【方法论,面试可以分享,大大加分!】

在一般应用中,提取的用户行为一般都多于一种,关于如何组合这些不同的用户行为,基本上有以下两种方式:(策略、方法论)

  • 【将不同的行为分组】:(假设以第一个案例为例),一般可以分为“查看”和“购买”等等,然后基于不同的行为,计算不同的用户 / 物品相似度。类似于当当网或者 Amazon 给出的“购买了该图书的人还购买了 ...”,“查看了图书的人还查看了 ...”
  • 【用户、行为加权】:(假设以第二个案例为例),根据不同行为反映用户喜好的程度将它们进行加权,得到用户对于物品的总体喜好。(有些饭友联系到画像内容,这里我要补充下:一般来说,显式的用户反馈比隐式的权值大,但比较稀疏,毕竟进行显示反馈的用户是少数;同时相对于“查看”,“购买”行为反映用户喜好的程度更大,但这也因应用而异。)
  • 【补充】:
  • 上面的全部,都可以作为针对“如何组合、提取用户行为”的面试问题,所表达的观点,这肯定会加分,并且这些都是关键知道思想。就如同可以理解成:共产党以前走农村包围城市的战略,其根本指导思想是:如论持久战。 所以上面1-3的例子是做法,那么作为策略PM一个核心的点是,你要学会有方法策略,怎么能迁移复用。这里的指导思想就如上面所说的,虽然不一定说完整全面,但对于大部分互联网产品,都是这个原理】

策略3:

当策略PM做到上面之后,也就是收集了用户行为数据之后,

接下来还需要对数据进行一定的预处理。

【补充、面试问题坑】

(常问的问题类似:你觉得在收集数据(用户数据)、数据源等处理等等,要注意什么。或者遇到什么的坑,或者说你是怎么想的,总之核心是“数据处理”。这个对于画像PM等底层数据PM,一定会问!)

【面试观点、面试坑】其中最核心的工作就是:减噪和归一化。

  • 减噪:用户行为数据是用户在使用应用过程中产生的,它可能存在大量的噪音和用户的误操作,可以通过经典的数据挖掘算法过滤掉行为数据中的噪音,这样可以是的分析更加精确。

(补充1:这里具体的方法,算法等细节,可以参考用户画像等相关内容,这话题又比较大,此处不展开了。只要知道什么回事即可。)

  • 归一化:如前面讲到的,在计算用户对物品的喜好程度时,可能需要对不同的行为数据进行加权。但可以想象,不同行为的数据取值可能相差很大。
  • (例子1:比如,用户的查看数据必然比购买数据大的多,如何将各个行为的数据统一在一个相同的取值范围中,从而使得加权求和得到的总体喜好更加精确,就需要进行归一化处理。)
  • (例子2:从以往实战来看,最简单的归一化处理:就是将各类数据除以此类中的最大值,以保证归一化后的数据取值在 [0,1] 范围中)。
  • (n同上补充的点,这个相对抽象,饭友们可以结合我举得例子去理解~)

(补充2:即上面所做,当进行的预处理后(这个一般可以和数据和开发一起搞),根据不同应用的行为分析方法,可以选择分组或者加权处理,之后可以得到一个用户偏好的二维矩阵,一维是用户列表,另一维是物品列表,值是用户对物品的偏好,一般是 [0,1] 或者 [-1, 1] 的浮点数值。)

(图另外后面再配。就是数组矩阵的样式,如果很抽象就简单理解成excel表左列右行的样式。)


下篇:推荐策略产品经理:剖析协同过滤(千人千面推荐的核心 )-下

写下你的评论

发布评论 取消
500

写下你的评论

发布
500

评论

查看更多评论

删除评论

删除的评论将永久消失,确定要删除吗?

删除 取消
内容不合法,请修改后提交

云队友 | 热门职位

我要招聘 →

绑定手机

参与互动需要先绑定手机号哦~

完善信息

参与互动需要完善个人信息哦~

参与互动需要进行审核

为了保证社区的内容质量,需要提一个问题,来证明你是可以的!

在问题审核通过后,即可开启PMCAFF所有功能~

  • 微信好友

  • 朋友圈

取消

打开 APP 阅读

推荐使用 PMCAFF APP,阅读体验更佳。