个性化推荐是怎么做的?产品经理也可以懂的算

日期:2019-08-14   

  写在前面 / 作为PM,也要深入到算法内部,让产品的推荐算法不断完善,这样才能符合用户的口味。今天这篇非常干,看的时候请自备饮品。

  写在前面 / 作为PM,也要深入到算法内部,让产品的推荐算法不断完善,这样才能符合用户的口味。今天这篇非常干,看的时候请自备饮品。

  今日头条带动了“个性化推荐”的概念,自此之后,无论是工具产品,电商产品,还是内容型的产品,都自带内容属性,个性化算法也逐渐从卖点变为标配。

  各种推荐算法不能仅仅是研发涉猎领域,作为PM,也要深入到算法内部,了解算法的设计,以及结合内容对算法不断“调教”,才能让产品的推荐算法不断完善,才能符合用户的口味。

  基于关联规则的推荐:“啤酒与尿布”的方式,是一种动态的推荐,能够实时对用户的行为作出推荐。是基于物品之间的特征关联性所做的推荐,在某种情况下会退化为物品协同过滤推荐。

  协同过滤推荐:与基于关联规则的推荐相比是一种静态方式的推荐,是根据用户已有的历史行为作分析的基础上做的推荐。可分为物品协同过滤、用户协同过滤、基于模型的协同过滤。其中,基于模型的协同又可以分为以下几种类型:基于距离的协同过滤;基于矩阵分解的协同过滤,即Latent Factor Model(SVD)或者ALS;基于图模型协同,即Graph,也叫社会网络图模型。

  基于关联规则的推荐:“啤酒与尿布”的方式,是一种动态的推荐,能够实时对用户的行为作出推荐。是基于物品之间的特征关联性所做的推荐,在某种情况下会退化为物品协同过滤推荐。

  协同过滤推荐:与基于关联规则的推荐相比是一种静态方式的推荐,是根据用户已有的历史行为作分析的基础上做的推荐。可分为物品协同过滤、用户协同过滤、基于模型的协同过滤。其中,基于模型的协同又可以分为以下几种类型:基于距离的协同过滤;基于矩阵分解的协同过滤,即Latent Factor Model(SVD)或者ALS;基于图模型协同,即Graph,也叫社会网络图模型。

  产品发展初期,由于一方面没有用户行为、用户喜好、用户画像,另外也没有大量的内容样本基础,是很难开展个性化推荐的。所以在产品初期,一般采取“热度算法”,顾名思义就是把热点的内容优先推荐给用户。虽然无法做到基于兴趣和习惯为每一个用户做到精准化的推荐,但能覆盖到大部分的内容需求,而且启动成本比个性化推荐算法低太多。

  按照新闻类别给予新闻不同的初始热度,让用户关注度高的类别获得更高的初始热度分,从而获得更多的曝光。军事娱乐体育财经....

  对于重大事件的报道,如何让它入库时就有更高的热度,我们采用的是热词匹配的方式。

  即对大型新闻站点的头条,Twitter热点,竞品的头条做监控和扒取,并将这批新闻的关键词维护到热词库并保持更新;每条新闻入库的时候,让新闻的关键词去匹配热词库,匹配度越高,就有越高的初始热度分。这样处理后,重大事件发生时,Twitter和门户网站的争相报道会导致热词集中化,所有匹配到这些热词的新闻,即报道同样事件的新闻,会获得很高的初始热度分。

  3)用户交互的热度分值比重不一。首先明确用户的的哪些行为会提高新闻的热度值,然后对这些行为赋予一定的得分规则。

  例如对于单条新闻,用户可以点击阅读(click),收藏(favor),分享(share),评论(comment)这四种行为,我们为不同的行为赋予分数,就能得到新闻的实时用户行为分为:

  这里对不同行为赋予的分数为1,5,10,20,但这个值不能是一成不变的;当用户规模小的时候,各项事件都小,此时需要提高每个事件的行为分来提升用户行为的影响力;当用户规模变大时,行为分也应该慢慢降低,因此做内容运营时,应该对行为分不断调整。

  当然也有偷懒的办法,那就是把用户规模考虑进去,算固定用户数的行为分,即:

  对于此种推荐,有两个实体:内容和用户,因此需要有一个联系这两者的东西,即为标签。内容转换为标签即为内容特征化,用户则称为用户特征化。对于此种推荐,主要分为以下几个关键部分:

  标签是联系用户与物品、内容以及物品、内容之间的纽带,也是反应用户兴趣的重要数据源。标签库的最终用途在于对用户进行行为、属性标记。是将其他实体转换为计算机可以理解的语言关键的一步。

  标签库则是对标签进行聚合的系统,香港马会开奖搅珠现场,包括对标签的管理、更新等。一般来说,标签是以层级的形式组织的。可以有一级维度、二级维度等。

  对于内容的关键词提取,使用结巴分词+TFIDF即可。此外,也可以使用TextRank来提取内容关键词。

  这里需要注意的一点是对于关联标签的处理,比如用户的标签是足球,而内容的标签是德甲、英超,那么用户和内容是无法联系在一起的。最简单的方式是人工设置关联标签,此外也可以使用word2vec一类工具对标签做聚类处理,构建主题模型,将德甲、英超聚类到足球下面。

  针对机器自动打标签,需要采取机器学习的相关算法来实现,即针对一系列给定的标签,给内容选取其中匹配度最高的几个标签。这不同于通常的分类和聚类算法。可以采取使用分词 +Word2Vec来实现,过程如下:

  此外,可以使用文本主题挖掘相关技术,对内容进行特征化。这也分为两种情况:

  通用情况下,只是为了效果优化的特征提取,那么可以使用非监督学习的主题模型算法。如LSA、PLSI和GaP模型或者LDA模型。

  在和业务强相关时,需要在业务特定的标签体系下给内容打上适合的标签。这时候需要使用的是监督学习的主题模型。如sLDA、HSLDA等。

  用户特征化即为用户打标签。通过用户的行为日志和一定的模型算法得到用户的每个标签的权重。

  用户对内容的行为:点赞、不感兴趣、点击、浏览。对用户的反馈行为如点赞赋予权值1,不感兴趣赋予-1;对于用户的浏览行为,则可使用点击/浏览作为权值。对内容发生的行为可以认为对此内容所带的标签的行为。

  用户的兴趣是时间衰减的,即离当前时间越远的兴趣比重越低。时间衰减函数使用1/[log(t)+1], t为事件发生的时间距离当前时间的大小。

  要考虑到热门内容会干预用户的标签,需要对热门内容进行降权。使用click/pv作为用户浏览行为权值即可达到此目的。此外,还需要考虑噪声的干扰,如标题党等。另,在非业务强相关的情况下,还可以考虑使用LSA主题模型等矩阵分解的方式对用户进行标签化。

  有了内容特征和用户特征,可以使用隐语义模型进行推荐。这里可以使用其简化形式,以达到实时计算的目的。

  其中i=1…N是内容c具有的标签,m(ci)指的内容c和标签i的关联度(可以简单认为是1),n(ui)指的是用户u的标签i的权重值,当用户不具有此标签时n(ui)=0,q©指的是内容c的质量,可以使用点击率(click/pv)表示。

  除了个性化推荐,基于内容的相关性算法能精准地给出一篇新闻的相关推荐列表,对相关阅读的实现非常有意义。此外,标签系统对新闻分类的实现和提升准确性,也有重要的意义。

  对用户数量没有要求,无论日活几千或是几百万,均可以采用;因此个性化推荐早期一般采用这种方式。

  每个用户的特征都是由自己的行为来决定的,是独立存在的,不会有互相干扰,因此恶意刷阅读等新闻不会影响到推荐算法。

  对用户数量没有要求,无论日活几千或是几百万,均可以采用;因此个性化推荐早期一般采用这种方式。

  每个用户的特征都是由自己的行为来决定的,是独立存在的,不会有互相干扰,因此恶意刷阅读等新闻不会影响到推荐算法。

  而最主要的缺点就是确定性太强了,所有推荐的内容都是由用户的阅读历史决定,所以没办法挖掘用户的潜在兴趣;也就是由于这一点,基于内容的推荐一般与其他推荐算法同时存在。

  终于,经过团队的努力,你的产品已经有了大量活跃用户了,这时候你开始不满足于现有的算法。虽然基于内容的推荐已经很精准了,但总是少了那么一点性感。因为你所有给用户的内容都是基于他们的阅读习惯推荐的,没能给用户“不期而遇”的感觉。

  基于用户的协同过滤推荐算法,简单来讲就是依据用户A的阅读喜好,为A找到与他兴趣最接近的群体,所谓“人以群分”,然后把这个群体里其他人喜欢的,但是A没有阅读过的内容推荐给A。

  举例我是一个足球迷,系统找到与我类似的用户都是足球的重度阅读者,但与此同时,这些“足球群体”中有一部分人有看NBA新闻的习惯,系统就可能会给我推荐NBA内容,很可能我也对NBA也感兴趣,这样我在后台的兴趣图谱就更完善了。

  这里使用社交平台数据的居多,现在产品的登录体系一般都借用第三方社媒的登录体系,如国外的Facebook、Twitter,国内的微信、微博,借用第三方账户的好处多多,例如降低门槛,方便传播等,还能对个性化推荐起到重要作用。

  因为第三方账户都是授权获取部分用户信息的,往往包括性别,年龄,工作甚至社交关系等,这些信息对用户群划分很有意义。此外还有其他的一些数据也能借用,例如IP地址,手机语种等。

  使用这些数据,你很容易就能得到一个用户是北京的还是上海的,是大学生还是创业者,并依据这些属性做准确的大类划分。比如一篇行业投资分析出来后,“上海创业圈”这个群体80%的用户都看过,那就可以推荐给剩下的20%。

  常见在产品首次启动的时候,弹框询问用户是男是女,职业等,这样能对内容推荐的冷启动提供一些帮助。但总体来说,性价比偏低,只能询问两三个问题并对用户的推荐内容做非常粗略的划分,同时要避免打扰到用户;这种做法算是基于用户个性化的雏形。

  新闻的特征加用户的阅读数据能得到用户的特征,那就可以通过用户特征的相似性来划分群体。

  最后总结,没有一款完美的个性化推荐算法,毕竟用户的心里你别猜别猜别猜,但是产品经理还是要结合自身产品不断打磨算法。