中期报告
比赛要求是音乐播放量预测,给定的数据包括前6个月的用户行为表和歌曲艺人表,表的定义如下:
- 用户行为表
user_id | song_id | gmt_create | action_type | Ds |
---|---|---|---|---|
xxxxxxxxxx | sbgcvdkjdhhjjkjkh | 1426406400 | 1 | 20150315 |
- 歌曲艺人表
song_id | artist_id | publish_time | song_init_plays | Language | Gender |
---|---|---|---|---|---|
sbgcvdkjdhhjjh | xaxaxaxa | 20150325 | 0 | 100 | 1 |
- 需要提交的表格包含后两个月每个艺人的播放量预测:
artist_id | Plays | Ds |
---|---|---|
xaxaxaxa | 5000 | 20150325 |
数据处理过程中,因为不过多考虑用户行为,我们的做法就是先将给定的两个表格聚合,求出每个艺人在每一天的歌曲播放量、下载量、收藏量,然后利用这些数据作为预测的输入数据。
为了建立数据分析模型,我们对数据进行可视化分析: 比如对于歌手03c6699ea836decbc5c8fc2dbae7bd3b 我们绘制出了该歌手每一首歌曲的播放收藏和下载数据,然后计算了他所有歌曲183天的播放、下载、收藏和播放的100log值,如图所示: 同时绘制该歌手的粉丝数据如图所示: 如果把所有歌手的图放一块,我们可以发现,除了发布歌曲的节点外,多数变化具有周期性,而且收藏和下载比在一定程度上可以衡量一个歌手的发展潜力 现在的算法模型比较简单,用到的思想也就是简单的时间序列方法。
- 将前一段时间的数据求均值,作为后继的结果,然后移动窗口,再求均值
- 调整窗口的大小可以得到不同的结果,不断调整可以得到一个较好的结果
- 不同数据的波动性不同对结果的影响较大,我们旨在产生较为稳定的数据,所以方差小的窗口比大的好
- 下载量和收藏量数据也要利用起来
- 考虑去掉窗口中的最大值和最小值,增加结果的稳定性
算法伪代码
获得每个歌手183天内的所有歌曲的单天播放,收藏,下载数
对每个歌手最后多个窗口去掉最值的数据求方差
选择参数:播放下载比,为183天的收藏均值除以下载均值的结果
设置合适的窗口大小
while (60天数据没有生成完):
滑动窗口;
去最值;
计算均值 m;
m = m*h(播放下载比);#h()为关于播放下载比的一个函数,还在设计之中
设置m为当前播放量;
模型依然在改进中……