开发者学堂课程【天池大赛算法教程及获奖选手答辩: 阿里音乐流行趋势预测—亚军答辩(一)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/389/detail/4994
阿里音乐流行趋势预测—亚军答辩(一)
目录:
一、 总体思路
二、 算法处理
三、 曾经的尝试
四、 建议
一、 总体思路
1.数据预处理
2.分类
3.预测
4.方法选择
5.预处理
具体解题思路是借鉴的标准的时间序列的分解思想,将我们的日播放量长期趋势,中期,以及随机干扰三项,但是在最终的那个算法当中,只对长期趋势进行预测,算法分为数据预处理,分类,预测,方法选择,预处理五个环节 。
以歌手为单位,对数据集进行预处理,依据编码,将所有选手进行编码,将所有的歌手进行分类,分为24个基本的类别,然后针对每一个类别选择是他的最优预测方法。最后为了提高分数,我们也对部分歌手做了附加处理。
预处理这里我们使用的是数加平台,在数加平台中执行SQL语句去完成的数据处理的结果,包括从样本集当中提取出的每个歌手的日播放量序列,周播放量均值序列,月播放量均值序列以及日变化率序列。
1. 日播放量序列
2. 周播放量均值序列
3. 月播放量均值序列
4. 日变化率序列
日变化率序列我们将用于最后的使用。日变化率序列我们将用于选择每个类别的最优预测方法。在此基础上,我们对歌手进行编码,编码包括月编码,周编码,我们进行编码的主要目的是大致判断歌手日周月播放量的一个变化趋势。
下面以月编码为例,编码是由基本趋势和增量趋势两部分组成的,基本编码增量趋势,若当月均值高于上月,则对应的那一位为1,否则为零 例如我们可以看到4月份的均值大于三月均值,那另一位对应的就是1,5月均值小于4月均值,对应值为0, 增量趋势其实代表一个变化幅度的大小,它的变化规则是,若月均值高于上月均值,当月均值除以上月均值取整,否则上月均值除以当月均值的结果取整。
例如,最后一位为无表示的是8月的均值与七月均值之间相差的是五倍以上。那么这个相差到底是增长了,还是下降了,我们从前面的基本趋势之间可以看到,综合基本趋势和增量趋势两个部分,我们可以知道8月均值是在7月均值基础上呈现一个大幅度的增长。
日编码和周编码都可以使用这个方法得到,那么建立编码之后 我们就可以建立分类规则。
我们建立分类,首先的是将播放量整体基本相似的歌手归为一类,我们将基本趋势后两个月连续上升的增量趋势最后一个月变化平稳的歌手分为一类,也就是第一类,将增量趋势最后一个月变化幅度较大的歌手分为一类。
在最初的时候,我们只分类了八个类别。在比赛过程中,我们对类别进行了不断的验证,序列化,变成了24个基本类别。
分好类之后,要把每个类别找到他们的最优预测值方法。我们寻找最优预测值的方法有两种,一种是类别最优值选择法与子序列模式匹配法。
1.类别最优值选择法
这个比赛要求我们对歌手60天的播放量进行一个预测,很难进行精确的预测,应该尽可能贴近9~10月份日播放量的均值水平。因此 我们选择最后的均值法以及运用百分位数进行预测的方法作为待选方法,组成候选预测方法集合。有了待选方法集合之后,针对每一类别的歌手选择最优预测方法。我们使用3~7月份的数据作为训练集,8月份的数据为测试集,便利待选预测方法集合,用当前选定的待选预测方法,得到8月份的预测值。
根据大赛给我们的评判公式,对8月份的预测值进行一个评分,最高时得到的便是我们对每一个歌手得到的最优预选方法。我们使用的最优预测选择方法,就可以计算这一类歌手9-10月份的日播放量。
选择最优预测值的另一种方法是,子序列模式匹配法。在第二赛季第二批数据集当中,我们通过对歌手的日编码周编码的增量模式发现,存在40多个歌手出现8月中下旬的日播放量突然成倍增长的情况。