音乐推荐算法思考

音乐推荐算法:
核心点
1、找到口味相似的用户,把他们爱听的歌曲推荐给你;
2、找到你喜欢的歌曲类似的歌曲,把这个歌曲推荐给你。

1、第一个问题:

如何找到口味相似的用户?
通过大量的用户数据,对用户爱听的歌曲设置不同的权重,

单曲循环 分享 收藏 搜索 听完 没听过 跳过
5分 4分 3分 2分 1分 0分 -1分

以每个用户对所有歌曲作行为记录并打分,这个时候就存在一个问题,改用什么样的算法找出2个用户的口味近似呢?欧几里得距离(Euclidean distance)。欧几里得距离是用来计算2个向量之间的距离的。这里面有两个关键词,向量和距离。

阴天 十年 后来 平凡之路 夜空中的星 我们
小明 4 0 -1 1 0 3 5
小李 5 3 2 0 4 -1 0
小红 4 3 0 1 5 1 0
小海 2 3 1 5 5 -1 0

一维空间是一条线,我们用 1,2,3……这样单个的数,来表示一维空间中的某个位置;二维空间是一个面,我们用(1,3)(4,2)(2,2)……这样的两个数,来表示二维空间中的某个位置;三维空间是一个立体空间,我们用(1,3,5)(3,1,7)(2,4,3)……这样的三个数,来表示三维空间中的某个位置。一维、二维、三维应该都不难理解,那更高维中的某个位置该如何表示呢?

类比一维、二维、三维的表示方法,K 维空间中的某个位置,我们可以写作(X1, X2, X3,... XK)。)。这种表示方法就是向量(vector)。我们知道,二维、三维空间中,两个位置之间有距离的概念,类比到高纬空间,同样也有距离的概念,这就是我们说的两个向量之间的距离。

我们把每个用户对所有歌曲的喜爱程度,都用一个向量表示。我们计算出两个向量之间的欧几里得距离,作为两个用户的口味相似程度的度量。

2 、两外一个考量标准是基于相似歌曲的推荐

上面是相似用户的歌曲推荐,但是如果是一个新用户,我们还没有足够多的用户行为数据,这个时候该如何推荐呢?这个时候就可以根据相似歌曲作推荐,如果某首歌曲跟你喜爱的歌曲类似,我们就把它推荐给你。

那么问题来了,如何定义2首歌是类似的?
第一种思考,我们从歌曲的类型,伤感的、欢快的、摇滚的、乡村的、爱情的来分别打分,以这种方式来计算每首歌的欧几里得距离,这样可以判断出那些歌曲比较类似。
这种方式 对于有海量曲库的平台来说,计算量会非常大,而且人工分类的方式,有很多主观性在里面,会影响到推荐的准确性。

第二种,换一种思考模式,就是以用户对歌曲的评价来判定2首歌是否类似,对于2首歌,假如喜欢的用户都差不多,可以说明这2首歌比较类似。

小明 小李 晓红 小C KK 小王 阿哲
十年 4 0 -1 1 0 3 5
喜欢你 5 3 2 0 4 -1 0
平凡之路 4 3 0 1 5 1 0
国王与乞丐 2 3 1 5 5 -1 0

这个其实就是上面打分的倒置,只是从歌曲出发,以用户的评分为向量,通过向量来计算2首歌的欧几里距离,距离越小,说明这2首歌越类似。然后在用户喜欢的歌曲中,找出离这些歌欧几里得距离最小的歌曲(最类似)推荐给他。

你可能感兴趣的:(音乐推荐算法思考)