推荐:根据用户的历史行为进行用户兴趣建模,结合内容的特征,给到用户最能满足其兴趣和需求的内容。
推荐系统:推荐系统是一种信息过滤系统,用于预测用户对物品的“评分”或“偏好”,是特定场景下人与信息更有效率的连接。
个性化推荐系统,主要是为了以下两点:解决信息过载问题;挖掘长尾物品/信息。
推荐系统通过发掘用户的行为,找到用户的个性化需求,从而将长尾物品准确推荐给需要它的用户,帮助用户找到他们感兴趣但很难发现的物品。
推荐服务通常由三部分组成:日志子系统、算法子系统和前台展示子系统。
好的产品用户体验一定好,不好的产品用户体验不一定差,这其中的唯一区别就是你的产品能否带来价值。推荐策略解决的问题就是如何能够推荐出让用户满意、让业务受益的内容。常见指标包括:
推荐系统存在着“信息茧房”等诸多问题:
作为内容分发常见的3种方式,编辑、算法与社交分发各有千秋,互相补充。
推荐系统需要由多个推荐引擎组成,每个推荐引擎负责一类特性和一种任务,推荐系统的任务是将推荐引擎的结果按照一定权重或者优先级合并,排序然后返回。
推荐引擎架构主要包括三部分:
先看一个故事版算法讲解:
即便没有算法,只用标签规则,也能够搭建推荐系统,在一定程度上实现提升分发效率的需求。但基于标签的方法有一个重要的缺点——它需要足够丰富的标签,可以通过用户生成标签的方式快速丰富标签维度。
标签推荐策略可分为三种:
扩展:负权重标签的使用有时会有意想不到的改进效果。
基于内容推荐利用一些列有关物品的离散特征,推荐出具有类似性质的相似物品。
优点:无冷启动问题,只依赖于物品本身地特征而不依赖用户的行为,让新的物品、冷僻的物品都能得到展示的机会。只要用户产生了初始的历史数据,就可以开始进行推荐的计算。
存在的问题:推荐质量优劣完全依赖于特征构建的完备性,但特征构建本身就是一项系统的工程,存在一定成本。没有考虑用户对物品的态度,用户的品味和调性很难得到诠释和表达。
典型方式:TF-IDF,其基本思想:出现频率越高的标签区分度越低,反之亦然。
以新闻推荐举例:
TFIDF算法可以能够返回给我们一组属于某篇文本的”关键词-TFIDF值”的词数对,这些关键词最好地代表了这篇文本的核心内容,而这些关键词的相对于本篇文章的关键程度由它的TFIDF值量化。计算两篇文本的相似程度公式如下:
m是两篇文章重合关键词的集合。将两篇文本的共同关键词的TFIDF的积全部加在一起,获得最终代表两篇文本的相似度的值。
举例:
刚抓进系统的两个新闻,分别提取出关键词与TFIDF值如下:
A新闻:“美女模特”:100,“女装”:80,“奔驰”:40
B新闻:“程序员”:100,“女装”:90,“编程”:30
两篇文章只有一个共同关键词“女装”,故相似度为:80*90=7200。
把用户的消费行为作为特征,以此进行用户相似性或物品相似性的计算,进行信息匹配。
协同过滤方法根据用户历史行为(例如其购买的、选择的、评价过的物品等)结合其他用户的相似决策建立模型。作为目前应用最为广泛的推荐机制,其基于用户行为的特点使我们不需要对物品或信息进行完整的标签化分析和建模,可用于预测用户对哪些物品可能感兴趣(或用户对物品的感兴趣程度)。
给用户推荐和他兴趣相似的其他用户喜欢的内容,重点在于不同用户的相似性计算。
基础思路:
值得注意的是:在计算用户兴趣相似度时考虑物品的流行度对提升推荐结果的质量有帮助,两个用户对冷门物品采取过同样的行为更能说明他们兴趣的相似度。John S. Breese提出了改进后的用户相似度计算公式,惩罚了用户u和用户v共同兴趣列表中热门物品对他们相似度的影响。
算法缺点:
随着用户数目越来越大,计算用户兴趣相似矩阵越来越困难;运算时间复杂度和空间复杂度与用户数增长近似于平方关系。
因此,亚马逊推出了Item CF。
给用户推荐和他之前喜欢的内容相似的内容,重点在于不同内容的相关性计算,并不利用物品的内容属性计算物品之间的相似度。常见模型如关联规则。
(备注:此处是从用户角度计算的内容相关性,而3.2是直接计算内容的相似性。)
基础思路:
注意:具体改进公式和Python实现和前文的K值选择可移步《推荐系统实践》2.4基于领域的算法
基础思路:用用户的喜好信息来训练算法模型,实时预测用户可能的点击率。
在推荐领域,深度学习的目的之一就是尝试将人和物向量化,即把某个人和某个物品学习成一种统一的表示方式,随后在这个统一的表示方式中计算这个人和物品的相似度。当拥有内容向量之后,之后再将用户映射进来即可,当人和物都映射到同一个可比较的空间中时,就能够基于计算结果去执行相关的内容推荐。
当具备一定的数据量时,深度学习会带来比较明显的效果提升,但当你要去搭建一个深度学习模型的时候,可能真的会遇到很多问题。比如:用多少数据量去训练模型是可以的?训练数据该用什么格式?多“深”才算深度模型?训练模型太慢了怎么办等。
级联融合:将数据直接给到模型,而模型经过一层一层的过滤,最后反馈某个/某类用户的推荐物品/内容列表。
权重融合:将数据直接给到模型,而模型中分为好多个子的模型,通过子模型算出给某个/某类用户的推荐物品/内容的列表,而此列表包含顺序因素,越靠前的内容被喜欢的可能性就越大,然后将各个子模型的列表按照某个权重进行加权,最后得到整个父模型的推荐列表,也就是该推荐系统给到用户的推荐物品/内容列表。
用户行为数据最为重要,几乎没有哪一个推荐系统可以直接表示不需要用户行为数据。一方面,用户行为数据是训练模型中的一个重要数据来源,另外一方面,需要通过用户的行为反馈,技术同事才能知道推荐系统到底做得如何。搭建推荐系统的一个秘籍就是积累用户行为数据,如果没有将重要的用户行为做采集,例如在电商场景中,如果只是记录最终的下单数据,那么离推荐系统的数据要求还是有一定的距离。
物品信息指推荐系统中能采集到的描述每一个内容的信息。以电商场景为例,在录入一件具体物品时,录入商品的品牌、价格、品类、上架时间等就是我们要收集的物品信息。假设在电商场景中,如果并不清楚每个商品的品牌,也就无法从一些物体的描述信息中去提取某个商品到底属于何种品牌,那么推荐效果自然受到限制。当物品信息采集的足够丰富时,对推荐系统的效果就会有一定的帮助。
在传统的思路中,认为用户画像里面存储的实际还是用户的标签,但在很多实际场景中标签数量少、维度粗,可能根本不具备去给用户打标签的能力,这种传统的“标签式”想法,就会限制搭建推荐系统的思路。
而从深度学习的角度出发,用户画像中储存的并不是通常理解的“标签”,他可能存储的是这个人的向量,深度学习是把人和物品做向量化,但这个向量是不可被理解的,即我们可能并不知道这个向量表示的是什么意思,当我们看到某个用户对应的向量,我们也不知道他是对体育、音乐或是娱乐感兴趣,但我们仍能够通过向量去为他推荐其感兴趣的内容。
常见外部数据来源有阿里腾讯等,但外部数据对于推荐系统的效果,需要一个极为谨慎的推理和验证。
在埋点前有个更重要的事情需要想清楚:
一个新用户,没有任何历史行为数据,怎么做推荐?
一个新上线的物品,没有用户对它产生过行为,怎么推荐给感兴趣的用户?
一个新开发的网站,没有用户数据,怎么做个性化推荐?
常见的推荐系统评估指标有用户满意度、预测准确度、覆盖率、多样性、新颖性、惊喜度、信任度、实时性、健壮性、商业目标、性能、扩展性。
预测准确度,是推荐系统最重要的离线评测指标。
评分预测——均方根误差(RMSE)、平均绝对误差(MAE)
评分预测很多提供推荐服务的网站都有一个让用户给物品打分的功能。那么,如果知道了用户对物品的历史评分,就可以从中习得用户的兴趣模型,并预测该用户在将来看到一个他没有评过分的物品时,会给这个物品评多少分。预测用户对物品评分的行为称为评分预测。评分预测的预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算。
TopN推荐——准确率(Precision)、召回率(Recall)
提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐叫做TopN推荐。TopN推荐的预测准确率,一般通过2个指标度量:准确率(Precision)、召回率(Recall)。
准确率:准确率是针对预测结果而言的,表示给用户推荐的物品中,有多少是真正感兴趣的。
用户满意度是评测推荐系统的重要指标,无法离线计算,只能通过用户调查或者在线实验获得。
用户调查获得用户满意度主要是通过调查问卷的形式。在设计问卷时需要考虑到用户各方面的感受,这样用户才能针对问题给出自己准确的回答。
在线系统中,我们可以用用户付费率、点击率、停留时间、转化率等指标度量用户的满意度。
简单计算方法:推荐的内容占整体内容的比例,如果所有物品都至少推荐给了1个用户,则覆盖率为100%。
但是上面的方法过于粗略。覆盖率为100%的系统可以有无数的物品流行度分布。为了更细致地描述推荐系统发掘长尾的能力,需要统计推荐列表中不同物品出现次数的分布。如果所有的物品都出现在推荐列表中,且出现的次数差不多,那么推荐系统发掘长尾的能力就很好。因此,可以通过研究物品在推荐列表中出现次数的分布描述推荐系统挖掘长尾的能力。如果这个分布比较平,那么说明推荐系统的覆盖率较高,而如果这个分布较陡峭,说明推荐系统的覆盖率较低。在信息论和经济学中有两个著名的指标可以用来定义覆盖率:信息熵和基尼系数。
反映了推荐算法挖掘长尾物品的能力。
为满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同兴趣的领域,即需要具有多样性。以应用市场举例,可以考虑推荐用户缺少类别的应用:用户缺少健身类的应用,推荐KEEP。
新颖性:排除用户历史反馈物品,排除热门物品,给用户推荐那些他们以前没有听说过的物品。新颖性也是影响用户体验的重要指标之一,它指的是向用户推荐非热门非流行物品的能力。困难的是如何在不牺牲精度的情况下提高多样性和新颖性。
流行性:与用户的新颖度对应,根据推荐物品的平均流行度进行度量,如果推荐物品的流行度都比较高,则物品新颖度比较低。
推荐结果和用户的历史兴趣不相似,但却让用户满意,这样就是惊喜度很高,而推荐的新颖性仅仅取决于用户是否听说过这个推荐结果。
度量推荐系统的信任度只能通过问卷调查的方式,询问用户是否信任推荐系统的推荐结果。
如果用户信任推荐系统,就会增加用户和推荐系统的交互。
提高信任度的方式有两种:增加系统透明度,提供推荐解释,让用户了解推荐系统的运行机制;利用社交网络,通过好友信息给用户做推荐。度量信任度的方式,只能通过问卷调查。
实时性包括两方面:实时更新推荐列表满足用户新的行为变化;将新加入系统的物品推荐给用户;
根据推荐系统的实时性要求:推荐系统在可以在用户上线的时候实时计算推荐结果,在用户发生行为后再次重新计算,需要主动推荐的时候计算。
注意:需注意平衡用户的短期行为和长期行为。
任何能带来利益的算法系统都会被攻击,最典型的案例就是搜索引擎的作弊与反作弊斗争。
健壮性(robust,鲁棒性)衡量了推荐系统抗击作弊的能力。
设计推荐系统时,需要考虑最终的商业目标。不同网站具有不同的商业目标,它与网站的盈利模式息息相关。
返回响应要足够迅速。如果当一个用户请求后的一秒钟才返回推荐结果,用户很可能因丧失耐心而流失。
如何让推荐系统具有高可扩展性。当 DAU 从最初的十万涨到一二百万时,推荐系统还能像最初那样很好地挡住大体量的请求吗?
设计一个健全的推荐系统,算法和策略需要综合考虑多项因素,包括服务器、计算资源成本,人力成本,可持续性和可扩展性等。高质量的推荐系统会使用户对系统产生依赖,因此,推荐系统不仅能为用户提供个性化服务,还能与用户建立长期稳定的关系,提高用户忠诚度,防止用户流失。
公司近期正在搭建推荐系统,由于在探索阶段尚未招聘算法工程师。写好需求后,担心开发写不好算法,于是博主主动请缨,自己写需求自己写代码,期待后续原创吧~
与Leader沟通时,发现有几点比较抽象,所以再次解释下:
[1] 项亮. 推荐系统实践[M]. 人民邮电出版社, 2012.
[2] 言射手.产品经理如何做AI推荐系统[EB/OL].简书,2020-08-09. https://www.jianshu.com/p/a40edf948339
[3] Alan.AI产品经理必修课:如何构建推荐系统[EB/OL].人人都是产品经理,2019-09-18. http://www.woshipm.com/pmd/2882385.html
[4] orca.如何搭建一个推荐系统?[EB/OL].人人都是产品经理,2019-11-29. http://www.woshipm.com/pd/3084100.html
[5] 夏唬人.从0到1搭建推荐策略产品的思考(一):策略产品的必要性和应具备的条件[EB/OL].人人都是产品经理,2019-03-12. http://www.woshipm.com/pd/2043600.html
[6] 夏唬人.从0到1搭建推荐策略产品的思考(二):如何搭建?[EB/OL].人人都是产品经理,2019-03-30. http://www.woshipm.com/pd/2150500.html
[7] 碧绿色的小兔子.三种方法,没有用户数据也能搭建推荐系统[EB/OL].人人都是产品经理,2019-07-16. http://www.woshipm.com/it/2594575.html
[8] 大肚飞鱼.不懂推荐算法也能设计推荐系统?[EB/OL].人人都是产品经理,2019-10-29. http://www.woshipm.com/pd/3023502.html
[9] 代成龙.初识推荐系统[EB/OL].人人都是产品经理,2017-10-16. http://www.woshipm.com/pd/816456.html
[10] 神策Rachel.推荐系统的实践与思考(上篇)[EB/OL].人人都是产品经理,2019-07-25. (断更了,没有下篇)http://www.woshipm.com/pd/2627122.html
[11] 蓝色枫魂.新闻推荐系统:基于内容的推荐算法[EB/OL].CSDN,2017-08-20. https://blog.csdn.net/qq_32690999/article/details/77434381
[12] 产品经理读书会.没有算法资源,产品经理如何从0到1搭建推荐系统?[EB/OL].简书,2019-11-10. https://www.jianshu.com/p/04c9f72a5c29
[13] 一个数据人的自留地.关于新闻个性化推荐你不能不知道的4个部分[EB/OL].人人都是产品经理,2020-05-08.http://www.woshipm.com/ai/3823003.html