什么原因能让网易云音乐每日有歌曲推荐?
你可能以为网易是用一天时间做一个大数据的计算,辛苦推荐出来。但是我今天做了一个试验。推荐的全是我平时不听的华语音乐。我全部点了不感兴趣。然后再点进去每日推荐,神奇的事情出现了,每日推荐又满了。再全部消掉,再点进去,又满了。说明网易的推荐其实是可以瞬间完成的,平时的每日推荐只不过是每天六点强制刷新一次。这三次推荐都是我不听的华语音乐。我开始寻找原因。原来红心里最新添加了几首华语歌。全部删掉,再点开推荐,就换风格了。重复这个操作,可以发现,推荐的歌曲并不是和红心的所有歌曲有关系,而是和最近红心的十首以内的歌曲有关。我没有测试具体数字。再试验另一个方面,我把所有红心删掉,这次没有推荐。我加上了一首金属音乐。这次下面出现几首金属音乐。上面出现的竟然都是我刚开始用网易音乐时期的推荐。我猜想网易有一个音乐库,无论喜欢的音乐是什么。在新手时期都可能推荐这个音乐库里面的音乐。重度用户会减少这个库的推荐。
关于推荐算法现在讨论的也很多,比较基本的两种是
collaborative filtering(CF) 和 content-based (CB)两种,整个推荐系统的核心我觉得就是找两个objects(可以是歌曲,可以是用户)之间的相似度。
大概意思就是说,CB就是根据用户自己提供的信息,比如建立账号时生日啊岁数啊喜好啊,还有你用了产品之后的一些操作,比如
CF则是基于一个前提,假设甲喜欢产品a, 乙也喜欢产品a,那么乙如果买了产品b并说好,那么甲也很有可能会觉得b不错,所以就推荐给你,当然真实操作肯定不会只用一个产品确定这种联系。这是简单的背景,如今很多公司,比如淘宝还是亚马逊,任何推荐算法本身都不可能只是单一的一种,一般都是复合型的(hybrid)。其实还有很多其他的推荐算法不过就不说了。假设你选定了一个算法,那么你就得用那个来量化相似度,因为有了量化的相似度,你才能排序,才能按照顺序从可能喜欢到最不可能喜欢推荐给用户。具体量化方法,欧几里得距离是比较简单和方便的那种。其实这个就是数学概念的矢量,可以有很多个dimensions,然后算数学距离。那么现在你有了这个排名,你得不断更新,因为不可能一下子就完全把用户的喜好口味抓住,你得通过长时间的使用让属于你的data更多,这样出来的结果也会更准确,这也是为啥你新注册账号,如果乱选或者喜欢的音乐差异较大,推荐的内容就比较不稳定。关于具体的实现,网易的我肯定不知道,不过我想如果你真想自己做一个,写好这个之后租一个服务器,定时跑一次就可以了,大部分创业公司都是这样。ps. 我听音乐怕毁了推荐内容,所以是网易云和apple music一起用,一个专门听古典一个听其他,不知道是不是强迫症,反正我觉得音乐种类在算法中的权重应该是相当重的。