用户画像
用户画像到底是什么?它是对用户信息的向量化表示,就是 User Profile,俗称“用户画像”。用户画像不是推荐系统的目的,而是在构建推荐系统的过程中产生的一个关键环节的副产品。构建用户画像需要下面两个步骤。
1 结构化文本
我们拿到的文本,常常是自然语言描述的,用行话说,就是“非结构化”的,但是计算机在处理时,只能使用结构化的数据索引,检索,然后向量化后再计算;所以分析文本,就是为了将非结构化的数据结构化,好比是将模拟信号数字化一样,只有这样才能送入计算机,继续计算。
从物品端的文本信息,我们可以利用成熟的 NLP 算法分析得到的信息有下面几种。
- 关键词提取:最基础的标签来源,也为其他文本分析提供基础数据,常用 TF-IDF 和 TextRank。
- 内容分类:将文本按照分类体系分类,用分类来表达较粗粒度的结构化信息。常用工具FastText
- 主题模型:从大量已有文本中学习主题向量,然后再预测新的文本在各个主题上的概率分布情况,也很实用,其实这也是一种聚类思想,主题向量也不是标签形式,也是用户画像的常用构成。常用的开源的 LDA 训练工具有 Gensim,PLDA 等
- 嵌入:“嵌入”也叫作 Embedding,从词到篇章,无不可以学习这种嵌入表达。嵌入表达是为了挖掘出字面意思之下的语义信息,并且用有限的维度表达出来。
2 标签选择
对物品端的文本进行结构化,得到了诸如标签(关键词、分类等)、主题、词嵌入向量。接下来就是第二步:把物品的结构化信息给用户。一种简单粗暴的办法是直接把用户产生过行为的物品标签累积在一起。
内容推荐算法
对于基于内容的推荐系统,最简单的推荐算法当然是计算相似度即可,用户的画像内容就表示为稀疏的向量,同时内容端也有对应的稀疏向量,两者之间计算余弦相似度,根据相似度对推荐物品排序。
余弦相似度
基于用户的协同过滤
背后的思想
你有没有过这种感觉,你遇到一个人,你发现他喜欢的书、喜欢的电影也基本上都是你喜欢的,从此以后,你就想老是想问他:还有什么好推荐的,最近又看了什么书,最近又看了什么电影?这个感觉非常地自然直接,它就是基于用户的协同过滤背后思想。详细来说就是:先根据历史消费行为帮你找到一群和你口味很相似的用户;然后根据这些和你很相似的用户再消费了什么新的、你没有见过的物品,都可以推荐给你。
处理步骤
1 准备用户向量
理论上可以给每一个用户得到一个向量。为什么要说是“理论上”呢?因为得到向量的前提是:用户需要在我们的产品里有行为数据,否则就得不到这个向量。这个向量有这么三个特点:
- 向量的维度就是物品的个数
- 向量是稀疏的,也就是说并不是每个维度上都有数值,原因当然很简单,这个用户并不是消费过所有物品
- 向量维度上的取值可以是简单的 0 或者 1,也就是布尔值,1 表示浏览过,0 表示没有。
2 用每一个用户的向量,两两计算用户之间的相似度,设定一个相似度阈值或者设定一个最大数量,为每个用户保留与其最相似的用户。
这里我们同样采用余弦相似度进行计算
3 为每一个用户产生推荐结果。
把和他相似的用户们浏览过的物品汇总起来,去掉用户自己已经看过的物品,剩下的排序输出就是推荐结果。具体的汇总方式我们用一个公式来表示。
等号左边就是计算一个物品 i 和一个用户 u 的匹配分数,等号右边是这个分数的计算过程,分母是把和用户 u 相似的 n 个用户的相似度加起来,分子是把这 n 个用户各自对物品 i 的态度,按照相似度加权求和。这里的态度最简单就是 0 或者 1,1 表示喜欢过,0 表示没有,如果是评分,则可以是 0 到 5 的取值。整个公式就是相似用户们的态度加权平均值。
本文根据 刑无刀的推荐系统三十六式 整理而来
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。