来源丨中科院物理所(ID:cas-iop)
作者 | 椒盐猫巨烦
有天午睡前,我像往常一样点开了我的日推。一首《La vie en rose》结束,我满足地准备睡觉。
突然,耳机里响起了有节奏的喵喵叫?
各位可以听一下这首喵喵歌。
我
往下一翻,我还看到了令我崩溃的其它类似歌曲。
网易云音乐的推荐歌曲
所以这个软件是怎么了?为什么要给我这样一个平时听玫瑰人生的高冷人儿推荐这些歌?
想把算法工程师打一顿的好奇的小编立刻决定起床,一定要把这件事搞清楚。
经过一番调查,我终于发现,电商平台、短视频平台等背后的一切都是类似的。一切都是因为它的推荐系统在作妖。
所以,这些软件到底是怎么给你推荐的?
以人为本
这套推荐系统最早来源于亚马逊。当时亚马逊的工程师们厌烦了复杂繁琐的人工推荐,就开发了这样一套系统来做自动购物推荐。
他们大致贯彻了一个原则——喜好相似的人和人之间有相似的消费模式。喜欢这个东西的人,倾向于也喜欢另一个。
这种算法叫做“协同过滤”,它会依据每个用户的历史数据来推荐其他相似用户曾经接触过的东西。
举个栗子:我和老王都喜欢a, b这两首歌,并且老王还喜欢c这首歌。那么,有比较大的概率我也会喜欢c这首歌。
协同过滤
我们可以在亚马逊看到“ 浏览此商品的顾客也同时浏览”
亚马逊网站的推荐
或
亚马逊网站的推荐
豆瓣搜索电影也常常会出现
豆瓣对电影的推荐
这样的推荐系统分析的是用户的口味之间的相似度。
我们可以把推荐系统想象成一个多维空间,存在很多个不同的标签,每个标签都是一个维度,我们可以把它想象成空间坐标的x, y, z轴。每首音乐都有一个或几个事先加好的标签。用户的感兴趣程度就作为该维度的坐标,比如切掉=-2,收藏=2,单曲循环=4等等。
于是,用户在系统的眼中就是空间中的一个点,也是由原点指向这个点的向量。不同的用户有不同的喜好,也就有了不同的空间坐标和向量。
听到这里,我知道你现在大概是这样的
举个栗子你就懂了。
假如我和老王都收藏过歌曲a和b,老王还单曲循环过歌曲c。歌曲a具有“纯音乐”的标签,歌曲b具有“钢琴”的标签,歌曲c具有“二次元”的标签。所以,在 (纯音乐,二次元,钢琴) 的三维坐标系中,我的向量是 (2,0,2),而老王的向量是 (2,4,2)。
假如这个时候又来了个小明,他的向量是(0,4,4)。求我与他俩之间的相似度?
按照“英雄所见略同”的常识,发展方向接近的人之间相似度较高。所以,我们可以用向量之间的夹角来衡量相似度。夹角越小,相似度越高。
相似度计算示意图
所以,现在问题变成了一道高中数学题:已知向量A、B、C,求三个向量之间的夹角。根据这个夹角,就能够算出你的口味是跟老王更接近还是跟小明更相似,然后根据跟你口味更相似的那个人的歌单,给你推荐歌曲。
听起来很不错,但仔细想想你就会发现,不管计算出来谁跟你更接近,你都有可能被推荐他们所钟爱的二次元歌曲。但从你以往的听歌历史上根本看不出你有二次元倾向啊。
而且,这样单纯而不做作的推荐算法在如今多元化的市场上是会水土不服的,在样本量比较小的情况下精度尤其低。小编就常常怀疑,音乐软件是不是悄悄把我的坐标挪到了“钢铁直男”们附近。不然它为什么老是给我推荐喵喵歌?我才不会承认我前一天收藏了一首小黄人的歌呢。
好在后来,程序猿们又开发出了一套基于内容的推荐系统。
内容为本
这套系统着眼于需要推荐的商品本身,不同的商品会有很多种不同的属性。比如音乐有流派、艺术家、歌词等属性,书籍有文体、出版社等属性,商品有用途、颜色等。
按照这些属性,我们可以计算两件商品的相似度。推荐系统会使用商品的不同属性作为不同的维度,构建一个属性空间。此时,每件物品就像前面的用户一样,成为算法的研究对象,拥有属于自己的坐标。算法会计算每件物品之间的距离或向量夹角,作为判断它们相似度的依据。
所以,在一定的方向上或一定的位置上,相似的商品会聚集在一起,也就是“ 物以类聚”。
相似的会聚集在一起
推荐算法认为,当你喜欢一个物品时,你会倾向于也喜欢同类型的其他物品。于是,当用户翻牌了其中一首歌,与它相似的那一堆歌曲很快就会亮起来然后被放进推荐中。
这个逻辑本身没毛病,但你会发现,这些音乐软件往往都把你想象成一个听歌口味异常专一、收藏歌曲异常慎重而且耐心异常充足的人。
但你知道,大多数人听歌心态都比较放松,态度也都比较宽松,并不会对于点红心这件事很慎重。这样导致的后果就是,推荐系统会对你的操作过度解读。一旦发生了过度解读的惨案,你的日推就会像脱缰的野马一样拥有一颗自由自在的灵魂。
小编就常常听到什么歌觉得还可以,就随便点了收藏,然后第二天崩溃地发现自己的日推画风突变了。
就在我收藏喵喵歌的第二天,它又给我推荐了欢乐斗地主的歌。天知道我点了多少次“ 不感兴趣”才脱离日推就此跑偏的深渊。
所以,如果把音乐比作星星,听歌比较杂的人恐怕经常被推荐整个宇宙。
现在的推荐系统智能多了
为了避免再出现这样蠢蠢的情况,现在的推荐算法一般都是以上“ 以人为本”和“内容为本”两种的结合。
它们对用户口味相似度和商品本身相似度的计算都会更加严格,会加上各种实际情况的限制条件,比如对用户对歌曲的喜好程度的分级:有的软件会采取 单曲循环>分享>评论>收藏>听完>切掉 的顺序,用户不同的操作意味着不同的权重,不同的软件分级策略不一样。
这些限制或附加的条件会让算法更合理,使用起来会让用户自作多情地认为“它懂我”。这就会大大提升用户体验,从而吸粉。
不仅是音乐软件,很多的电商平台、新闻推送软件,包括短视频平台等等,它们也都有着各自的一套复杂的推荐系统,其中不乏深度学习等看似高端的操作和标签二次过滤等。
虽然现在的个性化推荐系统已经发展得比较成熟了,推荐算法也都层出不穷花里胡哨,但因为人的喜好是复杂多变的,想要完全满足人类的需求还是很难。
总有那么些时候,你会发现,在你买了一双拖鞋甚至已经用了几个月后,某宝仍然能够源源不断持之以恒地给你推荐各种塑料拖鞋、布拖鞋、男士拖鞋、女士拖鞋。所以我是干了什么让它觉得我很缺拖鞋。
又有些时候,你突然想听一首歌,而却死活都想不起它的名字歌词和调调时,你也许会突然尝试听同类型歌曲,期盼软件能够把那首歌给你找出来。然而这个时候的推荐系统又常常get不了你的心意。
参考文献:
[1] 网易云音乐首次披露推荐算法: 让单身狗犹如过情人节的日推原来是这样生成的
[2] 让你上瘾的网易云音乐推荐算法,用Word2vec就可以实现
[3] 网易云音乐的歌单推荐算法是怎样的?
果壳
ID:Guokr42
整天不知道在科普些啥玩意儿的果壳
我觉得你应该关注一下
喜欢别忘了点在看哟↘️
1、头条易读遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2、本文内容来自“果壳网”微信公众号,文章版权归果壳网公众号所有。