1.推荐算法串讲

推荐算法

1、 基于内容的推荐

2、 基于近邻的推荐(协同过滤)

3、 基于矩阵分解的隐语义模型(LFM,FM,FFM)

4、 word2vec在推荐中的应用


基于内容的推荐


常用于和文本有关的推荐。比如新闻推荐,电影推荐。

具体做法

对用户来说,他看过哪些新闻,电影,这些新闻电影会有一些关键词。用这些关键词可以构建一个向量描述这个用户。Wij代表第i个词对用户j的重要度。

对新闻、电影来说,也是有一些关键字,或用tfidf去统计。总之也是得到个向量。

然后就可以用相似度了。比如夹角余弦。

在聚类中我们说余弦值不容易收敛,那是因为聚类是要做多次迭代的,我们这里没有迭代所以可放心使用。

而具体做法可以把每个文档向量化,比如tfidt,向量维度是一个个单词,值是单词的tfidf值。

对于用户,可以把它过去看过的那些文档拿过来(可以有时间衰减),综合出一个向量代表这个人。


基于近邻的算法

knn,ann,协同过滤,都是基于近邻的一种,协同过滤是其中最有名的。

协同过滤算法是基于 物品——用户 矩阵工作的。行是物品,列是用户。每个元素是用户对物品的打分。

定义物品间相似度时,最简单直接的方法使用用户交集。jaccard相似度就可以干这个。

基于物品的协同是怎么做的呢,对用户A推存电影,脑补下面过程:


1.推荐算法串讲_第1张图片

共6部电影,他看了4部,剩下2部没看——我们要做的就是根据他对另4个电影的评分,估计出他会对这2个的打分。是体做法

对电影1

计算那4部电影和它的相似度,用皮尔森相似度。

每一行是一个电影的所有用户评分,把这一行中心化。(在行的级别做中心化)

这4+A都做了中心化后,计算相似度,有了4个数字。假设我们是按照top 2 的规则来做推荐,也就是根据两个最接近的物品做推荐。所以,从这四个相似度中,选择最大的两个。


1.推荐算法串讲_第2张图片

把这2个相似度做权值,用户A对这2个电影的评分做加权平均得到估计的评分。


1.推荐算法串讲_第3张图片

其它个电影都这么做一遍,得到2个估计评分,排序后推荐。

计算中注意细节

用户没评分的电影不参与相似度的计算。也就是不参的最后的加权平均

估计出来评分也不参与后续估分什算。因为本来就是估计的。

优点

无需任何先验知识,结构简单

缺点

不考虑环境上下文

没有包含物品相似信息:由于完全基于用户行为计算的物品相以度。假设两个商家的两个完全一样的物品,除非有相同的用户行为,否则是得不到相似的。解决办法,引入基于内容的推荐,多个推荐组。再学习排序。


隐语义模型(LFM)

http://www.cnblogs.com/hxsyl/p/4881685.html

用矩阵分解的思想去完成矩阵填空。但不能甲svd去做,原因有2

1、 时间复杂度是立方级别的

2、 矩阵中是有很多缺失值的,不能用0简单填充。所以用的是建立方程组的方式,定义损失丞数,梯度下降。加上正则项,并约定都是正数,非负矩阵分解。

netflix的进一步优化,加上了物品偏置项,用户偏置项,平均偏执项(时间因素),这么三个偏置项。其思想和线性回归中的加上偏置项,避免所有回归线都只能通过原点一样。


1.推荐算法串讲_第4张图片

所以最后的数学模型多了三项。总之就是引入了更多能体现个性化的项。比如有的人就是偏激,就是打分低,有的就是慷慨,一律高分。有的电影就是垃圾,有的就是精品。群体在不同时段平均表现就不一样,比如双11全民疯狂。这就是三个偏置项的作用。

见netflix的效果对比。


1.推荐算法串讲_第5张图片
1.推荐算法串讲_第6张图片


wordtovec在推荐中的巧妙应用

可看作是基于上下文推荐

覆盖率比协同过滤高,即召回更多商品

把用户行为序列当做一个个单词去学习。

wtv是基于窗口学习的,它能学到男-女=国王-女王,能学到中国=美国,北京=纽约这样的知识。

这是一个典型的跨界巧妙应用。

你可能感兴趣的:(1.推荐算法串讲)