今日头条推荐系统浅谈
大家有没有发现,我们所使用的软件产品中,有很多都比我们更懂我们自己。我们打开一个新闻APP,他们会自动的展现我们喜欢看的内容,打开音乐软件推荐的都是我们想听的歌曲,我们打开淘宝,显示的都是我们想买的东西,难道他们是我们肚子的蛔虫,能知道我们想什么吗?其实,很多朋友都已经知道我说的是什么东西,随着科技的进步,计算能力的突破,大数据的普及,我们现在很多软件都能做到千人千面,我们今天就来说说能读懂我们的技术应用:推荐策略;
我们后面的文章没有特别说明,都是以我们以推介算法出名的今日头条产品进行讲解,下面我们进入正题,这篇文章主要讲述推介策略的整体概念,让大家对这个神秘的推荐策略有一个全面的认识,后面的一系列文章会对推荐策略中的重点技术说明;
推荐策略简单点来说,就是先识别出你想要什么内容,然后我在我的内容池里面匹配出你喜欢的内容然后展示给你看,就是如此的简单,那么很多同学就会说,就这样?可以下课了吗?慢着,道理虽然是这样,但是里面学问很大的,比如说推荐系统如何识别出你喜欢什么的内容?就算知道你现在喜欢什么,以后还会喜欢吗?喜欢女孩子都会变心,更何况喜欢的内容。还有就算知道你一个人喜欢什么,那么剩下的千千万万人呢?今日头条号称日活2亿多呢,怎么能做到每个人都能匹配?还有就是内容和人怎么匹配在一起呢?等等一大堆需要我们去解决的问题;
推荐系统,其实主要包括三个部分:用户画像、内容画像、内容和用户匹配。
用户画像
想要系统能够知道一个用户喜欢什么,我们就要事先给这个用户画像,画像的意思就是给他定义一些“标签”,这些标签包括基本特征(比如性别、年龄、学历等基本信息)和兴趣爱好(喜欢动漫还是科技等,这些数据在系统一般标记为一个数据集合,比如,科技30%、娱乐20%、体育20%等等)。有这些特征,我们就可以说初步给一位用户画好像了。然后有的同学就会问,这些数据是哪里来的呢?是谁给我们打的标签?这个问题问得很好。我们注册软件的时候,我们通常会看见一个让我们选择兴趣爱好的界面,这个是最基础直白的打标签的途径,还有可以根据你经常使用的时间地点,推断出你的基本特征,还有你后续的使用过程中,你的用户行为(点击,点赞,转发跳出,停留时间等等),比如一开始给你推荐了10条内容,3条科技3条娱乐1条体育,那么你点击了1条科技2条娱乐,那么初步建立你80%娱乐20科技。具体的用户画像算法比我这说的复杂很多,我这里主要是先大概说一下,后面会有一篇专门说用户画像的。
内容画像
内容画像和用户画像差不多,简单点来说就是分析出内容的特点,给内容打上标签,好在后续的召回和排序(后面内容很用户匹配时候回说到这两个名词)中引用。内容画像和用户画像的方法也很不同,因为内容是我们后台的数据,可以用文本特征的方法来给内容画像。
内容的标签有很强的层级性,比如有很大的一级分类(体育、娱乐),然后有二级分类(如体育的可以分成足球、篮球),还有三级四级甚至n级。除了分类外,还有一些关键词、topic、实体词等文本特征。
今日头条推荐系统主要抽取的文本特征包括以下几类。首先是语义标签类特征,显式为文章打上语义标签。这部分标签是由人定义的特征,每个标签有明确的意义,标签体系是预定义的。此外还有隐式语义特征,主要是topic特征和关键词特征,其中topic特征是对于词概率分布的描述,无明确意义;而关键词特征会基于一些统一特征描述,无明确集合。这些标签和关键词,一般会有数百万级别,可以想象,需要多么强大的计算能力来支持;
除了内容标签外,内容还具有其他的一些属性,比如内容原创性、热度、发布用户热度等等,这些我们也会在内容画像一篇文章中在详细讲述;
用户与内容的匹配
有了内容画像和用户画像,我们怎么让内容和用户匹配在一起?你要知道,我们面对的是上亿级别的用户和数亿的内容,还要考虑到用户不断改变的喜好等等因数,其实我们下面一张图就可以说清楚,请看下图:
这里面提到了召回和排序,这里我们见到的讲一下,召回和排序就是我们在一个有用户画像的用户来请求内容,我们在我们千千万万的内容数据里面怎么挑选合适的内容返回给用户,为了让返回的内容更加符合用户,我们还需要进行对内容进行排序。召回和排序我们在后面的文章也会再次详细的说明,这里简单的说一下原理。召回的过程简单说就是根据用户的标签,我们要在我们内容池里面挑选内容出来,这里面为了让挑选的内容更加的贴近用户想要的,我们这里用到了其他的技术,比如协同效应(相同或相似的用户画像的用户也看了这类文章,那么你应该也会喜欢看,这个也一定程度上解决了用户越推荐看的内容越窄问题)、基于内容(就是匹配用户标签和内容标签)、基于热门(当下热门内容估计你也喜欢看)、基于环境(当前位置、当前时间等等)等,我们召回这些内容,暂时还没能推荐给用户,因为我们内容库十分的大,通过层层条件召回的内容还是很多的,而且用户喜欢的内容程度也不一样,这样我们就会进行排序,根据不同权重进行排序展示。
自我学习
到这里,一个推荐系统基本完了,但是,作为一个优秀的推荐系统,怎么能不继续优化自己呢,这里面就提到了反馈策略,通过反馈策略,我们推荐系统会不断的完善用户画像,和优化系统本身。
前面我们说过,用户画像一开始是比较简单的,估计就是你自己随便选的几个兴趣标签,但是我们推荐系统能够通过反馈自我学习,达到越来越懂你的境界。我们给用户展示一系列内容,可以根据用户正反馈(点赞、转发、打赏等)和负反馈(不喜欢、打开马上关闭等)来继续优化用户画像,里面还会用到一些其他手段,比如惩罚降权(用户不喜欢,那么该内容所属的标签在该用户身上就会被降权处理)、时间衰减(用户新的动作权重会比之前的动作权重更大)等手段来不断完善我们用户画像,这里面又是可以再开一篇文章来讲的事情。这里主要讲的是推荐系统的全貌,给大家有一个全面一点的认知。喜欢的同学可以加我微信一起讨论,微信pmfei5012;今天就到这里啦。