阿里音乐流行趋势预测大赛一起做-(3)思路
2016-05-17 22:32
567 查看
最近几个月忙着写论文,比赛给抛到脑后了(汗颜。。)。昨天阿里给了短信通知,说今天可以提交成绩了,于是抓紧搞起,结果也没赶上截止时间(早上10点)提交。无论如何今天也要提交一次成绩试试水。比赛的详细思路其实我也没怎么想好,有一些初步的想法和实践分享一下。
1、需要提交的结果如下:
要预测该表要求的60天数据,首先要将artist_id(表mars_tianchi_songs),Plays(表mars_tianchi_user_actions),Ds(表mars_tianchi_user_actions)统一到一个表中。
2、下一步就是,如何统一?
表mars_tianchi_songs和表mars_tianchi_user_actions有相同的一个列名就是song_id。所以可以将该列名作为key(键值)进行合并。这一步操作可以通过pandas (Python Data Analysis Library)中的merge函数实现。仔细观察后发现两个表的song_id行数不相等,不能直接合并,下一步就是对表做预处理使其能够合并。
3、如何对表做预处理?
歌曲艺人表mars_tianchi_songs是以10842首歌为index的,共有10843行(第一行为列名),基本不需要做预处理。该表部分内容如下:
用户行为表mars_tianchi_user_actions很大,接近500M,总共5652233行,所以必须做数据聚合。该表部分内容如下:
用户行为表有很多列,我们在此考虑最简单情况,只使用song_id, action_type, Ds三列。其中action_type中包含播放,下载和收藏三种情况,我们需要将该变量做成哑变量分离,也就是说最后自己处理后的用户行为表(暂且命名为my_user_actions)最后的列包含:
song_id, Ds, play_num, download_num, collect_num
其中后面的play_num, download_num, collect_num分别表示该song播放,下载和收藏的次数。然后表mars_tianchi_songs和表my_user_actions可以以song_id为key进行merge。假设merge后的表名为merge_data。那么该表内容应该如下:
到此已经非常接近于要提交结果的格式了。
4、下一步就是利用机器学习算法进行预测了。在此推荐先用时间序列分析相关算法。可以用python,R或者weka来做。
1、数据预处理阶段
该阶段推荐使用Python pandas,可以比较方便的实现数据清理、转换、合并等操作。推荐书籍《利用Python进行数据分析》。
2、算法预测阶段
目前还没有过多研究,感觉用R和weka比较方便。
1、阿里音乐流行趋势预测大赛,数据图像化模块函数
有代码,有图,赞一个!
github代码网址
2、样本数据50名艺人播放量折线图
在官方论坛的这里发布的,可以简单直观了解一下数据的样子,另外也可以和自己做的结果对比一下,保证自己不会出错。
思路
我的想法比较简单,就是先用最简单的方法做一下,提交一次成绩,让自己有参与感,然后在后续不断的迭代更新中提升自己。我们采用倒推方式,首先从提交结果出发开始分析:1、需要提交的结果如下:
要预测该表要求的60天数据,首先要将artist_id(表mars_tianchi_songs),Plays(表mars_tianchi_user_actions),Ds(表mars_tianchi_user_actions)统一到一个表中。
2、下一步就是,如何统一?
表mars_tianchi_songs和表mars_tianchi_user_actions有相同的一个列名就是song_id。所以可以将该列名作为key(键值)进行合并。这一步操作可以通过pandas (Python Data Analysis Library)中的merge函数实现。仔细观察后发现两个表的song_id行数不相等,不能直接合并,下一步就是对表做预处理使其能够合并。
3、如何对表做预处理?
歌曲艺人表mars_tianchi_songs是以10842首歌为index的,共有10843行(第一行为列名),基本不需要做预处理。该表部分内容如下:
用户行为表mars_tianchi_user_actions很大,接近500M,总共5652233行,所以必须做数据聚合。该表部分内容如下:
用户行为表有很多列,我们在此考虑最简单情况,只使用song_id, action_type, Ds三列。其中action_type中包含播放,下载和收藏三种情况,我们需要将该变量做成哑变量分离,也就是说最后自己处理后的用户行为表(暂且命名为my_user_actions)最后的列包含:
song_id, Ds, play_num, download_num, collect_num
其中后面的play_num, download_num, collect_num分别表示该song播放,下载和收藏的次数。然后表mars_tianchi_songs和表my_user_actions可以以song_id为key进行merge。假设merge后的表名为merge_data。那么该表内容应该如下:
到此已经非常接近于要提交结果的格式了。
4、下一步就是利用机器学习算法进行预测了。在此推荐先用时间序列分析相关算法。可以用python,R或者weka来做。
工具说明
不同的软件和语言各有其优势,以下是个人看法:1、数据预处理阶段
该阶段推荐使用Python pandas,可以比较方便的实现数据清理、转换、合并等操作。推荐书籍《利用Python进行数据分析》。
2、算法预测阶段
目前还没有过多研究,感觉用R和weka比较方便。
一些参考
论坛里有不少大牛给出了一些结果和参考代码,首先感谢这些无私的分享者,在此给出几个链接:1、阿里音乐流行趋势预测大赛,数据图像化模块函数
有代码,有图,赞一个!
github代码网址
2、样本数据50名艺人播放量折线图
在官方论坛的这里发布的,可以简单直观了解一下数据的样子,另外也可以和自己做的结果对比一下,保证自己不会出错。
结语
OK,以上就是我们团队的一个简单思路,希望对赛友有用,也希望各位大神能多交流分享思路。希望大家通过比赛能快速提升自己,取得好成绩!相关文章推荐
- 利用卷积神经网络(CNN)提取图像特征
- pandas使用
- 缓存总结
- 修改Eclipse的默认charset 为utf-8
- 爬虫学习笔记
- ==和equals扩展-->重写equals()和hashcode()
- 城市(地区)行政区划代码
- mysql数据库管理工具navicat for mysql怎么用
- R语言-变量的基本操作
- 编程随笔【2016年5月16日】
- Android学习笔记--《第一行代码Android》273页代码解密
- 第12周项目1:实现复数类中的运算符重载(1)
- 话说一个滴滴司机
- POJ 2110 Mountain Walking(二分+BFS)
- python range() 和xrange()的区别
- 查看SQL SERVER中指定数据库的每个表的数据量和每行记录所占用的空间
- B树、B-树、B+树、B*树
- 超出文本显示省略号(包括一行和多行)
- R语言基本操作函数(1)变量的基本操作
- Mybatis学习——关联表查询