推荐算法学习(九):基于内容的推荐

基于内容的推荐(Content-based Recommendations,CB)是基于标的物相关信息、用户相关信息及用户对标的物的操作行为来构建推荐算法模型,为用户提供推荐服务。这里的标的物相关信息可以是对标的物文字描述的metadata信息、标签、用户评论、人工标注的信息等;用户相关信息是指人口统计学信息(如年龄、性别、地域等);用户对标的物的操作行为可以是评论、收藏、点赞、观看、浏览、点击等。基于内容的推荐算法一般只依赖于用户自身的行为为用户提供推荐,不涉及到其他用户的行为

基于内容的推荐

基于内容的推荐主要有两个优势:(1)依赖性低,不需要动态的用户行为,只要有内容就可以进行推荐;(2)系统不同阶段都可以应用,系统冷启动:内容是任何系统天生的属性,可以从中挖掘到特征,实现推荐系统的冷启动,一个复杂的推荐系统是从基于内容的推荐成长起来的。商品冷启动:不论什么阶段,总会有新的物品加入,这时只要有内容信息,就可以帮它进行推荐。

基于内容的推荐主要步骤有:

  • 物品表示 Item Representation:为每个item抽取出features

  • 特征学习Profile Learning:利用一个用户过去喜欢(不喜欢)的item的特征数据,来学习该用户的喜好特征(profile)

  • 生成推荐列表Recommendation Generation:通过用户profile与候选item的特征,推荐相关性最大的item

    0

为酒店建立内容推荐系统

西雅图酒店数据集如下图所示,记录了用户历史选择的酒店数据,有name, address, desc三个字段,基于这些数据,如何向用户推荐相似度高的Top10个其他酒店?主要思路是计算当前酒店特征向量与整个酒店特征矩阵的余弦相似度,取相似度最大的Top-k个。

0

余弦相似度

余弦相似度是通过测量两个向量的夹角的余弦值来度量它们之间的相似性,给定属性向量A和B,A和B之间的夹角θ余弦值可以通过点积和向量长度计算得出:

0

例如,计算句子A和句子B的余弦相似度可先对句子进行分词,列出所有词,计算句子A和B的词频得到词频向量,计算两词频向量的余弦相似度来衡量句子A与B的相似程度。

N-Gram(N元语法)

在处理文本特征时,假设第n个词出现与前n-1个词相关,而与其他任何词不相关,一个关键词是一个特征,但有些情况不够用,需要提取更多的特征,可采用N-Gram作为新的特征 (可以理解为相邻两个关键词的特征组合)。N=1时为unigram,N=2为bigram,N=3为trigram。N-Gram指的是给定一段文本,其中的N个item的序列。比如文本:A B C D E,对应的Bi-Gram为A B, B C, C D, D E。

TF-IDF

TF——词频,一个单词的重要性和它在文档中出现的次数呈正比。

0

IDF——逆向文档频率,一个单词在文档中的区分度。这个单词出现的文档数越少,区分度越大,IDF越大。

0

TF-IDF矩阵(n,k),词频矩阵(n,k)*IDF(k,k)。CountVectorizer函数可将文本中的词语转换为词频矩阵;TfidfVectorizer函数可直接将文档集合转化为tf-idf特征值的矩阵。

酒店基于内容的推荐步骤

(1)对酒店描述进行特征提取(N-Gram,提取N个连续字的集合,作为特征;TF-IDF,按照(min_df, max_df)提取关键词,并生成TFIDF矩阵)

(2)计算酒店之间的相似度矩阵(余弦相似度)

(3)对于指定的酒店,选择相似度最大的Top-K个酒店进行输出

Word Embedding

Embedding是一种降维方式,将不同特征转换为维度相同的向量。离线变量转换成one-hot => 维度非常高,可以将它转换为固定size的embedding向量,且向量之间,可以使用相似度进行计算。任何物体,都可以将它转换成为向量的形式,当进行推荐时,可以选择相似度最大的。

0

0

Word2Vec通过Embedding,把原先词所在空间映射到一个新的空间中去,使得语义上相似的单词在该空间内距离相近。如下图所示,Word Embedding 本质上是学习隐藏层的权重矩阵,输入侧是one-hot编码,隐藏层的神经元数量为hidden_size(即Embedding Size),对于输入层和隐藏层之间的权值矩阵W,大小为[vocab_size, hidden_size],输出层为[vocab_size]大小的向量,每一个值代表着输出一个词的概率。

0

对于输入的one-hot编码,在矩阵相乘的时候,选取出矩阵中的某一行,而这一行就是输入词语的word2vec表示。隐含层的节点个数 = 词向量的维数,隐层的输出是每个输入单词的Word Embedding,word2vec,实际上就是一个查找表。

0

0

Word2Vec有Skip-Gram和CBOW两种模式。Skip-Gram,给定input word预测上下文;CBOW,给定上下文,预测input word(与Skip-Gram相反)。

0

我们可将待解决的问题转换成为单词word和文章doc的对应关系,如商品推荐中,商品 => 单词,用户对商品的行为顺序 => 文章,这样即可运用Word2Vec方法来进行商品推荐。

Word2Vec工具——Gensim

  • 开源的Python工具包
  • 可从非结构化文本中,无监督地学习到隐层的主题向量表达
  • 支持TF-IDF,LDA, LSA, word2vec等多种主题模型算法

实例:使用Gensim中的Word2Vec对三国演义进行Word Embedding,分析和曹操最相近的词有哪些,曹操+刘备-张飞=?

代码:https://github.com/Alice1214/RS/tree/master/RS07/word2vec