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计算特征向量xi∈R∣P∣
(xi)[v]=⎩⎪⎪⎨⎪⎪⎧∣T(v)∣α∣T(u)∩T(v)∣0list v contains i,else(1)
T(u)表示播放列表包含的所有音轨的集合,∣T(u)∩T(v)∣ 用来衡量两个播放列表的重复度,(xi)[v] 即为重复度占比。0≤α≤1 作为超参数。
音轨i和j的相似度定义为:
sij=∣P(i)∣β∣P(j)∣1−β(xi)Txj(2)
∣P(i)∣表示所有包含音轨i的播放列表集合,0≤β≤1 仍是一个超参数。该式就是余弦相似度的魔改,相比直接计算xi,xj的余弦相似度,因为分母只计算包含二者的集合,相当于去掉了噪声,
有了(2)式就可以很容易计算出,音轨i和一整个播放列表的相似度:
rui=∣T(u)∣1j∈T(u)∑sij(3)
这样给定一个播放列表u,给它延续的时候就可以利用rui给候选集排序。
仅利用播放列表的名字进行推荐,与协同过滤的思想类似,如果某个播放列表与给定播放列表u的名字相似,那么该播放列表中的音轨应该别推荐给延续播放列表u。在对比名字之前,需要对名字进行预处理,也就是分词,去停用词,提取词干这些操作。另外,作者用了n-gram来扩大匹配的可能。
sig=∣{u∣u∈P(i)}∣γ∣{u∣u∈P(i),g∈G(u)}∣(4)
类似的,可以计算一对音轨i和播放列表u的分数,
rui=∣G(u)∣1g∈G(u)∑sig(5)
Discriminative Reweighting
对(3)式进行修改,可以得到
rui=sui⋅[T(u)1,T(u)1,…,T(u)1]T(6)
可见在聚合时,权重都是相同的,因此,作者的重加权策略使用Sparse LInear Method(SLIM)的变体
Discriminative Reranking
从(2)式可以看出,音轨之间的相似度,完全依赖于他们的在播放列表中的共现。作者增加了更多特征,来考虑对推荐列表重排序。
- 类别特征:音轨的URI、唱片、艺术家
- word2vec特征,把每个音轨作为词、每个播放列表作为句子,做word2vec,但这仍然是音轨间的共现关系。
- python difflib 计算各种相似度
- MPD数据集的其他特征
构建这些特征后,将APC推荐看做二分类问题,给定一个音轨,判断它是否应该作为list的延续。作者使用了lightGBM,这一步就是打比赛常用的方法。
词汇
- discriminative adj.有判别力
- discriminatly adv.区别地
- a wealth of 很多的,大量的