清澈如初|个性化推荐算法(推荐系统)概要( 五 )


  • a 基于用户特征表示的推荐
标的物是具备很多文本特征的 , 比如标签、描述信息、metadata信息等 。 我们可以将这些文本信息采用TF-IDF或者LDA等算法转化为特征向量 , 如果是用标签来描述标的物 , 那么我们可以构建一个以标签为特征的特征向量 。
有了特征向量 , 就可以将用户所有操作过的标的物的特征向量的(时间加权)平均作为用户的特征向量 , 利用用户特征向量与标的物特征向量的乘积就可以计算用户与标的物的相似度 , 从而计算出用户的推荐列表 。
  • b 基于倒排索引查询的推荐
如果我们基于标签来表示标的物属性 , 那么基于用户的历史行为 , 可以构建用户的兴趣画像 , 该画像即是用户对各个标签的偏好 , 并且有相应的偏好权重 。
构建完用户画像后 , 我们可以构建出标签与标的物的倒排索引查询表(熟悉搜索的同学应该不难理解) 。 基于该反向索引表及用户的兴趣画像 , 我们就可以为用户做个性化推荐了 。 该类算法其实就是基于标签的召回算法 。
具体推荐过程是这样的(见下面图):从用户画像中获取用户的兴趣标签 , 基于用户的兴趣标签从倒排索引表中获取该标签对应的节目 , 这样就可以从用户关联到节目了 。 其中用户的每个兴趣标签及标签关联到的标的物都是有权重的 。
清澈如初|个性化推荐算法(推荐系统)概要该类推荐算法是非常自然直观的 , 可解释性强 。 同时可以较好地解决冷启动 , 只要用户有一次行为 , 就可以基于该行为做推荐 。 但是 , 该类算法往往新颖性不足 , 给用户的推荐往往局限在一个狭小的范围中 , 如果用户不主动拓展自己的兴趣空间 , 该方法很难为用户推荐新颖的内容 。
(2)基于协同过滤的推荐算法
基于协同过滤的推荐算法 , 核心思想是很朴素的”物以类聚、人以群分“的思想 。 所谓物以类聚 , 就是计算出每个标的物最相似的标的物列表 , 我们就可以为用户推荐用户喜欢的标的物相似的标的物 , 这就是基于物品的协同过滤 。 所谓人以群分 , 就是我们可以将与该用户相似的用户喜欢过的标的物(而该用户未曾操作过)的标的物推荐给该用户 , 这就是基于用户的协同过滤 。 具体思想可以参考下图 。
清澈如初|个性化推荐算法(推荐系统)概要协同过滤的核心是怎么计算标的物之间的相似度以及用户之间的相似度 。 我们可以采用非常朴素的思想来计算相似度 。
我们将用户对标的物的评分(或者隐式反馈 , 如点击等)构建如下矩阵(见下) 矩阵的某个元素代表某个用户对某个标的物的评分(如果是隐式反馈 , 值为1) , 如果某个用户对某个标的物未产生行为 , 值为0 。 其中行向量代表某个用户对所有标的物的评分向量 , 列向量代表所有用户对某个标的物的评分向量 。 有了行向量和列向量 , 我们就可以计算用户与用户之间、标的物与标的物之间的相似度了 。 具体来说 , 行向量之间的相似度就是用户之间的相似度 , 列向量之间的相似度就是标的物之间的相似度 。 相似度的计算可以采用cos余弦相似度算法 。
在互联网产品中一般会采用基于物品的协同过滤 , 因为对于互联网产品来说 , 用户相对于标的物变化更大 , 用户是增长较快的 , 标的物增长相对较慢 , 利用基于物品的协同过滤算法效果更稳定 。
协同过滤算法思路非常直观易懂 , 计算也相对简单 , 易于分布式实现 , 也不依赖于用户及标的物的其他信息 , 效果也非常好 , 也能够为用户推荐新颖性内容 , 所以在工业界得到非常广泛的应用 。
(3)基于模型的推荐算法