EMI Music Data Science Hackathon冠军团队的技术报告

摘要

这篇报告描述了2012EMI音乐数据科学Hackathon中排名第一的盛大创新院的音乐推荐算法思路。他们使用了分解机器(大致看了下好像就是矩阵分解模型)和线性回归来融合大量特征。他们使用了用户的年龄,性别,工作状态,地区等其他用户资料来对用户兴趣进行建模。他们还融合了用户对EMI音乐家的描述来提升预测精度。此外,他们使用了一种简单的集成方法和后处理策略来合成两个不同的预测器,以生成最终的结果。

引言

  与传统推荐问题如Netflix竞赛相比,EMI的数据竞赛的复杂程度表现在两个方面:(1)用户和产品(音乐家)都有更为丰富的特征。例如在Words.csv中,用户对一些问题的回答表明了他们对EMI音乐家的熟悉度;此外用户还可以选择一些词来描述这些音乐家(类似于标签)(2)用户资料更为丰富,如年龄,性别,地区(这里选择的是英国的数据),工作的状态,听歌习惯(一些答案可以)。因此我们需要可以有效融合不同特征的模型,同样需要对这些特征进行有效的预处理。
  本文使用了Factorization Machine和线性回归的方法。我们从训练数据中抽取了不同的特征融合到模型中。在对不同的特征预处理,使用一种基于随机梯度下降的训练框架来优化模型。我们构建了两种模型分别不同的特征的重要性,还使用了一种线性组合的方法集成这两个模型,使用后处理的策略以获得更高的精度。
  本文结构如下:第二节介绍了我们使用的预处理方法,如何生成测试数据集;第三节提出了最终的模型;第四节和第五节提出了集成方法和后处理方法。

预处理方法

words.csv

  这个表主要描述用户对音乐家的看法。团队用预处理手段将表征用户偏好转到[0,1]区间上。
  首先合并“Good lyrics”栏目。
  将“Like_Artist”栏映射到[0,1]区间内(除以100),删除所有缺失值。
  “Heard_of”和“Own_artitist_music”栏目转换为离散值:如果用户给某个答案给了对应答案,将其转换为1。

用户

  这个表是用户的个人文档,包括他们对音乐的态度。
  对于音乐习惯问题,我们报了所有有效的评价,并将它们转换为[0,1]区间内。
  对于年龄栏,保留所有有效值。
  对于剩下的栏目,如“性别”,“工作”等将这些值转为离散值。

生成测试数据集

  将train.csv按照75/25的比例随机分成训练集和测试集。在训练集上训练模型,在测试集上测试。

模型

  符号 我们用 U 表示用户集合,I表示音乐集合(下文称之为产品)。用户数量和产品分别用 |U| |I| 表示。用户和产品分别用 u i表示, rui 表示用户 u 对产品i的偏好。所有评分构成一个 |U|×|I| 的评分矩阵 R 。评分矩阵所有用户-产品评分集合数量为K

分解模型

  有用户偏差和产品偏差的基准SVD模型定义如下:

r^ui=bui+qTipu(1)

其中 pu 是一个d维的用户特征向量, qi 是一个产品特征向量。d是预先设置的参数。偏差特征 bui 定义如下:
bui=μ+bu+bi(2)

在该公式中,参数 μ 大表整体评分均值, bu bi 分别表示用户和产品的评分偏差。这些参数可以通过求解下式得到:
minp,q,b(u,i)K(ruibuiqTipu)2+λ1pu2+λ2qi2+λ3b2u+λ4b2i(3)

模型学习方法

  随机梯度下降(SGD)是求解优化问题的有效方法。我们将预测误差表示为 eui 。SGD基于下列方程更新参数:

bubu+η(euiλ1bu)bibi+η(euiλ2bi)qiqi+η(euipuλ3qi)pupu+η(euiqiλ4pu)

线性回归

  在统计学中,线性回归是对自变量X和因变量Y进行建模的方法。在线性回归中,我们使用线性预测函数对数据进行建模,从数据中估计出未知的模型参数。
  这里我们使用线性回归方法整合用户信息和用户对音乐家的描述,然后我们可以将矩阵分解模型的预测值和线性回归的预测值进行结合以更好地建模。

r^ui=bui+yui+qTipu(4)

$y_{ui}用下式定义:

yui=kβk×Xkui(5)

其中 {Xkui} 是words.csv和users.csv转换而来的特征值。
  对于离散值, Xkui 要么为0,要么为1,如”性别”,”工作”;对于连续值如”like artist”和很多用户的习惯问题, Xkui 将被转换为0-1之间的连续值。对于年龄这一特征,我们将”age”属性上对应的值x转为一个新的值
  
ageu={36floor(x/2)if x>=72,if 0<x<72.

  将等于36 的 Xkui 的值设为1。
  参数 βi 通过调整SGD更新过程学习(3.2)得到,对于每步,我们加上:
βkβk+η(euiXkuiλ5βk),βk

集成

  我们对两个模型的预测结果进行简单的求和平均。

后处理

  该任务是预测用户有多大可能喜欢一首音乐。评分范围在[0,100]之间,所以如果我们的模型少于0或者大于100应该将其重新放到0-100之间。
  对于每个用户,我们要减少预测评分与训练数据的评分分布的偏差。对于用户 u ,我们发现训练数据中最小评分为su,最大评分为 lu 。那么预测评分 rui 转换为

r^ui=r^ui0.7+su0.3r^ui0.7+lu0.3r^uiif r^ui<su5if r^ui>lu+5otherwise

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Data Hackathon 3.x是一种数据驱动型的编程比赛,旨在为参赛者提供一个展示他们在数据分析和机器学习方面技能的平台。这个比赛涉及到大量的数据处理和建模任务,参赛者需要利用给定的数据集来开发和优化模型,以解决一个特定的问题或挑战。 Data Hackathon 3.x的目的是通过实践应用数据科学的技术和方法,提供一个学习和提升技能的机会。参赛者将会面对真实世界的数据,并通过分析、探索和挖掘数据来获得洞见。他们需要运用统计学、机器学习和数据可视化等技术工具,来解决给定的问题,并建立一个有用的模型。 在比赛中,参赛者需要展示他们在数据处理和分析方面的能力,包括数据清洗、特征选择、特征工程和模型评估等。他们还需要有效地使用统计和机器学习算法,以及开发和优化模型的技巧。 比赛通常会设定一定的时间限制,以模拟现实世界中的挑战。参赛者需要在有限的时间内快速迭代和改进他们的模型,以获得更好的性能和结果。 Data Hackathon 3.x是一个创新和协作的过程,参赛者可以借此与其他数据科学家和专家进行互动,分享和学习最佳实践,拓宽自己的视野。 在这个比赛中,数据科学家们有机会展示他们的技术和创造力,在解决现实问题方面产生积极的影响。通过参与Data Hackathon 3.x,他们可以提高自己在数据分析和机器学习领域的技能,并有机会获取奖励和认可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值