阿里音乐流行趋势预测大赛一起做-(6)小结
最近一直在忙毕业的事情,比赛也落下不少。今天第一次切换了数据,在此对之前的工作做个简单的总结。感谢组委会岱月邀请我写自己的参赛经历,《天池小白成长记》在阿里的“天池大数据科研平台”上发布了,还是蛮激动的。好啦,进入正题!
扒一扒别人的方法
在论坛和QQ群里看到有部分同学透露自己的方法,我就顺道记下来啦,注:以下成绩均为6月7日切换数据前的成绩,评分时间大概在6月1日到6日之间
1、RNN(递归神经网络)
有位大神用RNN预测,不过收敛比较严重,加入了星期特征,成绩约6200。
这应该是一周前的成绩了,现在不知道怎么样了。喜欢神经网络的同学可以试试。
2、GBDT
有人放了星期、节假日、三日均值等特征,得分6350。
这个算法复赛平台里有,所以初赛复赛可以较好地衔接。
3、ARIMA
有几个人直接用的auto.arima,不过得分大不同。有人得分6200、6300,有人得分6455。有一个得分6459的同学给的提示是:用你能想到的一切的方法去切割数据集。不止50个数据集,还要对歌手近一步切割。
时序算法复赛平台里目前没有。
4、Random forest
有人得分得分6444,有人6483,也有人改进后提升到6518。
这个算法复赛平台里有。
5、小波包分解
有人对每天的播放人数进行小波分解(直接调Python包),分解3层以上,周期感觉很明显。按照艺人每天不同的播放人数,把趋势分解出来,剩下的是随机波动,有很明显的周期,7天左右。
我猜测该同学是信号处理专业的,有兴趣同学也可以试试傅里叶变换等信号处理算法,有可能独辟蹊径。
6、其他方法
有人滑动窗口取均值+规则,得分6400。有人聚类+规则得分6528。
这里的聚类我觉得应该是用户分类或者歌曲分类吧,细节没有透露。
在群里看到一位同学说的好:“现阶段大家多尝试尝试些新东西 ,就会发现玩着玩着就入门了,就有想法了,就变的厉害了, 这是我这阶段的收获。 “
不推荐的方法
之前试过不少方法,时间序列、回归里的多种模型,实际测试后发现某些方法想想挺美好,实际使用时却不合适(个人观点,也许是我做的不好,有兴趣的自己尝试,以免受我误导)。
1、曲线拟合
刚开始觉得每个歌手的播放曲线都有其趋势,比如上升,下降,平稳等,用曲线拟合应该可以很好的把趋势抓出来吧。
我选取了某一个歌手的播放量分别对最后一个月、最后两个月做了简单的拟合试验,曲线拟合Python代码如下:
# 对数据集做曲线拟合from pandas import Series, DataFrame
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt# import dataset
importdata = pd.read_csv('F:/AliMusicTianChi/data/2e14d32266ee6b4678595f8f50c369ac.csv')
#x = importdata['Ds']
x = np.linspace(1,183,183) #生成1到183的数
y = importdata['play_num']
x1 = x[-60:]
y1 = y[-60:]
x2 = x[-30:]
y2 = y[-30:]
z1 = np.polyfit(x1, y1, 1) #用1次多项式拟合,可更改为更高次
z2 = np.polyfit(x2, y2, 1)
p1 = np.poly1d(z1)
p2 = np.poly1d(z2)
y1new=p1(x1) #拟合值
y2new=p2(x2)
plt.figure()
plt.plot(x, y, '*-',label='original values')
plt.plot(x1, y1new, 'r*-',label='polyfit 2months')
plt.plot(x2, y2new, 'g*-',label='polyfit 1month')
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.legend()
plt.title('polyfitting-2e14d32266ee6b4678595f8f50c369ac')
predict_x = np.linspace(184,244,61)
predict_y1 = p1(predict_x)
predict_y2 = p2(predict_x)
plt.plot(predict_x, predict_y1, 'k*-',label='fit2months predict')
plt.plot(predict_x, predict_y2, 'b*-',label='fit1month predict')
plt.savefig('polyfitting1.png',dpi=400,bbox_inches='tight')
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
一次线性拟合结果如下图。
容易发现选取不同时间段的拟合结果差别很大,预测的结果趋势走向都不一样。那2次曲线拟合会不会好一点,我们把上述代码中的z1 = np.polyfit(x1, y1, 1)的最后一个参数1改为2,结果如下:
同样地,三次曲线拟合如下:
我们发现阶数高于2次后的曲线是完全发散,不可控的,而2次曲线和一次线性拟合对于时间段的选取和数据集的选取非常敏感,所以曲线拟合的想法只是想起来很美好而已。
另外,我还另外尝试了其他方法,如样条插值,效果都不理想。所以果断的放弃了该方法。
2、时间序列
刚开始我也是用时间序列在做,发现越做越难做下去。总结有如下几点:
1)时间序列在复赛平台上没有库。这点在“扒一扒”里也提到了,所以即使你时间序列运用的炉火纯青了,复赛没有支持的算法库调用也是很悲催的。除非你自己写,但是工作量非常大。
2)时间序列参数很难调。大部分人还是直接掉auto.arima省事,也有部分人自己研究参数的选取。以ARIMA为例,使用时需要用某种方法(差分、平滑等)将数据转换为适合它处理的平稳时间数据,这在很多时候是很难做到的。定阶、评价参数等都需要有一定时间的研究才能完全吃透。
3)工作量大。对每个歌手都要调出一个满意的参数和预测结果需要何等的时间和勇气啊!
推荐的方法
前面说了,时间序列方法不推荐(并不代表不可行),根据大家的讨论,大部分同学还是采用回归的方法来进行预测的。
回归方法相比时间序列方法还是有不少好处的:
1)不需要将数据处理成严格的时间序列形式,也不需要把数据变成平稳序列。
2)回归模型很多,常用的有LR,GBDT,XGBOOST,RF等。
3)可以方便的切入自己的特征。
但是也是有不少问题的:
1)一般的时间特征(星期、假日、月等)可以在预测集中得到,但是其他的特征比如下载量如何在预测集中得到?这是困扰大家的难题之一。
2)这么多模型,如何选取?这么多特征,如何选取?
推荐的思路
1、用户或者歌曲分类
去年资金预测的第一名的大熊就做了初步的用户分类,这也是他和其他几个团队相比的一个重要胜出因素。我觉得音乐预测也一样,这方面应该有搞头。
2、特征选取和挖掘
赛题中的数据给了很多,目前为止大部分的人还是只用了播放量这一个特征,其他的特征如果能很好地嵌入应该会有大幅度的提高。
3、不同的滑动窗口
不同曲线取不同的滑动窗口得到的结果差异是非常大的。这一点也可以深入一点挖。
4、数据预处理
是否需要去掉那些操作记录非常少的用户?是否需要平滑抖动非常大的曲线,这些工作也值得深入。
后记
好吧,就写到这里。写博客分享攒人品!我们队的成绩很久没有提升了,希望能早点突破!
阿里音乐流行趋势预测大赛一起做-(6)小结相关推荐
- 阿里音乐流行趋势预测大赛一起做-(3)思路
最近几个月忙着写论文,比赛给抛到脑后了(汗颜..).昨天阿里给了短信通知,说今天可以提交成绩了,于是抓紧搞起,结果也没赶上截止时间(早上10点)提交.无论如何今天也要提交一次成绩试试水.比赛的详细思路 ...
- 阿里音乐流行趋势预测大赛一起做-(1)介绍
动机 去年在同学推荐下参加了阿里的"资金流入流出预测大赛",当时对数据挖掘的了解仅存在模糊的概念上,看了那本<大数据时代>后热血沸腾了几天,趁着这三分钟热度还没冷,就在 ...
- 天池_阿里音乐流行趋势预测大赛(1) —— 赛题分析
本文以天池大数据竞赛的阿里音乐流行趋势预测大赛为背景,将机器学习实战的背景.模型.算法.代码和结果等都整理下来,放在博客中,算是对自己知识的整理吧,有兴趣的朋友也可以看看一起讨论学习. 由于很多比赛和 ...
- 天池阿里音乐流行趋势预测大赛--复赛
天池阿里音乐流行趋势预测大赛–复赛 ☛想要干货直接忽略这部分☚ 话说初赛我们三个人,最好的成绩也就做到了200名,当时真的不打算搞了,但是命运就是这么喜欢捉弄人,第二赛季一换数据,就到了第二名, 一看 ...
- 阿里音乐流行趋势预测-代码分享
向AI转型的程序员都关注了这个号
- D1-阿里音乐流行趋势预测竞赛数据清洗整合——纯python
赛题和数据 经过7年的发展与沉淀,目前阿里音乐拥有数百万的曲库资源,每天千万的用户活跃在平台上,拥有数亿人次的用户试听.收藏等行为.在原创艺人和作品方面,更是拥有数万的独立音乐人,每月上传上万个原创作 ...
- 网易云音乐与阿里音乐牵手!后版权时代,在线音乐拼什么?
在与TME(腾讯音乐娱乐集团)达成版权互相授权合作.拿下华研国际的全曲库授权后,今天网易云音乐在版权合作上再下一城. 网易云音乐与阿里音乐共同对外宣布,双方达成音乐版权互相转授权的合作.网易云音乐将天 ...
- 力挺2007年国内原创音乐届最权威大赛!
力挺2007年国内原创音乐届最权威大赛!<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office ...
- 阿里音乐打算用大数据发掘下一个TFboys
大数据时代,音乐界正迎来一场革命:下一首歌流行什么,听众说了算.昨天,记者从阿里音乐得到证实,阿里音乐正在开展一项尝试:将阿里音乐平台上的用户行为数据与社交网络数据.新闻资讯数据等结合,借助阿里云&q ...
最新文章
- 扛住100亿次请求?我们来试一试!
- docker搭建harbor私有镜像库
- 巴黎事件发生后,Facebook、Twitter、Google和Uber都做了什么?
- 大数据架构如何做到流批一体?【对于Flink等流批一体的概念做了很好的澄清!】
- 【转】蓝牙技术及其系统原理
- python使用kafka原理详解真实完整版_史上最详细Kafka原理总结
- 解决rabbitmq收到消息打印告警消息
- 【Vue.js 知识量化】vue-router 详解
- Sqlite 数据库出现database disk image is malformed报错的解决方法
- 【软件工程】三、软件开发方法学——结构化分析方法
- LOJ10068(BZOJ1977)(Luogu4180)
- hosts文件是什么? Windows、Mac、Linux的hosts文件在哪里?
- 网络管理-Pageadmin CMS构建企业网站的方法
- 银联权益信息API接口及管理平台解决方案相关介绍
- python修改文件内容_Python之文件处理-批量修改md文档内容-Go语言中文社区
- Xilinx Zynq-7000嵌入式系统设计与实现-电子书下载-pdf
- 服务器系统部署方案,系统部署方案.doc
- 数据结构基本概念和术语(数据、数据元素,数据对象,数据项)及举例描述
- Go 每日一库之 cron
- Recovery HBOOT SPL RADIO APP2SD 金卡