后台回复 进阶 查看《各行业产品设计方案》
推荐引擎是什么?
综合利用用户的行为、属性,对象的属性、内容、分类,用户对内容或商品的喜好,以及用户之间的社交关系等等,挖掘用户的喜好和需求,主动向用户推荐其感兴趣或者需要的内容和商品。
输出
为用户推荐其感兴趣或者需要的对象
数据源
用户:行为、属性
对象:属性、内容、分类用户、对象间:偏好
用户间:社交关系、信任
处理
挖掘用户喜好
推荐引擎工作原理图
将推荐引擎看作黑盒,它接受的输入是推荐的数据源,一般情况下,推荐引擎所需要的数据源包括:
-
要推荐物品或内容的元数据,例如关键字,基因描述等;
-
系统用户的基本信息,例如性别,年龄等
-
用户对物品或者信息的偏好,根据应用本身的不同,可能包括用户对物品的评分,用户查看物品的记录,用户的购买记录等。
用户的偏好信息可以分为两类:
-
显式的用户反馈:这类是用户在网站上自然浏览或者使用网站以外,显式的提供反馈信息,例如用户对物品的评分,或者对物品的评论。
-
隐式的用户反馈:这类是用户在使用网站是产生的数据,隐式的反应了用户对物品的喜好,例如用户购买了某物品,用户查看了某物品的信息等等。
显式的用户反馈能准确的反应用户对物品的真实喜好,但需要用户付出额外的代价。
隐式的用户行为,通过一些分析和处理,也能反映用户的喜好,只是数据不是很精确,有些行为的分析存在较大的噪音。
但只要选择正确的行为特征,隐式的用户反馈也能得到很好的效果,只是行为特征的选择可能在不同的应用中有很大的不同,
例如:电子商务的网站上,购买行为其实就是一个能很好表现用户喜好的隐式反馈。
推荐引擎根据不同的推荐机制可能用到数据源中的一部分,然后根据这些数据,分析出一定的规则或者直接对用户对其他物品的喜好进行预测计算。
这样推荐引擎可以在用户进入的时候给他推荐他可能感兴趣的物品。
推荐引擎的两大核心内容
1. 用户画像
使用信息流产品其实就是一个对其不断进行用户画像的过程。
用户在APP中的操作行为,如:搜索、点击内容、浏览内容、收藏内容、评论、点赞等行为都是对用户画像的不断完善。
通过对这些用户行为的分析而生成用户的偏好,不断为用户推荐高相似度内容的文章或视频,来达到不断增加用户粘性的目的。
用户画像的维护是一个循序渐进的过程,首次使用APP时会对用户进行冷启动,常用的冷启动方式比较简单,做好内容分类,然后让用户进行选择兴趣标签。
2. 数据分类
主要是指对数据的处理。
对于原始内容数据,我们要进行大量的数据处理,包括添加标签,主题分类等,这些数据的处理动辄达到亿级千万级的量级,需要借助hadoop、hive、spark、strom等工具实现。
标签的构建主要通过对文章进行分词、通过TF-IDF等算法找出文章可以由哪些标签来抽象表达;主题分类由LDA模型通过spark框架计算实现。
主题比如:体育新闻、it新闻、娱乐新闻等构成。
个性化推荐系统其实就是在做排序。
通过spark、hive等工具,对离线的数据进行排序处理,排序特征包含:
曝光量
点击量
点击率
作者权重
文章内容权重等
对几十个特征进行综合排序。除了离线计算,现在的推荐系统也会通过实时的线上特征对内容排序进行更新。
例如对于高曝光率已经高转化为点击率的内容,进行降维处理,以保障其他优质内容的曝光机会。
由此,通过将离线计算分类好的优质内容,面向用户画像精确地推送给用户受众,达到了用户刷不停,离不开的目的。
推荐引擎的分类
推荐引擎的分类可以根据很多指标:
1. 推荐引擎是否为不同的用户推荐不同的数据:根据这个指标,推荐引擎可以分为基于大众行为的推荐引擎和个性化推荐引擎
-
大众行为的推荐引擎:
对每个用户都给出同样的推荐,这些推荐可以是静态的由系统管理员人工设定的,或者基于系统所有用户的反馈统计计算出的当下比较流行的物品。
-
个性化推荐引擎:
对不同的用户,根据他们的口味和喜好给出更加精确的推荐,这时,系统需要了解需推荐内容和用户的特质,或者基于社会化网络,通过找到与当前用户相同喜好的用户,实现推荐。
这是最基本的推荐引擎分类,大部分人们讨论的推荐引擎都是将个性化的推荐引擎,
因为从根本上说,只有个性化的推荐引擎才是更加智能的信息发现过程。
2. 根据推荐引擎的数据源:指如何发现数据的相关性,大部分推荐引擎的工作原理还是基于物品或者用户的相似集进行推荐。那么根据不同的数据源发现数据相关性的方法可以分为以下几种:
-
根据系统用户的基本信息发现用户的相关程度,这种被称为基于人口统计学的推荐(Demographic-based Recommendation)
-
根据推荐物品或内容的元数据,发现物品或者内容的相关性,这种被称为基于内容的推荐(Content-based Recommendation)
-
根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或者是发现用户的相关性,这种被称为基于协同过滤的推荐(Collaborative Filtering-based Recommendation)。
3. 根据推荐模型的建立方式:想象在海量物品和用户的系统中,推荐引擎的计算量相当大,实现实时的推荐务必需要建立推荐模型,关于推荐模型的建立方式可以分为以下几种:
-
基于物品和用户本身:
这种推荐引擎将每个用户和每个物品都当作独立的实体,预测每个用户对于每个物品的喜好程度,这些信息往往是用一个二维矩阵描述的。
-
基于关联规则的推荐(Rule-based Recommendation):
联规则的挖掘已经是数据挖掘中的一个经典的问题,主要是挖掘一些数据的依赖关系,典型的场景就是“购物篮问题”,通过关联规则的挖掘,我们可以找到哪些物品经常被同时购买,或者用户购买了一些物品后通常会购买哪些其他的物品,当我们挖掘出这些关联规则之后,我们可以基于这些规则给用户进行推荐。
-
基于模型的推荐(Model-based Recommendation):
这是一个典型的机器学习的问题,可以将已有的用户喜好信息作为训练样本,训练出一个预测用户喜好的模型,这样以后用户在进入系统,可以基于此模型计算推荐。这种方法的问题在于如何将用户实时或者近期的喜好信息反馈给训练好的模型,从而提高推荐的准确度。
产品中,很少只使用了一个推荐策略的推荐引擎,一般都是在不同的场景下使用不同的推荐策略从而达到最好的推荐效果,
例如 Amazon 的推荐,它将基于用户本身历史购买数据的推荐,和基于用户当前浏览的物品的推荐,以及基于大众喜好的当下比较流行的物品都在不同的区域推荐给用户,让用户可以从全方位的推荐中找到自己真正感兴趣的物品。
案例:电商产品推荐引擎设计
1. 关联推荐
关联规则的挖掘主要是挖掘一些数据的依赖关系
通过关联规则的挖掘,我们可以找到哪些物品经常被同时购买,或者用户购买了一些物品后通常会购买哪些其他的物品,当我们挖掘出这些关联规则之后,我们可以基于这些规则给用户进行推荐。
关联推荐帮助用户在满足某一类需求之后发现其他的潜在需求,从而带动网站其他产品的销售,
关联推荐在营销上分为两种:向上营销和交叉营销。
-
向上营销是同类产品线或升级产品的推荐。
-
交叉营销是基于相似但不同类产品的推荐。
关联规则中有两个关键指标:支持度(support)和信任度(confidence)
支持度=购买A和B商品(集合G)的人数/所有购买过商品(集合U)的人数
置信度=购买A和B商品(集合G)的人数/购买A商品(集合A)的人数
商品A、B是否值得关联销售,网站需要设置一个最小支持度和最小信任度,当支持度、信任度达到一定值时就可以判定商品A、B可以关联销售。
在用户的购买行为中,用户A不仅购买了商品B,还有可能购买商品C、D、E等一些列产品。有置信度大于最小置信度的这些商品组合才是有关联的,是值得推荐的,也可以认为关联购买率最高的宝贝是值得关联推荐的。
2. 协同过滤推荐
根据所有用户对物品或者信息的偏好,发现与当前用户口味和偏好相似的“邻居”用户群,然后,基于邻居的历史偏好信息,为当前用户进行推荐。
基本原理:
假设四名用户A、B、C、D对C、D、E、F四本书的评分如下:
A=(3,4,4,4,5)
B=(4,4,2,5,3)
C=(4,5,3,3,3)
D=(3,4,5,2,2)
用户B、C对四本书的评分很接近,我们可以推断,用户B、C具有相同或相似的口味和便好,当用户B购买了书籍G时,我们可以向用户C推荐书籍G。
这种推荐的前提是基于大量的用户参与,一旦缺乏用户对物品的评价,那么这种推荐就失效,并且如果数据较少,推荐本身是不准确的。
网友评论