标点符(钱魏 Way)

旁敲侧击豆瓣电台的推荐系统

豆瓣电台音乐推荐功能非常的智能,这样的推荐系统是如何创建起来的呢?下面是从知呼上趴下来的一些参考答案,转载到博客,以后自己慢慢消化。

豆瓣电台的私人电台会综合用户在豆瓣上的各种音乐行为做算法推荐。当然考虑最多的是电台本身的“红心”, “垃圾”, “跳过”这些数据。豆瓣FM糅合了包括算法、UI/UE、数据清洗与整合、音频分析技术、用户行为分析、编辑与运营、后台架构等等大量的因素,即便是推荐算法也只是算法技术中的一部分。单论推荐算法,就最简单的算法,也会极大地受到其它因素的影响,比如单曲推荐功能、新版的上线,对于算法的学习与积累都会起到极大的正面作用。

豆瓣电台可能的实现方式:

1、社交行为

在豆瓣音乐中,有哪些音乐标签,喜欢哪些歌手,在听哪些,想听哪些,乐评,豆列等等,即豆瓣音乐中提供的社会化网络行为,会有相关的权重算出一个公式,具体权重值暂时未知,其实也可以再进一步的猜,究竟哪些行为对用户听歌能产生更多的价值,权重值就高,否则次要。其实最开始的时候一定是一个最简单的算法,在进行一段时间数据根据和用户反馈后,有了更多的权重值累加。

2、听歌行为(重要因素)

主要是听歌过程中的,“红心”,“垃圾”,“跳过”

  • 红心:在以后的随机播放中出现的次数会增加;
  • 垃圾:以后说byebye;
  • 跳过:以后还会随机出现。

3、基于user-based或者item-based的推荐算法。

如果使用item-based的方式实现豆瓣推荐系统,那么可能的方式是:

  1. 豆瓣会计算和每首歌近似的歌曲集合,这个可以基于“用户歌曲矩阵”的传统方法,并依次作为核心数据,这个核心数据的更新频率并不需要很高。
  2. 豆瓣会为每个用户维护一个线性的播放列表。
  3. 每当用户对一首歌曲给出正向反馈,系统会取出与这首歌相似的歌曲列表中的几首,插入用户当前的播放列表。
  4. 如果一个用户给出负向反馈,系统会从这个列表中删除那些与这首歌相关性高的歌曲。(这一点有一些工作可以做,例如是删除同一个歌手的歌曲呢?还是曲风呢?或者是基于之前的核心库的相似歌曲列表呢?)

4、编辑人员推荐

在特定的时期对特定的人群发送特定的歌曲(一个例子是在大年初一听到的第一首歌是新年祝福相关的),在比如广告歌曲等,此部分的优先级比较高。

5、歌曲评分数据

一首歌的整体评分也可以用来决定后续推荐的音乐集合。

豆瓣电台可能使用到的策略:
  1. 豆瓣实现了自更新模块,主要依赖于内部的自动配置协议,能够动态的配置新算法或者一个算法的参数,同时分配一定比例的用户给一个新的推荐模块(也就是动态AB测试)。在进行评测之后,再自动的进行调整。
  2. 用户行文建模:豆瓣对一些典型的用户行为进行了特殊建模,如一些连续点击喜欢或者不喜欢的用户。
  3. 时间因素:豆瓣似乎会根据当前的时间来推荐不同的歌曲,例如在工作时间会倾向于推荐一些较为柔和的歌曲。
  4. 歌曲标签:豆瓣的歌曲会被打上标签,从而为推荐提供辅助信息。
  5. 用户聚类:豆瓣似乎使用了一些用户聚类的算法来提高算法的效率。

除了上面的一些方面,还有很多顺带的疑问会产生,比如豆瓣是如何确定每个人的播放次数的。最后,一个个性化产品跟传统的排行榜形式的推荐不一样的其中一个难点在于质量的覆盖面,它可以做到统计上逐渐逼近于让所有人满意的程度,但绝不是一个一蹴而就的工作,所以肯定还有大量不能令人满意的地方,但每天它都在向着更好的方向走。

码字很辛苦,转载请注明来自标点符《旁敲侧击豆瓣电台的推荐系统》

评论