本文阐述整个推荐体系从0搭建的全流程,也是最近以来一直深入研究的成果展现,因原文太长,故此切分成3部分发送,每天发送1篇,全文结构为:上篇:第零章概述,第一章标签体系搭建;中篇:第三章用户体系,第四章项目体系,下篇:第五章推荐体系,第六章评估体系,第七章全文总结,第八章参考资料。
内容相对全而深入,希望有推荐体系搭建意愿的平台或者产品经理,能够给予一定的帮助就好。另,求工作。
5. 推荐体系
5.1 推荐方法
很明显,推荐方法和推荐算法是整个推荐系统中最核心、最关键的部分,很大程度上决定了推荐系统性能的优劣。目前,主要的推荐方法包括:基于内容推荐、协同过滤推荐、基于关联规则推荐、基于效用推荐、基于知识推荐和组合推荐。详细的方法介绍也放置在附录4当中以供参考,下面梳理出各方法的优劣:
在除去场景外,也要结合性能因素来进行考量,不同数据量级的情况下不同方法配合不同算法产生的性能压力也是不同的,需要结合公司自身承受情况进行选择。可以看出,以上方法均有不同程度的优势和劣势,所以目前主流推荐方法也几乎均采用混合推荐的方法,利用两种或多种方法之间的优势,规避劣势从而达成尽量完美的方法,这其中也一定是基于不同的使用场景和产品具体情况具体分析了。
5.2 推荐算法
这是整个推荐系统的核心区域,之前做的许多的工作其实都是在给推荐算法提供所谓的相关系数条件,当系数越多的时候,计算出的结果一定是更准确的。
从数学角度来说是计算用户与内容之间的相似度和距离,相似度越高,距离越近的,自然越容易达成转化,所以常见算法也就是向量里面的夹角余弦算法、皮尔逊系数,从距离来说会有欧几里得空间距离算法、曼哈顿距离算法等等,包括还有许多新进研究的算法例如基于图摘要和内容相似混合聚类的推荐算法GCCR。
简单介绍下GCCR,该算法可以极端稀疏的数据集上具有较高的准确度,同时在冷启动的场景下能够提供多样性的推荐结果,从而避免推荐结果收敛过快的问题。
首先,选取用户节点中关注数量较高的节点,从而抽取出稀疏数据中的一个密集子集,利用图摘要的方法,对此密集子集形成关注兴趣相似的核心聚类。
然后,提取种子聚类的内容特征和整个数据集中其它用户的内容特征,基于内容相似度对整个用户群进行聚类,最后将聚类结果用于主题推荐。通过对密集数据子集和全数据集的两阶段聚类过程,提高对极端稀疏数据集的聚类效果。同时,由于图摘要聚类中的类模糊性,可以在对用户兴趣聚类的过程中保留一定的多样性,从而避免冷启动时收敛过快。
所以当前算法非常的多,结合不同场景和产品选择最优算法,才是最好的,在附录5当中也列举了常规的一些距离算法以供参考。
5.3 运用思路
当运用于实际情况时,一定要结合产品自身情况考量,例如产品冷启动期间数据过少,用哪种方法,在数据量级充分上来的时候,减轻计算压力应该用哪种,长期需要修正的时候需要用哪种,都是需要我们综合考量的,下面也将自己梳理的整体推荐思路进行分享。
千人一面
在产品上线初期,无论使用人数,还是内容,都相对较少,还未有足够数据支撑用户相关行为以及趋势,所以在此阶段,以收集用户行为、属性为最高目的,先达成最粗略的推荐行为,也就是判断哪些用户是疑似某一细化方向的目标用户,仅此即可。应该分为两个方向来考虑这个问题,新用户和老用户,对于新用户只能从环境熟悉和可能的物理属性进行判断,老用户可以全方位多维度判断,详见第二章,这里不多做叙述。
所以在当前阶段,主要目标就是收集用户行为,一切行为均不能遗漏,这也就是前文所说的,先围绕每个人建立一套粗略喜好标签模型,此阶段希望的是实时调整,根据用户使用频次和动作来决定,一定要快,因为刚刚上线,用户随时有可能离开。在用户随手点击内容以后回到首页的时候发现已经有较为感兴趣的内容了,那种好感度是不一样的。
千人十面
在这个阶段,已然有之前的用户行为的基础数据作为支持了,所以我们首先要做的就是将用户分组,将有相似喜好的用户找到,方法就是用最经典的向量算法里的夹角余弦,每个用户直接都要分别计算,不过好再现阶段用户量级不多,可以大量计算。计算依据也就是根据之前用户的相关操作行为,给用户打上的相关标签,按照标签相似度来给用户进行聚类。
所以在聚类完成后,一定会获得离别内某种同样的特征值,所以这也就完成了第二阶段的工作,每个类别内的用户进行相同的内容展示。
而且我们已经知道了喜爱不同项目之间的用户特征属性,这时候再进来的用户,我们也就可以相应的放在疑似库里了,等到收集到相应的新用户行为,也就能确定这个新用户的相关喜好方向了,成本会减小很多。所以在这个阶段,要尽量收集全,时间可以控制在2周左右,为下一步更加精准的推荐做准备。
千人百面
从这里开始,伴随着的一定是大批量计算。所以这里我们就是通过每个人的行为,猜测每个人的未知喜好,进行最大化的推荐匹配,我们需要设定动作权重系数,例如:有效打开=5, 分享=4, 收藏=3, 互动=2 , 其它跳转=1, 无效打开=-2 , 点×=-5。
设定完毕后,我们可以看到当用户A、B、C在第二步时,在同一类组,看到的内容均相同,但是行为可能完全不同。我们就能得到以下的近似值,设任意三篇内容为x、y、z轴,那么对于用户A来说,那就是(3,-1,-1),B君是(5,1,-5),C君是(-5,3,3)。用夹角余弦=向量点积/ (向量长度的叉积),所以 A君B君夹角的余弦是0.81,A君C君夹角的余弦是-0.97。
根据余弦定则,等于1是0°,就是完全重合,-1是180°完全相反,所以越靠近1两者越相似,所以AB相似,所以看AB用户之间的差异,比如A看了x的新闻,B只看了y的新闻,就可以进行交叉推荐了。
所以当内容(x、y、z)越多时,计算越准确,直接的结果那就是由于数据量的不断增大以及用户量级的不断增大,每一次计算也是不现实的,用户也多,次数就多,内容也多,点就多,所以考虑到这些,我们在第四步达成最终的目的。
千人千面
我们通过之前的数据积累,大量收集用户之前的相关行为,在这里要通过协同过滤矩阵及拆解来解决问题,矩阵拆解的核心其实是为了得到潜在因子,所以我们需要怎么做。
将内容与用户的行为结合,变为这一张表格,能相应减少许多计算量同时达到不错的效果,如下表:
设定有效打开=5, 分享=4, 收藏=3, 互动=2 , 其它跳转=1, 无效打开=-2 , 点×=-5。
将表格利用协同过滤中的矩阵拆解进行计算,我们就可以得到如下两张表:
这两个矩阵相乘就可以得到估计的得分矩阵:
将用户已经看过的内容剔除后,选择分数最高内容的推荐给用户即可(红体字)。所以在这里,我们其实已经就完全可以精准化的推荐了,结果与计算量达到了相应的平衡。
已经到这一步了,这时候每个人的展示信息已然不尽相同,所以要结合人的之前打开行为,一定要结合时间、场景、内容载体考虑之后的推荐,并且适当加入长尾内容,用户感兴趣的大方向,但是细化方向没有临幸过的。
5.4 抽样
抽样技术在数据挖掘中主要用在两个地方:一是在数据预处理和后处理阶段,为了避免计算规模过大;二是在数据挖掘阶段,通常会对训练出来的模型进行交叉验证,需要抽样将所有样本划分为训练集和测试集。
通常所说的抽样都是随机抽样,主要用于所有样本点都可以认为没有区分时适用。还有一种分层抽样,在样本需要显著的分为不同的子集时,针对每个子集分别进行抽样。
5.5 维度规约
当样本的维度增加的时候,待学习的模型的复杂性是随着维度呈指数增长的,这种现象通常称为“维灾难”。这也就意味着,如果我们想在高维空间中学到和在低维空间中精度一样高的模型,所需要的样本数是呈指数增长的。
维度规约通常是用来处理维灾难问题的。通常维度规约有两种思路,一是从高维数据中选出最能表达数据的一些维度,并用这些维度来代表数据,称为特征选择;另一种是将高维数据通过某种技巧变换映射到低维空间,称为特征构造。
主成分分析是最主要的一种特征选择方式,它通过特征分解能够得到每一个维度对于整个数据的最小均方差的贡献程度,从而定量判断每一维对于数据所包含信息的贡献度。然后保留最主要的一些维度,抛弃一些不显著的维度,对数据进行降维。
奇异值分解是主要的特征构造方式,它通过矩阵分解的方式,将数据从高维空间映射到低维空间,对数据进行降维。
5.6 推荐展示
展示阶段,我们应该以用户为唯一维度来进行思考,从第三章也能看出分为外因和内因,通过外因确定大方向,通过本次的操作行为确定内因,两者结合,时时修正,达到贴合用户的目的。所以并不一定是用户历史行为某类型内容打开较多、较高就要通通放在前面,在自身使用时候还有所谓的厌倦,与惊喜内容相结合,并且是先弱后强还是先强后弱还是两头强中间弱,都是我们应该通过用户时时改变的,强弱为通过历史行为分析出的内容对用户吸引力的量词。
5.7 信息茧房
当前所有的做法都是在不惜代价的尽量精准的完成推送,转化最大化,可是这样真的好吗?不禁从另一个角度思考,如果用户收到的都是符合喜好的内容,就是最好的选择了吗?其实不然,这则很有可能陷入更危险境地——信息茧房。
美国学者凯斯·R·桑斯坦指出信息茧房以“个人日报”的形式呈现:“伴随着网络技术的发达、信息的剧增,人们可以随意选择想关注的话题,可依据喜好定制报纸、杂志,每个人都可为自己量身打造一份“个人日报”。当个人被禁锢在自我建构的信息脉络中,生活必然变得程序化、定式化,信息茧房就像是“回音室”,人们设定了话题、观点,听到的是自己的回音,每个人将都闭塞在自己的空间之内。”
在面对个性化新闻推荐如何走出“信息茧房”,遏制其产生的“回音壁”倾向,桑斯坦提出应该构建网络的“人行道”模式。他认为无论使物理空间的街道、公园、还是报纸、广播、电视等大众媒体,都属于公共领域,都应该像“人行道”一样,可能会遇到种种非计划和不想要的情景,不同的人群会体认到新鲜体验;那些未经实现筛选而遭遇的情状,会引发人们的言行互动。
按照桑斯坦的理论,媒体应该添加“公共论坛”,通过提供用户“非计划”和“不想要”的信息,让他们有机会接触到不同领域的信息。当前新闻类客户端常规做法一般都是添加“热点”类的频道栏目,并且在每个不同的频道下的信息流中用带“热”字的红色小标提示热点信息以示区别。让用户接触到不同阶层的观点,不同类别的信息。
但是在个性化新闻推荐方面,应该弱化用户相关性推荐的原则,拓宽用户的关注领域。个性化推荐除了基于用户自身的基本信息,还有就是基于协同过滤的,是根据社交关系中的好友的兴趣进行关联推荐。这种推荐原则会使用户聚集一批与自身在兴趣、文化等方面相类似的朋友,关注对象的同质化会让用户接收的信息也趋向于同质化。
所以如何根据当前的兴趣建立模型,分析依据当前兴趣推测之后的兴趣偏移点,甚至偏移速度,在适时的时候完成长尾化内容推荐,可能才是未来推荐系统真正的价值。
5.8 小结总结
随着算法出炉之后,是需要经过长期的修正以及实时调整的,在这里面的样例,依然将用户分了组处理。我相信像头条、网易新闻这种体量的APP来说,应该是以每个人就是一个维度,每个人为单位计算和文章内容的相似度,才是终极目的。因为人有自己的用户标签体系,内容同样也有,先确定能影响用户权重的最大标签做粗略筛选,之后精细化每篇内容和每个人进行向量计算逐一得到结果,逐一进行推荐。
在每天够后一定要有相应的review,评估之前策略的效果,结合浏览时间、打开比例、互动反馈、卸载情况等综合考虑策略的优劣,快速调整,下面就要相应介绍评估体系的建立。
6. 评估体系
我们应该获得的是根据用户对推荐的显性或隐性反馈改进、优化原有用户模型,以确保模型能够匹配用户的最新偏好,从而提高模型精度和推荐质量。
6.1 评估维度
精确度的衡量最典型的算法是平均绝对误差(MAE)、平均平方误差(MSE)以及标准平均误差(NMSE)。平均绝对误差是所有单个观测值与算术平均值的偏差的绝对值的平均,用来衡量一组数自身的离散程度。有两个优点,第一是计算方法简单,易于理解,第二是每个系统的平均绝对误差唯一,从而能够区分两个系统平均绝对误差的差异,能更好地反映预测值误差的实际情况。在有些系统中,用户只在意推荐列表前端的预测误差,而对系统的整体误差并不是很在意,这时也不适合采用预测准确度进行评估,后两种更适合用分类准确度度量系统的推荐质量,来衡量观测值同真值之间的偏差,说明样本的离散程度,可作为衡量测量精度的一种数值指标。
集合准确率、召回率和精确率也可以用来衡量推荐的准确度,准确率表示用户对一个被推荐内容感兴趣的可能性,召回率定义为推荐列表中用户喜欢的内容与系统中用户喜欢的所有内容的比率,精确率定义为推荐列表中用户浏览的内容与全部推荐内容的比率。
其中还有像多样性(平均海明距离)、分类准确度(ROC曲线)、排序准确度(平均排序分)、以及半衰期(半衰参数)的因素,之前也描述过用户的兴趣还好是在随着时间的不断推移而增强或减弱的。除此之外与用户直接相关的比如惊喜度、意外程度、覆盖率、新鲜感、用户满意度等指标仍可说明。
这些评估的获得手段一般从用户反馈、数据量化、长期观察和体验数据来获得,最终均要转化为量化指标来进行评估,例如使用时长、使用深度、打开比例等等,之后再进行拆解,某一指标与哪些行为相关,进行相关的行为追查,直接定位。从而达到评估体系的核心意义,到底是好还是不好,如果不好问题在哪儿,定位后进行修正。这部分产品同学只要大概了解有什么方法,即可,具体的原理有算法团队来做,要都搞清楚太难了,已经涉及太多的数学内容,有兴趣的课余时间自己学习即可。
6.2 相关修正
目前采用的用户模型更新技术主要可以分成三类:一类是从用户反馈中抽取新信息添加到用户模型中的信息增补技术;一类是根据生态系统的优胜劣汰法则来优化用户模型的自然进化技术;还有一类是通过调整网络连接权重来自适应更新的神经网络技术。
信息增补技术
这是目前为止使用最多的一类用户模型更新技术。它又包括了直接的信息增补以及涉及权重调整的信息增补两种类型。前者将获取的用户对推荐的反馈信息直接添加到用户模型中,典型系统如GroupLens、Ringo、Video Recommender、PC Findert、WEBSELL等。这种更新只是简单地添加了新信息,并没有删除或削减无效旧信息在用户模型中的作用,因此很可能导致推荐阶段假阳性错误的出现,即将用户不喜欢的项目推荐给了用户。
而且随时间的推移,模型规模不断扩大,这带来了存储空间占用和模型维护问题。相比之下,采用后者作为更新技术的系统,如LetiziatL、Personal Web Watcher、Webmate、Krakatoa Chronicle和WebCobral ,不仅将用户新的反馈信息(如新关键词)增加到用户模型中,而且还会调整用户模型中新、旧信息的权重,使反映用户最新偏好的新信息在推荐中起到更为重要的作用,同时无效的旧信息将随其权重的不断减小而最终从模型中被删除。因此,含权重调整的信息增补技术从一定程度上缓解了直接信息填补存在的问题,但这类技术的性能很容易受到新信息选择方法和被增加的新信息数量的影响。
遗传算法
遗传算法是一种基于自然选择和遗传机理的迭代搜索优化技术,由适应度函数、染色体种群以及选择、交叉和变异三个主要操作算子组成。每一代种群包含了若干个个体(被称为染色体)。依据每个个体的适应度函数值,种群经过选择,交叉和变异操作一代代向更优良、更适应环境的方向进化,从而逐渐逼近最优解。使用遗传算法作为模型更新技术的系统。
通常将用户模型编码成一个染色体并随机产生其他染色体作为初始种群。当初始种群进化迭代到满足终止条件时,解码适应度最高的染色体来取代系统目前的刚户模型即可实现更新。还有一部分系统也使用遗传算法作为模型的更新机制,但这部分系统通过对信息收集代理而不是用户模型本身的优胜劣汰来间接实现模型更新。当用户兴趣发生变化时,通过遗传进化,低性能的旧代理被消除,能直接满足用户新必趣或对用户及其他代理有用的代理得到繁衍。
基于遗传算法的更新技术从多个初始点(群体)而不是单点出发持续搜索可能的用户模型构成空间,因此是一种高效且能够最优化用户模型的更新算法。但是基于遗传算法的更新技术,其适应度函数和染色体编码方法要求针对每个问题专门设计。
神经网络技术
神经网络是一种自适应的更新技术。当用户偏好随时问发生变化时,神经网络将自适应地调整网络连接权重,更新网络输出的识别结果来跟踪这种变化。有的更新只在原有类别的基础上对新旧偏好信息进行分类调整,有的则建立新的识别类,并剪除代表过时知识的识别类来对应于用户新兴趣的兴起和旧兴趣的衰亡。在这种情况下,神经网络的网络结构发生了变化,网络可能需要被重新训练来识别和记忆变化后的用户偏好。由于神经网络的更新依赖于前期神经网络的学习,因此通常只有以神经网络作为学习技术的系统才会用其作为更新技术。
与模型学习技术相比,用户模型更新技术更关牲just-in-time型的学习而不是模型的建立和执行,因此算法需要具有更强的学习效率和对动态变化的适应能力。但是也有相应问题,目前的模型更新技术通常只按照固定频率对模型进行更新,这使得系统无法及时跟踪和捕捉用户兴趣的变化,从而造成了推荐结果和用户实际兴趣的差异。
6.3 小结总结
本节阐述评估体系的建立,列举相关维度和相关动作等,并且列举相关的修正手段和简单介绍,以供在长期不断修正模型和算法,达到更好的效果,更全面优质的服务用户。
7. 全文总结
整篇文章阐述了搭建推荐体系的全流程,从思路表述、标签体系、用户体系、项目体系、推荐环节和评估体系的建立和相关细节及当前的模式,技术手段等。尽量完整和周密的阐述了全部流程以供梳理和参考,在正文后还有附录部分,阐述详细的算法和摘录的相关方法以共参考。
凯文凯利在《失控》一书中提出“共同进化”的观点:
进化就是不断适应环境以满足自身的需求。共同进化是更全面的进化观点,就是不断适应环境以满足彼此的需求。媒介通过竞争不断进化适应环境,同时也提供了更好的服务更多的选择给用户,满足了用户日益增长的需求。
在当前,即使使用推荐系统,也并没有根本上解决人们如何有效获得信息的难题。所以仍可以尝试探索更加智能的信息获取模式,以及更加自然的人机交互接口。
犹如“大白”一样的贴心,处处想在用户前面,在合适的时候将想看的信息展示出来,随情绪而变,毕竟人类心理活动是十分微妙的,尽量通过规律摸清人类的喜好迁移,洞察微妙的行为变化,是未来努力的方向。
8. 参考资料
- 《zouxy09》——部分机器学习资料来源;
- 《LeftNotEasy – Wangda Tan》——同上;
- 《深入探讨 | 其实你并不懂产品标签机制》——标签部分部分思路来源;
- 《浅谈矩阵分解在推荐系统中的应用》——向量拆解部分知识来源;
- 《网易云音乐的歌单推荐算法是怎样的?》——当前主流推荐算法来源;
- 《百分点研发总监苏海波:大数据用户画像的方法及营销实践》——用户画像部分价值;
- 省略一百余篇推荐、算法、心理学、行为学专业论文,实在太多,不便复制上来,表示统一感谢。
附录5常见推荐算法
下篇,完,全文完,可以加我微信所要全文PDF,排版相对会更好,谢谢观看。
作者:MysTic(微信号mystic326531548),3年产品经理工作经验,需求、用研、数据有深入研究。寻坑,坐标北京。还在寻坑当中,都觉得我报价有点贵,可是我是真能干事儿啊,仁者见仁智者见智吧,坑找不到就继续写干货和搞研究就好了,也无妨,有老板看到,希望多多联系。
本文由 @MysTic 授权发布。版权归作者所有,转载此文请与作者联系。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。