推荐算法之相似性推荐

前文介绍了协同过滤算法和基于内容的推荐算法

协同过滤算法要求要有很多用户,用户有很多操作

基于内容的推荐算法用户可以不用很多,但是用户的操作也要有很多

但是,如果要推荐给新用户(用户的操作不多),应该要怎样推荐呢?这里就要用到相似性推荐了


相似性推荐定义:对于新用户A,没有ta的历史行为数据,在ta点击了item-X的场景下,可以将与item-X最相似的item集合推荐给新用户A。

问题转化为,如何用一种通用的方法,表达item之间的相似性。


仍然以电影推荐为例子,相似性推荐算法执行步骤:

1.找到用户浏览过的某电影

2.定义这些电影的具体内容,假设我们以{导演,类型,男主,女主,男配,女配,地区,语言,时长}为维度来定义(这点跟基于内容的推荐算法一样)

3.对每个维度设立权值,并且对于同个key不同的value直接设置不同的分数(且称为相似度评分吧),例如:

我们认为,权值分配是{导演1,类型2,男主3,女主4,男配5,女配6,地区7,语言8,时长9}(维度后面跟的是权值)

假设用户浏览过的电影男主为男主1,而另一部电影,假设男主也是男主1,则男主项得10*3分;假设是男主2,则得8*3分;是男主3,则得5*3分,以此类推

具体的权值和值与值之间的分数可以自己定

4.基于步骤3,拿到分数最高的电影,即为要推荐的电影


具体再看一下

(1)找用户浏览过的电影,假设为电影A

(2)定义这些电影的具体内容,假设定为

{导演1,类型1,男主1,女主1,男配1,女配1,地区1,语言1,时长1}

(3)对每个维度设立权值,并且对于同个key不同的value直接设置不同的分数

为简单起见,假设我们所取的维度+权值为{导演1,类型2,男主3,女主4,男配5,女配6,地区7,语言8,时长9},

假设所有的维度里,满分都为10(即值相同记为10分)

类型1和类型2相似度评分为8分

类型1和类型3的相似度评分为2分

男主1和男主2的相似度评分为9分

男主1和男主3的相似度评分为8分

(4)拿到分数最高的电影

假设我们待推荐的电影只有2部(实际当然不可能),

电影B:{导演1,类型2,男主3,女主1,男配1,女配1,地区1,语言1,时长1}

电影C:{导演1,类型3,男主2,女主1,男配1,女配1,地区1,语言1,时长1}

电影B的推荐评分:1*10+2*8+3*8+4*10+5*10+6*10+7*10+8*10+9*10=440

电影C的推荐评分:1*10+2*2+3*9+4*10+5*10+6*10+7*10+8*10+9*10=431

电影B的推荐评分大于电影C的推荐评分,所以给用户推荐电影B


相似性推荐,原理大致如上,要说明的是:
(1)由于没有用户历史行为积累,不是个性化推荐,所以所有用户的推荐结果都是相同的
(2)一般来说,距离公式确实是线性的
(3)一般来说,每个维度的权重不一样
(4)这个线性公式,以及维度的权重,都可以通过机器学习训练出来


参考文章:http://mp.weixin.qq.com/s/KROc9G_kAs8_vquKQKJIFw




posted @ 2018-03-29 19:42  无名草110  阅读(1015)  评论(0编辑  收藏  举报