Automatic Music Playlist Continuation via Neighbor-based Collaborative Filtering and Discriminative Reweighting/Reranking

基本思想

本文的基本思想仍是基于KNN,计算两个播放列表的相似度,并利用更多可以tuning的超参数,并对结果进行重排、精排,达到的成绩也十分理想。

算法详解

Neighbor-based Collaborative Filtering for Binary Feedback

如果某个播放列表与给定播放列表u相似,且该播放列表包含音轨i,那么音轨i应该被推荐用来延续播放列表u,相似地,如果某个音轨与播放列表u已经包含的音轨相似,那么该音轨应该被推荐。这就是经典的协同过滤理论。
首先,为每个候选音轨i计算特征向量xiRPx_i\in \mathbb{R}^{|\mathcal{P}|}

(xi)[v]={T(u)T(v)T(v)αlist v contains i,0else(1) (x_i)_{[v]}=\left\{ \begin{aligned} &\frac{|\mathcal{T}(u)\cap \mathcal{T}(v)|}{|\mathcal{T}(v)|^\alpha} & list \ v \ contains \ i, \\ &0 & else\\ \end{aligned} \right. \tag{1}

T(u)\mathcal{T}(u)表示播放列表包含的所有音轨的集合,T(u)T(v)|\mathcal{T}(u)\cap \mathcal{T}(v)| 用来衡量两个播放列表的重复度,(xi)[v](x_i)_{[v]} 即为重复度占比。0α10 \leq \alpha \leq 1 作为超参数。

音轨i和j的相似度定义为:

sij=(xi)TxjP(i)βP(j)1β(2)s_{ij}=\frac{(x_i)^Tx_j}{|\mathcal{P}(i)|^\beta|\mathcal{P}(j)|^{1-\beta}} \tag{2}

P(i)|\mathcal{P}(i)|表示所有包含音轨i的播放列表集合,0β10 \leq \beta \leq 1 仍是一个超参数。该式就是余弦相似度的魔改,相比直接计算xix_ixjx_j的余弦相似度,因为分母只计算包含二者的集合,相当于去掉了噪声,

有了(2)(2)式就可以很容易计算出,音轨i和一整个播放列表的相似度:

rui=1T(u)jT(u)sij(3)r_{ui}=\frac{1}{|\mathcal{T}(u)|}\sum_{j\in \mathcal{T}(u)}s_{ij} \tag{3}

这样给定一个播放列表u,给它延续的时候就可以利用ruir_{ui}给候选集排序。

Recommendations with Only Title Information

仅利用播放列表的名字进行推荐,与协同过滤的思想类似,如果某个播放列表与给定播放列表u的名字相似,那么该播放列表中的音轨应该别推荐给延续播放列表u。在对比名字之前,需要对名字进行预处理,也就是分词,去停用词,提取词干这些操作。另外,作者用了n-gram来扩大匹配的可能。

sig={uuP(i),gG(u)}{uuP(i)}γ(4) s_{ig}=\frac{|\{u|u\in \mathcal{P}(i),g\in \mathcal{G}(u)\}|}{|\{u|u\in \mathcal{P}(i)\}|^\gamma} \tag{4}

类似的,可以计算一对音轨i和播放列表u的分数,
rui=1G(u)gG(u)sig(5) r_{ui}=\frac{1}{|\mathcal{G}(u)|}\sum_{g\in \mathcal{G}(u)}{s_{ig}} \tag{5}

Discriminative Reweighting

(3)(3)式进行修改,可以得到
rui=sui[1T(u),1T(u),,1T(u)]T(6)r_{ui}=s_{ui} \cdot [\frac{1}{\mathcal{T}(u)},\frac{1}{\mathcal{T}(u)},\ldots,\frac{1}{\mathcal{T}(u)}]^T \tag{6}
可见在聚合时,权重都是相同的,因此,作者的重加权策略使用Sparse LInear Method(SLIM)的变体

Discriminative Reranking

(2)(2)式可以看出,音轨之间的相似度,完全依赖于他们的在播放列表中的共现。作者增加了更多特征,来考虑对推荐列表重排序。

  • 类别特征:音轨的URI、唱片、艺术家
  • word2vec特征,把每个音轨作为词、每个播放列表作为句子,做word2vec,但这仍然是音轨间的共现关系。
  • python difflib 计算各种相似度
  • MPD数据集的其他特征
    构建这些特征后,将APC推荐看做二分类问题,给定一个音轨,判断它是否应该作为list的延续。作者使用了lightGBM,这一步就是打比赛常用的方法。

词汇

  • discriminative adj.有判别力
  • discriminatly adv.区别地
  • a wealth of 很多的,大量的