Kaggle[5] - Can you predict if a listener will love a new song?

比赛页面:http://www.kaggle.com/c/MusicHackathon

先来看看比赛提供了哪些数据呢?

train:

训练集有6个特征,如下: 


需要预测的就是Rating。(test就少了个rating)

words(包含的是user对每个artist的评价),特征有artist、user、heard_of、own_aritist_music、Like_Aritist、words_discription(最后一个特征是一个很长的向量word vector)

剩下的还有User和UserKey 都是对User的特征。

最后的评判标准是rating的RMSE。


先分析思路。

如果只看train这个数据集的话,就是一个推荐的问题(Collaborative Filtering,想想Netflix)。 一般的话可以用相似性(user-based、item-based)也可以用隐模型(latent model、SVD、Factorial Machine)。

如果加入了words和User的信息,那么会增加很多的特征。这个时候,如通过以rating为目标变量,讲train中(user,artist)对用words和User中的特征代替,那么又可以变成一个回归问题。

虽然我没有完全看过数据集,但是一般来说,在train/test中,并不是每一个(user,artist)都会在words中出现,因此,我们可以把出现的部分做成回归模型,而把整个train做一个CF模型(SVD、FM等)。


说完基本思路,先看看参赛者主要用到哪些方法,然后详细分析3rd的做法(http://mewo2.com/kaggle/2012/07/29/emi-music-hackathon---how-i-did-it/)

1. 回归模型。 看成回归模型的时候,有些人先做了特征选择(lasso), 有些则是针对每一个artist构建一个回归模型(artist较少,这一步据说对结果有一定帮助)。模型的话,包括gbm、Random Forest

2. Collaborative Filtering: 大部分人用的是latent factor model(也有item-based,效果一般)。主要用到SVD++(Netflix)和BiasdMatrixFactorization来做,工具用的是libFM。需要说的是,训练SVD的时候,貌似是用MCMC效果比较好。(大家可以思考下为什么?)

3. 取得比较好的结果是把上面两者结合起来。 就直接average。


最后看看3rd大神的做法。基本逃不出上面的套路。不过可以看得更具体些,从特征建立到模型探索。

由于words包含大量的NA数据,他的做法是一部分用mean/media填充,一部分是干脆自己把NA作为一个新的变量值(适用于categorical的特征)。

1. 把这些得到的特征,和train做融合后,直接放进RF/GBM/Linear Regression。 效果比较好的是RF。

2. 对每个artiest分别建立一个regression model。上面提到过。

3. SVD。 自己动手写了C版本,并且取了2个svd model - 一个latent factor多 一个latent fator少。

4.  Nearest Neighbor: 就是上面提到的user-based。

5. blending model: 用的神经网络做融合,输入是上面这些model,一层隐藏层(5个单元),输出层是skip-layer connections(就是和输入层和隐含层都有连接)



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值