深度丨从零搭建推荐体系

概述及标签体系搭建

1 概述

随着信息技术的迅速发展和信息内容的日益增长,“信息过载”问题愈来愈严重,愈发带来很大的信息负担。推荐系统可以有效缓解此难题,从而得到推崇并加以广泛应用。
简单来说:推荐系统是通过挖掘用户与项目之间的二元关系,帮助用户从大量数据中发现其可能感兴趣的项目如网页、服务、商品、人等,并生成个性化推荐以满足个性化需求。目前市场上对于电子商务的推荐系统有亚马逊、阿里巴巴、豆瓣网、当当网等,信息检索的有谷歌、雅虎、百度等,以及在其它周边领域广泛运用如移动应用、电子旅游、互联网广告等。本文只阐述网页内容,特制新闻方面的项目体系搭建。

研究者认为根据施拉姆信息选择公式,人们对媒体的注意或选择的可能性(然率)与它能够提供的报偿(价值)程度成正比,与人们获得它的代价(费力)程度成反比。也就是说:人们愿意用最小的代价获取价值最大的新闻信息。由此,媒体要从认知接收方面,减轻受众的“费力”程度,提升信息或传媒的价值,树立品牌意识,形成规模效应;拥有与众不同的品味和特色,将自己在受众眼中的“可读”形象转变成“必读”形象,从而使用户对媒介产品形成强烈的信赖感和依赖感,在受众心中形成稳定的独特风格。

下图是一般情况下的推荐系统基本框架(图片取自网络):


深度丨从零搭建推荐体系_第1张图片

从最初的数据收集,到最末端的展示阶段,中间还经过数据处理以及生成环节,处理大多数所指提取特征初处理,生成一般是指利用特征来选取相应算法进行匹配计算。数据的整个生命周期如下:


深度丨从零搭建推荐体系_第2张图片

也就是从数据获取,一直到最后的加工输出,经历的整个环节,最终给我们提供相应的有效信息,采取相应的有效手段,才是数据价值的最终体现。
在正式开始前,对于数据收集的要求也是很高,如果数据不准确或有偏差,很可能之后做的都是徒劳无功,下表为目前常见的数据收集时常见的问题:
深度丨从零搭建推荐体系_第3张图片

对于新闻内容的推荐系统,让人们最顺畅获取到人们想看到的内容,从而形成核心竞争力。推荐系统的常规推荐系统,一共分为两条线,第一条线是用户,第二条线是项目,计算两者间的相关近似值,从而完成推荐。计算近似值一定有所媒介,这个媒介就是标签(Tag)系统,所以在建设整个体系之前,最优先需要建设的就是标签系统,其次是用户体系,也就是用户模型,我们在感知用户唯一的途径就是通过用户操作,换言之既用户行为,所以相对用户行为微妙的变化,要求我们的用户体系是十分敏感的,而最后是项目体系,这里特指新闻内容。

下面将从产品层面尽量描述如何搭建推荐体系相关流程及细节,整体搭建思路流程如下:


深度丨从零搭建推荐体系_第4张图片

整体相对比较复杂,下面将逐一阐述其中细节。

2 标签体系

2.1 搭建流程

要做标签体系,我们要先确定的就是系统结构,常规来看一般都是讲标签随内容或用户建设(但是我觉得那样是不完整的,在之后获取不到更加有效有帮助的信息,这也就是为什么我认为一定要将标签体系一定要单独拎出来的原因)。
在确定系统结构之后,我们要进行相关的算法选择,并且大致选定学习的范围和地点,以供机器学习,至此整个标签体系的搭建流程就此完毕。随着不断的内容填充进来,要有相应的标签不断补充进来。这是一个长期的过程,并且也需要及时依据用户反馈修正算法,实时调整,并非一日之功。


2.2 二维化结构

常规网络的标签是随用户和内容添加的,但是会有局限性,也就是标签体系较难或无法透彻追查其它相关联内容。实际上标签体系的核心价值,体现在相应建立起信息和人、人与人之间的关联。所以我在思考:如何能够进行最深入的追查最深处的关联?有一个常规方案就是单独建立标签体系,将标签平铺于系统中,也就是二维化。通过机器学习,建立标签的基本联系网络,之后贴合于用户与内容中即可。无立体结构的上下层级展示,好处是可以避免了一维化的后果。换句话说如果有层级,那么不可避免的就会变成一级、二级。

简单来说:与某标签周遭相关联的一切标签均展示;那周遭的标签还会又有标签,再展示;也就变成无穷尽的立体结构化的标签网络,也就是价值基础。最终价值的输出还要结合其它的相关行为、操作、用户物理属性、内容载体以及效果评定等因素综合考量。

2.3 机器学习

常规机器训练流程是:先确定方法→训练集→特征选取→训练→分类器;分类:新样本→特征选取→分类→判决。

所以最开始我们就要确定机器学习的方法。方法有许多种,需要具体根据情况来具体确定。下面仅以产品角度罗列常见经典的机器学习方法、特点、利弊等。以供数据工程师进行选择、对比,辅助做出最优选择,以供参考。

方法当中,首先分为两个大类别:监督学习和非监督学习。监督学习又称为分类或者归纳学习。几乎适用于所有领域,包括内容处理。常见算法有决策树、贝叶斯模型、KNN、SVM等。

与这一方式相对的是非监督学习,在这种方式中,所有的类属性都是未知的,从零开始摸索,算法需要根据数据集的特征自动产生类属性。其中算法中用于进行学习的数据集叫做训练数据集:当使用学习算法用训练数据集学习得到一个模型以后,我们使用测试数据集来评测这个模型的精准度。常见的有聚类、特征矩阵。下表为常规推荐算法的分类,一共是三类:分类算法、关联规则和聚类,依据不同场景选择不同算法进行调整即可。表格后面列出最常用算法的利弊以及用人话描述的算法原理,以供产品同事参考。

深度丨从零搭建推荐体系_第5张图片

2.3.1 朴素贝叶斯

对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率;哪个最大,就认为此待分类项属于哪个类别。非常好理解,单纯的概率问题。

优点:算法十分稳定,并且对数据参数无要求;运用较为简单。

缺点:在属性个数比较多或者属性之间相关性较大时效率不理想,并且重前期数据格式,需要知道先验概率,存在一定错误率。但是结合聚类算法,可以一定程度解决属性个数问题。

使用场景:常见于垃圾邮件分类场景。

2.3.2 决策树

哈利波特中的分院帽应用的是个非常典型的决策树模型:帽子往学生头上一扣,读取学生的显著特征,然后分到某个类别里。所以你看,哈利波特一开始表现出来的特征都是格兰芬多的特征,分院帽读取数据时候发现这个人有两类显著特征,于是犹豫不决,最后还是波特自己提出了要求,这就证明应用模型时的人工干预必不可少。

优点:决策树较为通俗易懂,并且对数据格式不敏感,较为聪明;易于通过静态测试测量模型可信度,善于短时间处理大量数据源,对属性数量兼容性好,有很好的扩展性。

缺点:对样本数量不一致的数据,结果有偏向,处理缺失数据时候会有困难,并且有过度拟合现象,容易忽略数据集中属性之间的相关性。

使用场景:可结合随机森林算法,减少相应过度拟合现象。常见于用户行为分析场景。

2.3.3 KNN

说白了就是我们要寻找邻居,但是为什么要寻找邻居?如何选取邻居,选取多少邻居?怎么样去寻找我们想要的邻居,以及如何利用邻居来解决分类问题这是KNN算法需要解决的几大问题。

为什么我们要寻找邻居?古话说的好:人以类聚,物以群分。要想知道一个人怎么样,去看看他的朋友就知道了。我们如果要判断一个样本点的类别,去看看和它相似的样本点的类别就行了。

优点:该算法简单有效,重新训练代价较低,对于类域有较差或重叠较多的样本较为适合。同样适用于样本量较大的情况。

缺点:样本量较小时反而有误差。而且该算法是懒散学习方法,不主动,类别评分不规格且输出可解释性不高。当样本量不平衡时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数,并且计算量较大。可以采用权值的方法,和该样本距离小的邻居权值大,来改进问题,对于计算量较大,可以事先对已知样本点进行剪辑,去除对分类作用不大的样本来优化。

使用场景:常见于预测价格场景。

2.3.4 SVM

说到这个算法之前,先得配一张图:


深度丨从零搭建推荐体系_第6张图片

这图啥意思呢?不用管。但是这两种分法哪种更好呢?从直观上来说,显然右侧好。也就是分割的间隙越大越好,把两个类别的点分得越开越好。就像我们平时判断一个人是男还是女,就是很难出现分错的情况,这就是男、女两个类别之间的间隙非常的大导致的,让我们可以更准确的进行分类。从实践的角度来说,这样的效果非常好,错误率低。

优点:该算法适用于样本量较小的情况,可提高泛化性能,可解决高维度问题。并且对线性和非线性问题均可解决,可避免神经网络结构选择和局部极小点问题。

缺点:对缺失数据较敏感,对非线性问题没有通用解决方案,需要选择核函数来处理,算法使用并且极其复杂。

使用场景:常见于社交网站用户分类场景。

2.3.5 Ad boosting

这个算法说实话我也解释不清,没真正运用过,凭自己查资料的理解试着说一下。这个算法核心的思想是整合多个弱分类器,成为一个强大的分类器。这时候,集合分类器出现了。用人话说就是三个臭皮匠赛过诸葛亮,好理解了吧?识别一组条件特征概念判断的正确率比随机猜测略好,但是还不够,这就是弱分类器;多个弱分类器的效果叠加起来,就变成一个强分类器,识别率就会很高了。

优点:该算法精度较高,可用任意方法构建子分类器;使用简单分类器时结果容易理解,且弱分类器构造极其简单,而且不用做特征筛选,不用担心过度拟合情况。

缺点:对离群值比较敏感。

使用场景:常见于人脸检测、目标识别场景。

2.3.6 K-means

给你一万个人,分成四群,需要能够解释每一群人的突出特征,如果有两群人的特征很相似,那就要重新分群了;或者有一群人的特征不明显,那就要增加分群了。好处在于样本量大的时候,可以快速分群,但需要在分群后注意每个群体的可解释性。

优点:这个算法属于经典算法,简单快速,对处理大数据集可伸缩,高效。并且在簇密集度高、球状或团状时,且有明显于其他簇区别时,聚类效果好。

缺点:但是只有簇平均值被定义情况下才能使用,且对分类属性数据不适用,并且要求用户必须事先给出要生成的簇的数目。对初始值敏感,不适合发现非凸面形状的簇,或者大小差别很大的簇。对噪声和孤立数据敏感,少量该类数据能直接影响平均值。

使用场景:常见于CRM筛选目标客户场景。

2.3.7 神经网络

这个算法不想解释啥,就想放张图,觉得不放可惜了。


深度丨从零搭建推荐体系_第7张图片

以上摘要从产品角度来说只要大概心里有数即可,一般情况下从产品数据、应用场景等决定。

一般来看,冷启动期间应选择非监督学习,如聚类;等数据丰富之后,转换为监督学习,择优选择算法方可;但仍需具体问题具体分析。更多的还是配合技术、算法人员来选择和实现,详细算法和原理、公式等可以到后面附录1进行查看,给予参考。

2.4 学习地点

这里我建议从百科类产品进行机器学习,国内最大的百科就是百度百科了,在国际上自然还有维基百科。

查了一些相关方法,发现从百度百科利用机器学习标签,已经有相应的案例并且成本相对不是很大,具体的方法也放在后文中的附录2中。

文中探究的是微博标签相关的项目,与本文无关,但整体思路可借鉴。大致流程为先抓取页面下相关标签内容,要注意特殊情况,会有歧义页面;将标签抓取存储之后通过算法计算之间的关联性、权重分数,而后输出验证。整体的过程非常简单快捷,能在前期非常快速的补充相关数据,但是要注意数据量的问题,很可能导致无穷,所以收集哪些主要领域,收集多少,是需要我们最开始定义好的,及时踩刹车。

2.5 输出展示

这里的展示更多指的还是相应的后台页面,要满足几个条件:其中最基本的一定要满足可视化的要求,点击标签以后相应的关联标签可形成关联展示;可以选择展示两级或者三级,清晰直观的看到关联情况。更进一步的是点击后,每个标签里面的详细情况也会展示出来。比如说标签的历史类型情况、载体情况、分别的打开情况、受众用户群体,所以这也是需要依托于用户体系的相关标签结合之后的产出物。

结合基本数据维度比如昨日新增多少标签、文章类型走向是什么样的受众是什么样的走向,都是属于基础数据范畴,达到实时监控,定位报警的作用。

2.6 小结总结

本节总体来说阐述了搭建标签体系的整体流程和相关经典算法的展示与利弊分析,并且提供了标签学习机制的思路。下面,将进行用户模型的体系搭建,详见明日发布的中篇。

用户体系、项目体系和推荐体系

3 用户体系

3.1 搭建流程

首先应该先确定用户动机,因为从用户的根本动机,我们才好做相应的推荐处理。

那么我们应该如何获取用户动机?只有一种方法,就是通过用户行为。所以我们应该优先建立用户行为体系,依据用户行为,分析用户动机;不管是主动动机还是被动动机,之后提取这些动机特征,结合用户物理属性,再进行后处理。再有要将特征值加以过滤,分配权重,结合衰减因子进行最终输出。最终输出的结果应该分为基本属性、用户兴趣、用户关系及用户行为,结合所有综合分析用户动机,在适时的时候推荐合适的内容从而形成推荐最佳化的最终目的,让用户最小成本的获取信息。

所以在分析的时候,依据用户动机分析,推断我们应该注意的哪些环节点的哪些事情。

3.2 动机经典理论

在建立行为体系之前,一定要介绍动机和行为的关系。而又不得不介绍行为科学界一直以来的一个经典理论:“使用与满足”理论,该理论是1974年E·卡茨在其著作《个人对大众传播的使用》中被首先提出。

使用与满足理论是站在受众的立场上,通过分析受众对媒介的使用动机和获得需求满足来考察大众传播给人类带来的心理和行为上的效用。但同传统的讯息如何作用受众的思路不同:它强调受众的作用,突出受众的地位。该理论认为受众通过对媒介的积极使用,从而制约着媒介传播的过程,并指出使用媒介完全基于个人的需求和愿望。

E·卡茨将媒介接触行为概括为一个“社会因素+心理因素→媒介期待→媒介接触→需求满足”的因果连锁过程,提出了“使用与满足”过程的基本模式。经后人的补充和发展,综合提出“使用与满足”的过程:

人们接触使用传媒的目的都是为了满足自己的需要这种需求和社会因素、个人的心理因素有关。
人们接触和使用传媒的两个条件:接触媒介的可能性;媒介印象即受众对媒介满足需求的评价,这种媒介印象或成为评价是在过去媒介接触使用经验基础上形成的。
受众选择特定的媒介和内容并开始使用。
接触使用后的结果有两种:一种是满足需求,一种是未满足。
无论满足与否,都将影响到以后的媒介选择使用行为,人们根据满足结果来修正既有的媒介印象,不同程度上改变着对媒介的期待。
总结了使用与满足理论的要素,包括:

受众是主动的,对于大众媒介的使用是有目标的。
受众需要的满足和对媒介的选择间的联系中,受众拥有主动权。
媒介相互竞争以满足受众需要。
所以最终映射到网络,不难分析出用户使用网络一般是是为了:(1)人际交往;(2)打发时间;(3)搜寻信息;(4)方便快速;(5)信息分享;(6)自我表达;(7)娱乐放松。

社会心理学的理性行为理论和建立在该理论基础上的技术接受模型(Technology Acceptance Model,简称TAM)最早探究了哪些因素对人们有意识的行为产生影响。1989年,Davis在理性行为理论的基础上,针对技术接受和使用行为提出了技术接受模型:


深度丨从零搭建推荐体系_第8张图片

TAM认为系统使用行为是由行为意向决定的,而行为意向由想用的态度和感知的有用性共同决定,想用的态度由感知的有用性和感知易用性共同决定,感知的有用性是由感知的易用性和外部变量共同决定,感知的易用性由外部变量决定的。

外部变量包括系统设计特征、用户特征(包括感知形式和其他个性特征)等,为技术接受模型中存在的内部信念、态度、意向和不同的个人之间的差异、环境约束、可控制的干扰因素之间建立起一种联系。

3.3 今日头条动机分析

理论介绍完毕,也应该从理论切入分析当前最厉害的内容推荐平台,也就是不得不提的今日头条了。那么从有限的研究论述当中,可以从已经成功的产品中获取到用户使用头条产品的相关动机大致是什么,以指导我们日后的产品方向。

头条相关的研究论文里的方法,也注明与附录3中,以供查看,下面将直接节选结论部分,以供参考。

今日头条流行的主要原因是抓住了受众对个性化需求的心理。对用户需求的研究结果表明,“个性化推荐”(60.79%)、“更新速度快”(60%)、“推送内容多(45.26%)是用户最为强烈的三种动机。

个性化主要体现在三个方面:

  1. 频道定制:用户可以订阅自己感兴趣的频道(“今日头条”提供了社会、娱乐、政治、热点等48个频道),同时提供位置信息享受本地化新闻服务(还包含同城活动信息),而且“今日头条”也和微信一样开辟了自媒体平台,用户可关注自己感兴趣自媒体账号。
  2. 个性化推荐:“今日头条”若在新闻标题最左方标注一个蓝色的“荐”字,则表示为是根据用户兴趣专门推荐的内容。“今日头条”的信息分发完全基于智能推荐,用户浏览、收藏、转发、评论每一条新闻的行为都会被记录,用户的阅读习惯、阅读时间、阅读位置也会被分析,两者结合形成“用户模型”。通过绑定社交媒体账号和大数据挖掘,后续还会根据用户使用产品的信息反馈(用户在“今日头条”上的“顶”、“踩”、“转发”、“收藏”等行为),不断进行算法的演进,用户分析越精准,推荐内容越来越精确。
  3. 个性化体验:服务性功能如“离线阅读”“同步收藏”“我的话题”“摘要模式”“阅读模式”“字体设置”都可以根据自己需求定制,体现了良好的用户体验。
    更新方法主要分为以下三种:
  4. 自动更新:手动更新以及推送更新。自动更新一般几分钟到几十分钟不等;
  5. 手动更新的设置是为了满足用户实时对信息的需求,每一次刷新都会有8-12 条不等的信息;
  6. 推送更新是将信息发送到用户手机通知上,一天大约 6-10条不等,主要为社会要闻。
    并且头条为了满足碎片化阅读的需求,在新闻类型方面,新闻主要以消息和图片为主,鲜少特写、通讯和深度报道等传统意义上报纸的新闻体材,字数控制在1000字左右。

根据《今日头条年度数据报告》,衡量读者阅读习惯的有两个指标:第一个是平均停留时长,第二个是跳出率。1000字的文章跳出率是22.1%,平均停留时长是48.3秒。4000字的文章则刚好相反,跳出率高达65.8%,超过一半以上的人打开一篇文章发现太长后会选择跳出。可见1000字以内的文章的传播率会更高。

同时,头条还加入视频新闻;但并未像搜狐或是新浪客户端那样做成一个单独的功能,而是将其嵌入频道中。视频内容长度在1分钟以内,以减少流量的消耗,主要以轻松、搞笑的内容为主。

所以结合研究结论不难看出,头条用户的最大使用动机仍是精准的个性化推荐,也就是仍需要以精准的推荐为吸引用户打开的核心来源。

3.4 分析模型

深度丨从零搭建推荐体系_第9张图片

由上图可知,我们应该依据已经成熟的用户行为,推断用户的动机因子,再推断至心里因素。实际来说是用户其实已经是带动机才打开APP,先依据有限的数据进行分析推荐,等有相关的行为之后,反推回去用户的动机,根据用户动机调整推荐内容,达到核心目的。

这么做的好处是什么呢?头条类产品全都是依托于用户行为,进行调整,但是用户行为实际是不准确的。心情好与不好看的内容,操作的流程细节,很可能都不一样;如果一味的只记录行为,只会不准确偏离。所以当我们记录了用户在任何情况之下的行为之后,反推回用户动机,进一步推回用户心里因素,依据心里结合喜好和行为,完成完美推荐。

前文理论中同样表明,是社会因素与心里因素决定动机,所以当行为习惯模型建立,社会因素已经量化的时候,只有心理因素是变量,那么我们也能分析出不同的心理因素,依据不同心理因素改变本次的推荐内容,我想应该会大大提升转化率,并且可能是目前头条产品所不具备的一个点。

结合常规的用户画像的相关属性,我们可以看到如下图(增加了购买):


深度丨从零搭建推荐体系_第10张图片

所以两者,也就可以合并成为两条大的脉络,一条是实际,一条是内心,而我们是要依据实际行为猜测内心。两张图结合,将会无比清晰的阐述用户脉络和之间的关系:


深度丨从零搭建推荐体系_第11张图片

用户的浏览行为反映了用户的兴趣,两者之间的关系具有如下特点:
  1. 不同年龄、性别、职业的用户偏好反映在用户对商品的浏览行为上;
  2. 用户偏好具有动态转移性,将其反映在用户兴趣度上,即若用户偏好发生转移,则原来的兴趣度值减少;
  3. 用户对感兴趣的商品会高频度地点击和浏览,假设用户对某种/某类商品的浏览时间越长、频率越高,顾客对该种/类商品越感兴趣,反映用户偏好的兴趣度值也会随之增加。
    所以最终,我们会确定需要收集的量化数字,以代表行为的部分,反推分析,达到最终目标。

3.5 行为收集

一般情况下,动机拆分为媒介、社交和体验需求,分别代表的可能原因有:

  1. 媒介需求一般有:更新速度快、推送内容多;

  2. 社交需求一般有:社交性强、互动性强;

  3. 体验需求一般有:个性化推荐精准、智能搜索快速全面、操作方便、离线下载。
    依据两种形式,主动行为和被动行为进行分类,主动行为就是用户主动自然操作,被动行为也就是APP人为增加拦截、问题、问卷等收集,所以整理一下我们通过不同动作需要收集的相关动作应该是,主动行为:

  4. 媒介:PUSH消息、打开时间;

  5. 社交:PUSH通知、分享、攒、回复、收藏、举报、等级;

  6. 体验:打开内容类型、内容载体、内容长度、历史搜索行为、历史打开偏好、间隔点击时间、滑动内容位置、阅读设置、下载缓存;

  7. 人口属性:年龄、性别、地区、收入、签名等;

  8. 周边场景:地理位置、网络环境、端、信号强度、耳机扬声器、高度等;

  9. 被动行为:增加拦截、询问兴趣区域、反馈、小问题、问卷、×、卸载等。
    通过已经非常成熟的广告领域,可以参考到某些重要的信息,仍是我们的获取重要参考。例如用户来源追踪,以及跨域追踪,所谓跨域追踪是利用指的是比如你在百度上跳转到新浪,同样可以追踪到。利用的手段一般是cookie和缓存,前者一般是自带key,与用户关系不大。

3.6 后处理

后处理一般有三个环节,过滤、权重、衰减因素。过滤一般指过滤提取的无效特征或干扰数据,权重一般根据不同的行为偏好等因素综合考量后进行调整,衰减一般要考虑到用户某个兴趣会随时间延长而降低,相关变量是用户点击频率和浏览时长,依据相关变量进行调整遗忘因子系数。还有一点是利用自然范数梯度下降算法,来进行准确度的修正。从技术方面来说都已经相对成熟,也有成熟算法,不多做阐述。

3.7 模型输出

所谓输出,实际是可依据上方分析后建模完成的相关体现。其作用是辅助我们发现问题,定位并解决。我们要考虑到时效性、便捷性、准确性等问题。

从效果来看是数据,从特征来看是标签。所以数据的展现要求的是可视化,以及灵活性,并且要准确,最小时间间隔维度不能过大。所以选定如:折线图、漏斗图、饼图、柱形图等常见格式,结合不同的区域位置和目的,实现最优展示方式选择。最小时间间隔可以有实时报表或半点报表,每日会汇总报表进行输出,设置相应阀值,波动过阀值后进行相应报警等机制处理。

那么用户标签,其实就是行为标签,依据行为进行计算贴合。是根据标签体系中的标签建设,在标签体系中所有标签二维化平铺,但是在用户体系中贴合的具体标签将有层级划分。其实两者不难发现是包含与被包含的关系,既整个标签体系给用户标签体系提供“素材”,而用户体系是直接拿来用,所以既然是使用者,就要有详细的层级以及权重计算,这个是非常重要,这与我们的终极目标有关。

我们希望知道用户被打上这个标签的背后动机是什么,不同内容之间一定存在某种弱关联,弱关联的发现是通过内容标签背后的二维化体系支撑;但是关联侧重和确定选择,是通过用户层级标签来做到的,最终借此我们就可以相应的给一部分猜测,并给予惊喜推荐,完成超越用户所想的目的。通过弱关联,我们还可以完成用户之间的相互推荐,或者用户聚类等工作,建立用户之间的关系网络,为搭建社交氛围做好铺垫。

上面是通过用户行为获取的标签,还有一部分是用户物理属性,也就是如性别、地区、客户端、网络环境等属性,尽量收集全,并且每日收集,记录维度以登陆时间为维度。最终行为标签与物理标签相结合,综合展示于内容标签及用户标签系统中。之后,需要根据用户的标签体系,通过算法分析用户性格,性格会帮我们在之后的个性化产品中不去招惹用户,让每个用户获有满足感。

至此,应输出的用户标签实际为四类,属性、兴趣、关系、行为,属性包含物理属性和性格属性,以上四个维度,有助于我们全方位分析用户,最终输出的应是用户动机的最大可能性猜测,猜测用户这次想看什么类型的内容,结合内容体系,进行推荐。

3.8 小结总结

本节阐述的是整个用户体系的搭建思路,包括之前的经典理论引用和搭建分析模型,最终到用户分析和输出展示形式,下面将阐述项目体系的搭建思路。

4 项目体系

项目体系分为许多种,有商品、用户、内容、广告等,本文仅以内容作为搭建思路叙述。

4.1 内容特征

内容向量通常存在维数大的问题,即使去掉低频词和高报词等停用词后,仍然会有数万维的特征留下。为了提高机器学习的效率和精度,有必要降低文本向量的维数。特征选择是内容降维的有效方法。

具体做法是构造一个评估函数对特征向量中的所有特征逐一评分,选取分值高于设定阑值的特征。常用的评估函数有:文档频数、词频函数、TIFDF、期望交叉摘、CHI、信息增益、互信息等。虽然实验表明IG和CHI等基于信息熵的方法的可以取得较好的特征选择效果,但是计算费用高,系统开销大,使用起来浪费时间和资源。因此实际应用中,计算量较小、评估效果较好的TIFDF方法是非常可取的。

并且内容不仅是文字,仍会有图片、视频、语音等,对于这三者,因为维度完全不同,所以使用手段与方法也完全不同。

4.2 图片特征

将二维平面降维手段仍是标签,一般称为图片标注;标注方法可以简单分为基于模型学习的方法和基于实例检索的方法。

基于模型学习的方法具有较高的标注性能,但是模型训练的计算复杂性较高,不具备实战意义。基于实例检索的方法将图像标注问题看作图像检索问题,是基于数据驱动的模型方法。所以一般选择后者,其中算法也是层出不穷;提升准确性和过滤垃圾标签是共同目标,需要择优选择,方法和技术已经同样有许多种,不多做赘述。

4.3 视频特征

视频为三维载体,又增加了时间性质;常规手段有:将视频逐一降维成二维平面,也就是等分切割,转化为图片标注,即可。但是该方法成本巨大,在大量数据当中应用不现实。更加较为新兴手段有视频弹幕,弹幕是直接在视频上用户编辑的文字内容,类似字幕,将每时刻弹幕内容提取,直接把视频变为标签,按权重划分删除垃圾标签即可,较为简单高效。

4.4 音频特征

常见音频一般以脱口秀、音乐为主,其中标题提供的信息标签权重会非常大,但仍是有限的。所以对于脱口秀,衍生出了语音识别技术:将语音转化为文字信息进行标记。对于音乐,我们只能从其它手段进行补充。比如波形识别,一般音乐含有曲风、风格等属性,利用音频的波形识别技术可顺利获取相关标签。

4.5 评论特征

评论虽然是文字类型,但是由于评论都不可能过长,所以问题就会出现语义不完全,严重的数据稀疏问题。这里非常像微博,微博只有140个字,相对较少。所以针对微博的这种情况,也有许多新技术来进行改进。例如:通过拓展微博文本的特征,通过分析微博数据中的某些现象或特性等手段来改善数据稀疏问题;所以充分借鉴在微博领域中的研究成果利用,结合实际使用。

4.6 垃圾标签抵御

对于以上载体,不可避免的都会有垃圾标签的出现,不管是主动还是被动,所谓主动是由于识别率或技术局限性等问题,导致的垃圾标签的产生,对于被动更多的场景比如说是图片的水印,视频的广告或是由于恶意攻击、恶意添加等行为的产生,那么对于垃圾标签同样有许多手段进行相关抵御:

  1. 基于检测的垃圾标签抵御,通常分为两个阶段:首先,系统管理员可以手动标注垃圾标签或其对应的恶意用户,也可以由系统根据统计分析和机器学习的相关理论来自动识别出垃圾标签或其对应的恶意用户;然后,由系统做出响应,这种响应可以是在垃圾标签上做出标识,也可以是直接删除垃圾标签并调整搜索结果或者限制恶意用户的权限。
  2. 基于降级的抵御,是通过降低受垃圾标签污染的资源在用户搜索结果列表中排列的位置来实现对垃圾标签的抵御.利用特定的算法将那些受垃圾标签污染的资源排在结果列表中尽可能靠后的位置,这样用户就不会看到这些受污染资源。相关会有Coincidence—based模型、SpamClean模型、DSpam模型等对这种形式进行处理。
  3. 基于预防的垃圾标签抵御,统计表明,很大一部分的垃圾标签来自于僵尸网络中被控制的主机或者可以标注标签的自动化程序,这些主机或者程序可以根据攻击者的需要来产生大量垃圾标签,从而对社交网站中正常用户的标签服务构成威胁。所以该手段主要是通过对产生标签的用户的权限进行隐藏或者限制从而抑制垃圾标签的出现,即确保每个标签的产生都来自于自然人而不是僵尸网络等.需要指出,目前基于预防的垃圾标签抵御方法的效果尚无法通过量化指标来衡量,这主要是因为无法统计因采用了此类方法而预防成功的垃圾标签的数量。
    最终,标签的抵御效果可以由如下两个属性进行评价:服务执行效率与服务可用性。

4.7 模型输出

对于内容标签,综上有许多种方法,但是还有一条标签线是载体标签。所谓载体,纯文字、纯视频、纯图片相册、图文、视频文字、视频图片文字,主流常见的只有这三种。需要详细的进行展示,例如文字以千字为一档进行划分,比如1000字以下、1001-2000字等,图片以十张图为一档,视频以一分钟为一档,可以辅助我们进行内容效果评估。并且进一步结合用户实际场景,实际情况来进行推荐提供了又一维度。

所以最终输出应为内容类型、内容载体、内容分类以及内容适配场景,最终计算内容的核心亮点,以供于贴合用户群,结合用户动机,实现用户这次想看什么内容的需求供给,达到转化率最大化的目的。

4.8 小结总结

本节阐述了对于内容标签的搭建体系,针对不同的元素有不同的获取方式,其中对于垃圾标签的抵御也阐述相关手段和方法,最终的展现上仍要求可视化,对于了解某种内容的详细受众用户群,是有极大好处的,下一节将会阐述推荐流程中的核心流程,推荐环节。

[推荐体系和评估体系]

推荐体系

5.1 推荐方法

很明显,推荐方法和推荐算法是整个推荐系统中最核心、最关键的部分,很大程度上决定了推荐系统性能的优劣。目前,主要的推荐方法包括:基于内容推荐、协同过滤推荐、基于关联规则推荐、基于效用推荐、基于知识推荐和组合推荐。详细的方法介绍也放置在附录4当中以供参考,下面梳理出各方法的优劣:


深度丨从零搭建推荐体系_第12张图片

在除去场景外,也要结合性能因素来进行考量,不同数据量级的情况下不同方法配合不同算法产生的性能压力也是不同的,需要结合公司自身承受情况进行选择。可以看出,以上方法均有不同程度的优势和劣势,所以目前主流推荐方法也几乎均采用混合推荐的方法,利用两种或多种方法之间的优势,规避劣势从而达成尽量完美的方法,这其中也一定是基于不同的使用场景和产品具体情况具体分析了。

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)越多时,计算越准确,直接的结果那就是由于数据量的不断增大以及用户量级的不断增大,每一次计算也是不现实的,用户也多,次数就多,内容也多,点就多,所以考虑到这些,我们在第四步达成最终的目的。

千人千面

我们通过之前的数据积累,大量收集用户之前的相关行为,在这里要通过协同过滤矩阵及拆解来解决问题,矩阵拆解的核心其实是为了得到潜在因子,所以我们需要怎么做。

将内容与用户的行为结合,变为这一张表格,能相应减少许多计算量同时达到不错的效果,如下表:


深度丨从零搭建推荐体系_第13张图片

设定有效打开=5, 分享=4, 收藏=3, 互动=2 , 其它跳转=1, 无效打开=-2 , 点×=-5。

将表格利用协同过滤中的矩阵拆解进行计算,我们就可以得到如下两张表:


深度丨从零搭建推荐体系_第14张图片

这两个矩阵相乘就可以得到估计的得分矩阵:


深度丨从零搭建推荐体系_第15张图片

将用户已经看过的内容剔除后,选择分数最高内容的推荐给用户即可(红体字)。所以在这里,我们其实已经就完全可以精准化的推荐了,结果与计算量达到了相应的平衡。

已经到这一步了,这时候每个人的展示信息已然不尽相同,所以要结合人的之前打开行为,一定要结合时间、场景、内容载体考虑之后的推荐,并且适当加入长尾内容,用户感兴趣的大方向,但是细化方向没有临幸过的。

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》——同上;
《深入探讨 | 其实你并不懂产品标签机制》——标签部分部分思路来源;
《浅谈矩阵分解在推荐系统中的应用》——向量拆解部分知识来源;
《网易云音乐的歌单推荐算法是怎样的?》——当前主流推荐算法来源;
《百分点研发总监苏海波:大数据用户画像的方法及营销实践》——用户画像部分价值;
省略一百余篇推荐、算法、心理学、行为学专业论文,实在太多,不便复制上来,表示统一感谢。

附录1 常见机器学习方法算法

深度丨从零搭建推荐体系_第16张图片

深度丨从零搭建推荐体系_第17张图片

深度丨从零搭建推荐体系_第18张图片

深度丨从零搭建推荐体系_第19张图片

深度丨从零搭建推荐体系_第20张图片

深度丨从零搭建推荐体系_第21张图片

深度丨从零搭建推荐体系_第22张图片

深度丨从零搭建推荐体系_第23张图片

深度丨从零搭建推荐体系_第24张图片

深度丨从零搭建推荐体系_第25张图片

深度丨从零搭建推荐体系_第26张图片

深度丨从零搭建推荐体系_第27张图片

附录2 提取百度百科标签建立关联性思路

百度百科介绍

构成百度百科的基础内容是词条。一个词条页面大致可以分为百科名片、词条正文、开放分类、相关词条、参考资料和扩展阅读这个几个部分,根据每个词条的具体情况,某些部分可以没有。

其中,百科名片是词条的概括性描述;词条正文是可以由多个段落组成的对词条的详细描述;开放分类提供词条的属性标签,最多有5个,通常这种标签具有一定的类别信息;相关词条是与当前词条联系比较紧密的相关条目,而一般这种联系必须是横向的,例如“乔峰”的相关词条可以是“段誉”、“阿朱”、“虚竹”等,但不可以是“天龙八部”。


深度丨从零搭建推荐体系_第28张图片

尽管在百科的词条页面上,我们只能看到该词条的开放分类标签;但实际上在百科内部,有一个具有层次的三层分类体系。第一层具有十二个大类;每个大类下面又包含若干个中类,这就是第二层分类;每个中类下面又可细分为若干个小类。


深度丨从零搭建推荐体系_第29张图片

生成方法

我们将百度百科三层分类体系第三层的小类别作为查询,在百度百科中将搜索得到该类别下的词条页面。但是通过这种方式,对于每一个小类别,我们最多只能获取760个相关的词条页面,而更多的实际上可以被划分为该类别的词条页面,我们获取不到。

深度丨从零搭建推荐体系_第30张图片

我们搜索“技术 互联网电子商务”类别下的页面,结果显示共有词条3469个,但是,我们遍历搜索结果页面,最多只能查看到760个词条页面。在该方法中,我们需要使用百度百科的三层分类体系例如“技术 互联网编程”、“生活 娱乐影视”作为用户的标签候选集合。因此,我们可利用的资源便是能够获取到的每个小类别下的最多760个词条页面。

我们通过分析用户发布的微博,将其最感兴趣的百科三层类别作为他的标签。方法的主要思想是:将用户发布的每一条微博映射到最相关的百科词条页面,获取其类别,通过一定的投票策略决策出用户的标签。

下面,具体介绍一下方法中涉及的关键步骤。

百科页面获取与处理

我们按照百度百科提供的开放分类浏览页面,爬取到所有第三层小类别的查询URL,形如http://baike.baidu.com/taglist?tag=****,该URL指向的就是该类别标签的搜索页面。我们通过解析该搜索页面,下载得到百科开放的760 个相关的词条页面。获取页面后,并且按照第三层小类别分类存储后,我们进行正文的提取。词条页面一共有两种,一种是歧义页面,即一个词条包含多种义项,下图所示:

深度丨从零搭建推荐体系_第31张图片

一种是非歧义页面。我们需要分别对其做处理:对于歧义页面,将每一个义项单独作为一个页面提取出来。我们提取百科页面的标题、百科名片、正文、类别,进行分词等处理后,建立索引,待后续使用。

搜索与微博相关的词条页面

给定一条微博,我们需要找到与其相似或者说相关的百科页面,以获取其类别。我们将这个问题转换成为搜索问题。从微博中提炼出查询,从索引过的百科页面中搜索出最相关的。我们使用Indri 对词条页面建立索引。Indri 源自Lemur系统,是CMU和UMass 联合推出的一个用于语言模型和信息检索研究的系统。在这之上可以实现基于语言模型和传统的向量空间模型等的检索。Indri早已经受到了学术界的广泛欢迎。

我们将分别抽取微博中的名词、名词及形容词的组合构成带有权重的查询,其权重采用TFIDF 计算得到,构造的查询形如“#weight(0.45巨蟹座0.35性格0.20特点)”。用构建的查询,我们搜寻到与该查询最相关的词条页面,并获取其对应的类别。

用户标签生成

假定有m种具有三层分类的类别标签,我们将其作为用户的候选标签集合,表示为C={}。

给定某个用户u,抽取其发布的微博文本集合W={},文本数目为n。我们分别对其构造查询,得到查询集合Q={}。对每一个查询q,我们获取Top N个结果,作为该查询相关的词条页面。因为每个词条可能属于若干个类别,因此我们得到的与该查询(或者说其对应的微博)关联的类别可能不止N个。对关联的类别中的每一个类别c,我们计算其分数,如公式。其中, freq(c)指c在该次查询中出现的频数,而d是我们设置的一个常数,例如,我们将其设置为1,则c的分数就是在该次查询中出现的次数;若将d设置为该类别关联的词条页面出现在Top N结果中的具体位置,则说明c的分数受到搜索结果排序的影响,排序越靠前的,对分数的贡献越大。

整个查询过程停止后,我们将对候选标签集合中的每一个标签c计算一个排序分数,可以利用这个算法,其中n 就是指查询的次数。我们取排序前10 的作为为用户自动生成的标签。

附录3 今日头条心理动机研究

研究模型

“今日头条”用户的年龄,性别等人口统计特征和用户媒介偏好,自变量为“今日头条”用户的使用动机,中介变量为“今日头条”用户的使用态度,因变量为“今日头条”用户的使用行为。本研究的主要研究方向是利用使用态度这个中介变量研究使用动机(需求)对使用行为的影响。

控制变量

控制变量主要包括性别、年龄、教育程度、职业等人口统计学特征。

自变量——动机(需求)

根据“使用与满足”理论,用户是被看作有特定“需求”的个人,而他们接触媒介的活动被看作是基于某种特定的需求动机来“使用媒介”,最终使这些需求得到满足的过程。而这种特定的需求的产生,主要有两个方面:一个是社会因素,另一个是个人心理因素。本研究从个人因素和社会因素出发,兼顾“今日头条”的用户体验(易用性、有用性)等方面,总结了用户使用“今日头条”的若干动机。本调查将用户使用今日头条的需求分为三个维度:媒介需求,社交需求,体验需求。


深度丨从零搭建推荐体系_第32张图片

中介变量

本研究以用户对“今日头条”的使用态度(满意度)为中介变量。在理性行为理论和技术接受模型(TAM)中,中介变量包括两个方面:使用态度和行为意向。使用态度包含个人对某种使用行为所持的正面或负面的看法;行为意向反映个人从事某项行为的意愿。但在社会心理学中,“态度”界定为个体对事物的反应方式,已经涵盖了行为意向的层面,通常体现在个体的信念,感觉或者行为倾向中。可见,“态度”已经涵盖了行为意向层面。所以本研究只以使用态度为中介变量,这里的“使用态度”是用户根据对“今日头条”的认知和使用经历对“今日头条”持有的正面或负面的看法。


深度丨从零搭建推荐体系_第33张图片

因变量

因变量是“今日头条”用户的“使用行为”。这里的行为包括使用时长、使用频率、使用时间等问题。

统计分析

通过以下统计方法进行描述和分析:

  1. 统计描述分析(Descriptive Statistics):统计各变量的频数、比例、标准差和频率,来描述被测用户对“今日头条”的使用情况、使用动机、态度和行为等。
  2. 信度分析(Reliability Analysis):验证研究模型中的变量的信度分析,以衡量问卷的可靠性、一致性和稳定性。
  3. 相关分析(Correlation Analysis):用于分析两个或两组随机变量的关系,可以检测变量之间密切程度的一种统计方法。
  4. 交叉列表分析(Crosstabs):将两个或两个以上有一定联系的变量及其变量值按照一定的顺序交叉排列在一张统计表内,使各变量值成为不同变量的结点,从中分析变量之间的相关关系。
  5. 结论

整体来说用户使用今日头条动机为新闻推送的实时性,时效性,把握了当下的“短平快”的碎片化阅读趋势,信息类型以短消息、图片、视频为主。

从个人心理因素的角度来看,今日头条流行的主要原因是抓住了受众对个性化需求的心理。对用户需求的研究结果表明,“个性化推荐”(60.79%)、“更新速度快”(60%)、“推送内容多(45.26%)是用户最为强烈的三种动机。而“互动性强,评论转发收藏活跃”“操作方便阅读舒适”“离线下载,节省流量”占比较少,说明大部分用户不倾向于同意这是他们使用“今日头条”的动机。

这个结论也与“今日头条”的“个性化新闻推荐”的宣传理念和定位相符合。“今日头条”与其他新闻客户端相比,最大的优势就是它能够精确分析用户的阅读兴趣,并针对用户兴趣和需求对内容做更精细的传播,进行个性化推荐新闻。本研究结果也正说明,用户是基于个性化、实时性等方面的需求而选择“今日头条”。

本研究对“今日头条”用户的使用态度进行了均值比较。用户对“今日头条”积极态度的认同度均值为 3.77。从数据中看,“今日头条”的“更新速度快”“推送内容丰富”和“操作方便,阅读舒适”三项特性是最被用户所认可的。其中,“更新速度快”为全表最高均值项3.87 分,证明“今日头条”注重新闻时效性,满足了用户第一时间看到新闻事件的需求。作为用户使用动机最强烈“个性化推荐精准”的均值仅为 3.69,低于3.77 的水平分,可见用户对“个性化推荐精准”的认同度不高。而此项也与动机的考察结果并不一致。

因为个性化推荐存在冷启动的弊端,即新用户刚开始没有可以利用的行为信息,无法了解用户的特点和需求,很难给出精确的推荐。所以不排除是用户在使用初期个性化推荐并不精准,但随着使用时间增加,系统有了用户的行为数据,个性化推荐会越来越精准的假设。

为了验证这个假设,本研究设计了使用态度与使用时间的交叉分析,探究是否随着使用时间的增加,对个性化推荐的满意度会有所提高。根据实验数据,使用今日头条一周以内的用户,对“个性化推荐精确”的满意度均值为3.64,使用三到六个月的用户满意度均值为3.73,而使用一年以上的用户满意度均值为 3.87,满意度均值随着使用时间的增长而整体呈上升趋势。可见,使用时间越长,用户对“个性化推荐精准”的满意度越高。而且不只是“个性化推荐精准”这一项,“智能搜索快速全面”“操作方便,阅读舒适”两项都存在随着使用时间的增长,用户满意度增长的现象, 用户对“今日头条”消极态度的认同度为3.21。其中,“推广、广告太多”“标题党现象严重”“推送内容同质化严重,信息渠道变窄”三项是最被用户所认同的。用户最不认同的三项分别是“图片过于血腥”“吐槽言辞过于激烈”“栏目划分缺乏个性”都低于 3.21的平均水平。可见,“今日头条”在监管黄色、暴力、血腥新闻方面卓有成效。

其中“推广、广告太多”为全表最高均值3.47,可见用户对“今日头条”的“推广、广告太多”感受颇为明显。根据笔者亲身试验,在“今日头条”的信息流中每六七条新闻中会参杂一条广告,感受还是比较强烈的。

同样,本研究也将消极态度与使用时间做了交叉分析。分析得出对“推广、广告太多”的认同度均值均随着使用时间的增长而整体呈下降趋势。可见,使用时间越长,越不觉得推广、广告太多。不排除是个性化推荐了解用户所需,调整了广告数量。不只是“推广、广告太多”这一项,其余“标题党现象严重”

“推送内容同质化严重,信息渠道变窄”“栏目划分缺乏个性”“吐槽言辞过于激烈”“订阅内容更新不及时”“图片过于血腥”都存在随着使用时间的增长,用户的认同度整体下降的趋势。

附录4 推荐系统中的常用方法

基于内容推荐

基于内容的推荐是信息过滤技术的延续与发展,它是建立在项目的内容信息上作出推荐的,而不需要依据用户对项目的评价意见,更多地需要用机 器学习的方法从关于内容的特征描述的事例中得到用户的兴趣资料。在基于内容的推荐系统中,项目或对象是通过相关的特征的属性来定义,系统基于用户评价对象 的特征,学习用户的兴趣,考察用户资料与待预测项目的相匹配程度。用户的资料模型取决于所用学习方法,常用的有决策树、神经网络和基于向量的表示方法等。 基于内容的用户资料是需要有用户的历史数据,用户资料模型可能随着用户的偏好改变而发生变化。

基于内容推荐方法的优点是:

  • 不需要其它用户的数据,没有冷开始问题和稀疏问题。
  • 能为具有特殊兴趣爱好的用户进行推荐。
  • 能推荐新的或不是很流行的项目,没有新项目问题。
  • 通过列出推荐项目的内容特征,可以解释为什么推荐那些项目。
  • 已有比较好的技术,如关于分类学习方面的技术已相当成熟。
    缺点是要求内容能容易抽取成有意义的特征,要求特征内容有良好的结构性,并且用户的口味必须能够用内容特征形式来表达,不能显式地得到其它用户的判断情况。

协同过滤推荐

协同过滤推荐技术是推荐系统中应用最早和最为成功的技术之一。它一般采用最近邻技术,利用用户的历史喜好信息计算用户之间的距离,然后 利用目标用户的最近邻居用户对商品评价的加权评价值来预测目标用户对特定商品的喜好程度,系统从而根据这一喜好程度来对目标用户进行推荐。协同过滤最大优 点是对推荐对象没有特殊的要求,能处理非结构化的复杂对象,如音乐、电影。

协同过滤是基于这样的假设:为一用户找到他真正感兴趣的内容的好方法是首先找到与此用户有相似兴趣的其他用户,然后将他们感兴趣的内容推荐给此用户。其基本 思想非常易于理解,在日常生活中,我们往往会利用好朋友的推荐来进行一些选择。协同过滤正是把这一思想运用到电子商务推荐系统中来,基于其他用户对某一内 容的评价来向目标用户进行推荐。

基于协同过滤的推荐系统可以说是从用户的角度来进行相应推荐的,而且是自动的,即用户获得的推荐是系统从购买模式或浏览行为等隐式获得的,不需要用户努力地找到适合自己兴趣的推荐信息,如填写一些调查表格等。

和基于内容的过滤方法相比,协同过滤具有如下的优点:

  • 能够过滤难以进行机器自动内容分析的信息,如艺术品,音乐等。
  • 共享其他人的经验,避免了内容分析的不完全和不精确,并且能够基于一些复杂的,难以表述的概念(如信息质量、个人品味)进行过滤。
  • 有推荐新信息的能力。可以发现内容上完全不相似的信息,用户对推荐信息的内容事先是预料不到的。这也是协同过滤和基于内容的过滤一个较大的差别,基于内容的过滤推荐很多都是用户本来就熟悉的内容,而协同过滤可以发现用户潜在的但自己尚未发现的兴趣偏好。
  • 能够有效的使用其他相似用户的反馈信息,较少用户的反馈量,加快个性化学习的速度。
    虽然协同过滤作为一种典型的推荐技术有其相当的应用,但协同过滤仍有许多的问题需要解决。最典型的问题有稀疏问题和可扩展问题。

基于关联规则推荐

基于关联规则的推荐是以关联规则为基础,把已购商品作为规则头,规则体为推荐对象。关联规则挖掘可以发现不同商品在销售过程中的相关性,在零 售业中已经得到了成功的应用。管理规则就是在一个交易数据库中统计购买了商品集X的交易中有多大比例的交易同时购买了商品集Y,其直观的意义就是用户在购 买某些商品的时候有多大倾向去购买另外一些商品。比如购买牛奶的同时很多人会同时购买面包。

算法的第一步关联规则的发现最为关键且最耗时,是算法的瓶颈,但可以离线进行。其次,商品名称的同义性问题也是关联规则的一个难点。

基于效用推荐

基于效用的推荐是建立在对用户使用项目的效用情况上计算的,其核心问题是怎么样为每一个用户去创建一个效用函数,因此,用户资料模型很大 程度上是由系统所采用的效用函数决定的。基于效用推荐的好处是它能把非产品的属性,如提供商的可靠性和产品的可得性等考虑到效用计算中。

基于知识推荐

基于知识的推荐在某种程度是可以看成是一种推理技术,它不是建立在用户需要和偏好基础上推荐的。基于知识的方法因 它们所用的功能知识不同而有明显区别。效用知识是一种关于一个项目如何满足某一特定用户的知识,因此能解释需要和推荐的关系,所以用户资料可以是任何能支持推理的知识结构,它可以 是用户已经规范化的查询,也可以是一个更详细的用户需要的表示。

组合推荐

由于各种推荐方法都有优缺点,所以在实际中,组合推荐经常被采用。研究和应用最多的是内容推荐和协同过滤推荐的组合。最简单的做法就是分别用基于内容的方法和协同过滤推荐方法 去产生一个推荐预测结果,然后用某方法组合其结果。尽管从理论上有很多种推荐组合方法,但在某一具体问题中并不见得都有效,组合推荐一个最重要原则就是通 过组合后要能避免或弥补各自推荐技术的弱点。

在组合方式上,有研究人员提出了七种组合思路:

  • 加权:加权多种推荐技术结果。
  • 变换:根据问题背景和实际情况或要求决定变换采用不同的推荐技术。
  • 混合:同时采用多种推荐技术给出多种推荐结果为用户提供参考。
  • 特征组合:组合来自不同推荐数据源的特征被另一种推荐算法所采用。
  • 层叠:先用一种推荐技术产生一种粗糙的推荐结果,第二种推荐技术在此推荐结果的基础上进一步作出更精确的推荐。
  • 特征扩充:一种技术产生附加的特征信息嵌入到另一种推荐技术的特征输入中。
  • 元级别:用一种推荐方法产生的模型作为另一种推荐方法的输入。

附录5 常见推荐算法

深度丨从零搭建推荐体系_第34张图片

深度丨从零搭建推荐体系_第35张图片

作者:MysTic(微信号mystic326531548),3年产品经理工作经验,需求、用研、数据有深入研究。寻坑,坐标北京。还在寻坑当中,都觉得我报价有点贵,可是我是真能干事儿啊,仁者见仁智者见智吧,坑找不到就继续写干货和搞研究就好了,也无妨,有老板看到,希望多多联系。

你可能感兴趣的:(深度丨从零搭建推荐体系)