推荐算法-向量

这里以推荐音乐为例

算法解析

实际上,要解决这个问题,并不需要特别高深的理论。解决思路的核心思想非常简单、直白,用两句话就能总结出来。

1.找到跟你口味偏好相似的用户,把他们爱听的歌曲推荐给你

2.找出跟你喜爱的歌曲特征相似的歌曲,把这些歌曲推荐给你


基于相似用户做推荐

我们可以通过用户的行为,来定义这个喜爱程度。我们给每个行为定义一个得分,得分越高表示喜爱程度越高,用户的行为通过app很容易得到


然后就可以得出用户用户对歌曲喜爱程度的对应表


有了这样一个用户对歌曲的喜爱程度的对应表之后,如何来判断两个用户是否口味相似呢

把这些值当做向量里的一维,那么小明的坐标为

(4,5,2,1,0,3,2,0,1,1)

自己的坐标为

(5,3,3,0,-1,2,5,4,1,-1)

其实就是一个10维空间的向量

计算上面2个向量的欧几里得距离既可以当做这2个人的喜好程度,距离越短,证明喜好越接近

所以要找出口味相似的,只要遍历计算欧几里得距离,然后取最小的那位用户

向量部分的知识可以参考:线性代数的本质


基于相似歌曲做推荐

如果用户是一个新用户,我们还没有收集到足够多的行为数据,这个时候该如何推荐呢?我们现在再来看另外一种推荐方法,基于相似歌曲的推荐方法,也就是说,如果某首歌曲跟你喜爱的歌曲相似,我们就把它推荐给你

最容易想到的是,我们对歌曲定义一些特征项,比如是伤感的还是愉快的,是摇滚还是民谣,是柔和的还是高亢的等等。类似基于相似用户的推荐方法,我们给每个歌曲的每个特征项打一个分数,这样每个歌曲就都对应一个特征项向量。我们可以基于这个特征项向量,来计算两个歌曲之间的欧几里得距离。欧几里得距离越小,表示两个歌曲的相似程度越大

但是上述做法需要的工作量太大

换一种思路,对于两首歌,如果喜欢听的人群都是差不多的,那侧面就可以反映出,这两首歌比较相似。如图所示,每个用户对歌曲有不同的喜爱程度,我们依旧通过上一个解决方案中定义得分的标准,来定义喜爱程度


通过这张表计算欧几里得距离,就可以得出歌曲之间的相似程度


摘录自 极客时间-数据结构与算法之美

上一篇: 朴素贝叶斯算法
下一篇: 无
作者邮箱: 203328517@qq.com