个性化推荐算法实践第05章基于内容的推荐方法ContentBased

[TOC]

个性化推荐算法实践第05章基于内容的推荐方法Content Based

本章节重点介绍一种基于内容的推荐方法content based。从content based算法的背景与主体流程进行介绍。并代码实战content based算法。

第一部分:基于内容的推荐的理论知识部分

一、个性化召回算法Content based背景介绍

之前博文讲到的CF、LFM、Personal Rank都同属于基于领域的推荐。item2vec属于基于深度学习的推荐。

基于内容推荐不同于之前讲过的任何一种个性化召回算法,属于独立的分支。我们有必要去了解该算法出现的背景。

  1. 思路简单,可解释性强

任何一个推荐系统的初衷,都是推荐出用户喜欢的item。

基于内容的推荐,恰恰是根据用户的喜好之后,给予用户喜欢的物品。

eg:某一个用户经常点击体育类的新闻,那么在这个用户下一次访问这个网站系统的时候,自然而然的给用户推荐体育类型的新闻。那么对于推荐结果可解释性非常的强。

  1. 用户推荐的独立性

基于内容的推荐,推荐的结果只与该用户本身的行为有关系,其余用户的行为是影响不到该用户的推荐结果的。但是,联想一下,之前提到的无论是CF还是LFM、personal rank以及item2vec,其余用户的行为都会一定程度上,或多或少的干预到最后的推荐结果。

  1. 问世较早,流行度高

由于基于内容推荐思路的极简性,可解释性,所以它出现的非常早;并且,无论是在工业界,还是研究界,都最为一种基础的算法,流行度非常的高。

但是,任何事物都是有两面性的,基于内容的推荐不是说是完美的,它同样有一些非常明显的缺点。

(1)对于推荐的扩展性较差:也就是说,如果一个用户之前经常访问体育类型的新闻,那么在之后的推荐之中,倾向于在体育范围内不断地挖掘;很难完成跨领域的物品推荐。

(2)需要积累一定量的用户的行为,才能够完成基于内容的推荐。

二、Content-based算法的主体流程介绍

实际上该算法的主体流程大部分不属于个性化推荐的范畴,应该从属于NLP或者用户画像的范畴。只有极小部分属于个性化推荐算法实战的范畴。

  1. item profile:对item的刻画

针对于基于内容的推荐下,对item的刻画大体可以分为两大类:(1)关键词刻画;(2)类别的刻画。

比如,在信息流场景下,我们需要刻画出这篇新闻属于财经还是娱乐;那么在电商场景下也是一样的,我们需要刻画出这个物品它属于图书还是说属于母婴,具体的关键词上也会有这个图书是数据机器学习的还是人文情感的,这个物品是参与满减的,还是参与包邮的等等。

第一步完成内容的物品刻画之后,第二步需要对用户进行刻画。

  1. user profile

传统范畴的用户画像是比较宽泛的,它不仅包含了用户的动态特征,还包含了它的一些静态特征。

而我们用在基于内容推荐里的更多的是聚焦在用户的长期、短期行为,进而通过行为的分析将用户感兴趣的topic、或者用户感兴趣的类别给予刻画。

那么,有了item的刻画,有了user的刻画,第三步就是在线上完成个性化推荐的过程。

  1. online recommendation

给用户推荐他最感兴趣的一些topic,或者说一些类别。

假设某个用户经常点击明星新闻,当用户访问系统的时候,我们应该明星最新的新闻最及时的推荐给用户,这样点击率自然很高。

那么经过这三步流程的分析,可以发现:实际上,前两步更多的同属于NLP或者说是用户画像的范畴,第三步更多的是我们个性化推荐的内容实战范畴。

下面将每一部分的技术要点进行解析:

(1)item profile

a. Topic finding(Topic 发现):首先要选定特征,这里的特征是title和内容主体的分词,那么得到词语的分词之后,针对于topic的发掘采用命名实体识别的方式。这个命名实体识别的方式可以去匹配关键词词表,那么得到了关键词之后,我们需要对这些关键词进行一定的排名,那么将排名最高的top 3 或者top 5给 item 完成label。

至于这里的排名,会使用一些算法和规则,算法诸如:TF-IDF,规则是基于自己的场景总结出来的修正错误case的一些规则。

b. Genre Classify(类别的划分):首先选定好特征,这里同样是利用一些文本信息,比如说title,分词(正文中所有的去过标点,去过停用词)得到的词向量,这里词向量在浅层模型中可以直接one-hot编码,在深层模型中,首先可以先进行一个embedding,这里使用的分类模型主要是像LR、GBDT、CNN等等。

分类器的使用,是使用多种分类器,分别占不同的权重,然后对结果进行一个线性的加权,从而得到正确的分类。

以上是针对于文档的topic 发掘或者说是类别的分类进行的叙述。那么对于短视频,实际上现在引入了一些更多的特征,比如关键帧所对应图像的分类识别,以及音频所对应的语音识别后,文字的处理等一些有意义的尝试。

(2)user profile

a. Genre/Topic(类别的划分)(Topic 发现):

一个层面是用户对哪些种类的新闻或者是物品感兴趣;另一个层面是对哪些关键词感兴趣。

现在多是基于统计的方式,业界也在做一些尝试,比如引入分类器等等。

b. Time Decay:

注意时间衰减,不同时期的行为所占权重是不同的。

最终,针对于某个用户最想想刻画得到的结果是,用户对于不同种类item的倾向性,eg,比如这个用户对于娱乐倾向性是0.7,对于财经的倾向性是0.3。

(3)线上推荐部分

a. find top k Genre/Topic ;

b. get the best n item for fix genre/topic

第一步,基于用户的刻画,找到用户最感兴趣的top k个分类,由于这top k个分类都是带有权重的,那么第二步,相应给每个分类得到n个最好的分类下的item.

这里有两点说明,

a. 由于权重的不同,从种类下召回的数目是不同的。比如某人对财经感兴趣,对娱乐也感兴趣,但是对娱乐感兴趣的程度更高。那么对娱乐召回的数目就要多于财经召回的数目。

b. best的理解:这里的best对于不是新item来讲,就是它的后验CTR;如果是新的item,在入库的时候,都会给出一个预估的CTR,那么就用这个预估的CTR来作为衡量的标准。

第二部分:基于内容的推荐的代码实战部分

坚持原创技术分享,您的支持将鼓励我继续创作!
//