推荐系统起手式-几种简单推荐模型(基于内容的推荐)

一.基于内容的推荐

所谓基于内容信息的推荐系统,其实就是用特征(Feature)来表示用户、物品以及用户和物品的交互,从而能够把推荐问题转换成为监督学习任务。把推荐系统完全定义为监督学习任务,需要有这么几个步骤。

第一,就是我们已经提到的,需要把所有用户、物品的各种信号用特征来表示。这里面往往牵涉非常复杂和繁琐的特征工程,也就是看如何能够把不同的信息通过特征表达出来。

第二,就是每一个监督任务都需要面临的问题,如何构造一个目标函数,来描述当前的场景。可以说,这是最难的一个部分,也是和基于流行度和基于相似度的推荐系统的最大区别。

二.用户特征信息

用户向量化后的结果,就是 User Profile,俗称“用户画像”。对于用户来说,最基础、最首要的肯定是用户的基本特性,包括性别、年龄、地理位置。这三大信息其实可以涵盖用户特性工程中非常大的一块内容。这里不仅是最基本的这三个特性的值,还有围绕这三个特性发展出来的三大种类的特性。比如,不同性别在文章点击率上的差异,不同年龄层在商品购买上的差异,不同地理位置对不同影视作品的喜好等,这些都是根据这三个特性发展出来的更多的特性。然后,我们可以为用户进行画像(Profiling)。有显式的用户画像,比如用户自己定义的喜好,或者用户自己认为不愿意看到的物品或者类别。但是在大多数情况下,用户都不会为我们提供那么精准的回馈信息,甚至完全不会有任何直接的反馈。在这样的情况下,绝大多数的用户画像工作,其实是通过用户的“隐反馈”(Implicit Feedback),来对用户的喜好进行建模。关于如何进行用户画像,我们今天就不在这里展开了。针对用户画像我们还需要强调几点,首先每个维度的名称都是可理解的。其次是维度的数量特征工程自由决定的。假如是根据用户的阅读历史挖掘阅读兴趣标签,那么我们无法提前知道用户有哪些标签,也就不能确定用户画像有哪些维度,所以第二点也不是必须的。因为这一点也不是必须的,用户画像的维度个数可以不用确定。理论上来说维度越多,画像越精细,但带来的计算代价也是很大的,需要权衡。最后有哪些维度也是特征工程自由确定的。虽然这里以标签作为例子,但是你要注意,用户画像是向量化结果,而不是标签化。标签化只是向量化的一种,因为向量的维度不一定需要人理解。再有,我来说说量化。我们这里的量化都是主观的,而在实际生产系统上,用户画像每个维度的量化,应该交给机器,而且以目标为导向,以推荐效果好坏来反向优化出用户画像才有意义,像这里这个简单的例子,没有去管推荐效果而先行主观量化了每一个维度,是大忌。所以用户画像的量化是和第三个关键元素“效果”息息相关的。前面已经说过,不要为了用户画像而用户画像,它只是推荐系统的一个副产品,所以要根据使用效果(排序好坏、召回覆盖等指标)来指导用户画像的量化。

三.内容特征信息

那么,对于内容特征来说,有哪些是比较重要的呢?这里我们肯定没法提供一个完备的列表,那我就给出一些主要特证思考方向。

1.内容的文本信息

内容的文本信息,比如商品的名字和描述。这些文字信息可以使用很多文本挖掘(Text Mining)的方式来组成有效的特征。我们在讲搜索模块的时候,其实就已经提到了一些,比如用 TF-IDF 的方法来形成文本向量。当然,因为文本信息的噪声相对比较大,并且数据维度也比较大(维度等于文本所对应语言的词汇量),很多时候我们都寻求降低这部分数据的维度,降低到一个固定的维度。这种时候,很多所谓“降维”的工具就很有必要了。传统上,有用“话题模型”(Topic Model)对文本进行降维的。也就是说,我们针对每一个文字描述都可以学习到一个话题的分布,这个分布向量可能是 50 维、100 维等等,但是肯定要比原始的词汇向量要小。近些年,很多人又开始使用各种“词嵌入向量”(Word Embedding)的方法来为文字信息降维,从而能够使用一个固定的维度来表达文字信息。但是在大多数情况下,用户都不会为我们提供那么精准的回馈信息,甚至完全不会有任何直接的反馈。在这样的情况下,绝大多数的用户画像工作,其实是通过用户的“隐反馈”(Implicit Feedback),来对用户的喜好进行建模。关于如何进行用户画像,我们今天就不在这里展开了。

2.内容的类别信息

内容的类别信息,对于新闻文章来说,类别信息是新闻的话题类别,像娱乐新闻、财经新闻或者时政新闻等。而对于商品来说,类别信息是商品的品类,像电器、床上用品或者生活用品等。这些类别信息往往能够非常有效地抓住物品的整体属性。通常情况下,这样的属性比直接使用文字信息更加直接。如何能够得到这样的类别信息呢?在有些情况下,这些类别信息是在数据输入的时候获取的。比如通过合作渠道取得新闻文章的时候,类别往往是编辑加上去的。再比如,商品的类别很多时候也是卖家在输入商品的时候加上去的。当然,也有一些情况,这些类别信息并不是直接获得的;或者是在数据中有很多缺失的情况下,就需要利用机器学习的手段,来构造分类器以获取这些类别信息。我们在这里就不展开讨论这些分类器该如何构建了。

3.内容的知识信息

需要说明的一点是,最近一段时间比较火热的研发领域,就是利用知识图谱(Knowledge Graph)来对内容的各种信息进行深入挖掘。很多信息是通过知识图谱推断出来的。举个例子,某一篇新闻文章是关于美国总统特朗普的,于是这篇文章可能就会自动被打上美国总统、美国政治等其他标签。这种通过一些原始的信息来进一步推断更加丰富的知识信息,也是重要的物品类别特征的处理工作。

4.图像或者其他多媒体的信息

在信息如此丰富的今天,很多内容都有多样的表现形式,比如比较常见的图像、视频等。那么,如何从这些媒介中提取信息也是非常关键的物品特征工程。和文字信息正好相反,很多多媒体的信息都是稠密(Dense)的向量,因此需要对这些向量进行特殊处理,比如我们首先学习一个分类器,然后再和其他特征的不同分类器组合。

四.用户和内容建模

我们前面提到,整个基于内容信息的推荐系统就是把所有的信号都当做特征,然后构建一个监督学习任务。监督学习的一个关键的就是目标函数。对于一个推荐系统来说,都有什么样的目标函数呢?和纯粹的基于评分(Rating)的协同过滤推荐系统一样,我们可以设置监督学习的目标函数是拟合评分。当然,已经有很多学者指出评分并不是推荐系统的真正目标。一个推荐系统来到这个世界上,它只有一个使命,就是要在用户和内容之间建立关联。一般方式就是,对用户和内容之间的匹配评分,也就是预测用户评分或者偏好。推荐系统在对匹配评分前,则首先就要将用户和内容都向量化,这样才能进行计算。而根据推荐算法不同,向量化的方式也不同,最终对匹配评分的做法也不同,在后面讲到具体推荐算法时你会看到这一点。另外,通常大型推荐系统一般都分为召回和排序两个阶段,这个在后面我会专门提到。因为全量物品通常数量非常大,无法为一个用户逐一计算每一个内容的评分,这时候就需要一个召回阶段,其实就是预先筛选一部分内容,从而降低计算量,用户画像除了用于最终匹配评分,还要用在召回。所以,构建用户画像也就要以这两个阶段为目的。那么,在实际系统中比较常见的目标函数有点击率和购买率,也有一些相对比较复杂的目标函数,比如预测用户在某一个物品上的停留时长。对于究竟在哪种场景中使用什么样的目标函数,这依然是当前的一个主要研究方向。

猜你喜欢

转载自www.cnblogs.com/xiashusen-vd/p/11518080.html