Kaggle[5] - Can you predict if a listener will love a new song?
2014-07-16 18:43
387 查看
比赛页面: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(就是和输入层和隐含层都有连接)
先来看看比赛提供了哪些数据呢?
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(就是和输入层和隐含层都有连接)
相关文章推荐
- 英国《卫报》:Can you predict who will love a song?
- the song you are hearing, the song you will love
- You will never understand love if you are always sane
- how can you see if an application program offers a function module exit
- 条款52:写了placement new 也要写placement delete(write placement delete if you write placement new)
- because I love you(song)
- iOS “[App] if we're in the real pre-commit handler we can't actually add any new fences due
- PLSQL result set exceeds the maximum size(100M)if necessary,you can explicitly confinue this query
- C++模板继承在g++编译中应注意的问题(if you use `-fpermissive', G++ will accept your code, but allowing the use ...)
- If you sleep now,you will have a dream. If you study now,you will achieve your dream.
- You will never walk alone ( YNWA——Song of Liverpool )
- iOS “[App] if we're in the real pre-commit handler we can't actually add any new fences due
- Excel 2007 Miracles Made Easy: Mr. Excel Reveals 25 Amazing Things You Can Do with the New Excel
- What you can change will be cheap ghd online
- It is said that wars in the 21st century will be fought over water. Do you agree? What do you think can be done now to alleviate
- CareerCup how will you test if the random number generator is generating actual random numbers
- I love you more than I can say
- If a file is locked, you can wait until the lock times out to redeploy, or s
- Spyder is already running. If you want to open a new instance, please pass to it the --new-instance
- Item 52: Write placement delete if you write placement new(Effective C++)