开发者学堂课程【天池大赛算法教程及获奖选手答辩: 阿里音乐流行趋势预测—亚军答辩(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/389/detail/4994
阿里音乐流行趋势预测—亚军答辩(二)
2. 子序列模式匹配法
截取歌手的待匹配子序列
这类歌手的日播放量趋势与其他歌手相差很大,对他们的预测和对其他歌手的预测,方法可能是不一样。因此针对这一类歌手,我们选用了子序列模式匹配法,来进行预测。
方法的思想是通过对其他歌手样本数据中曾经出现过的类似曲线的学习,计算出预测歌手9~10月份播放量,回落到正常水平的日播放量。
具体分为三步,首先选择待测歌手最后15天日播放量的变化率序列从8月16~8月30开始匹配子序列。然后与其他歌手的历史数据进行比对,找出其他歌手历史数据中找出与这个子序列最匹配的五个子序列。
1.求最佳匹配子序列
子序列最佳匹配的示意图
红色表示的是待匹配的子序列,下面就是找到了与待匹配的子序列最匹配的子序列。
2.确定预测值
最后就可以确定预测值,从选择五个最佳优质匹配列当中,我们选取后续变化比较平稳的子序列,作为计算预测值的一个依据,根据三个日变化率子序列的均值,计算出待预测歌手的9~10月份的日播放量趋势。发现歌手的日播放量回落都是有一个过程的,不是突然而然,9~10月份成一个阶梯式的回落过程。
3.附加处理
最后为了提高分数,我们对部分歌手也做了附加处理。
一共分为了两类,第一类是对月播放量最高的歌手的处理,第二类是针对9~10月份有发布新专辑的歌手的处理。
如图为歌手日播放量均值的示例图,从图中可以清晰的看到,第一名歌手的播放量是其他歌手的若干倍以上,由大赛提供的预测公式可以知道,对日播放量越大的歌手预测的准确程度对分数的影响越大。
因此认为提高第一名歌手预测的准确度,是非常重要的。所以在已有预测值的基础上,用二分法对第一年歌手的预测值进行了多次调整。
通过对歌手的样本集发现,歌手发布新专辑,播放量会呈现急剧的增长。因此我们针对9~10月份有新专辑发布的歌手,据专辑发布的时间,将9~10月份进行分段。根据专辑中的歌曲数量,对发布时间后的预测值略作提升,用这个值作为我们最后的预测值。
二、算法处理
就是从样本集当中提取歌手的日 周月播放量序列与日变化率序列,根据序列计算歌手的日编码,周编码,月编码。根据这些编码将预测值进行分类,分为四个基本类别。
根据每一个类别选取最优预测方法。 同时我们对月播放量排名最高的歌手做了些特殊的处理,同时对9~10月份有新专辑发布的歌手做了一些特殊的处理。
最终形成我们所提交的结果集。
三、曾经的尝试
以上我们的总体思路的算法都不是一朝一夕形成的,都是通过一次一次的尝试。
比如在第一赛季,尝试使用过一些常见时间序列模型进行预测。当时使用这个模型的时候,效果不太理想,经过分析有以下两个原因。
1. 预测的日期数较常会出现过拟合问题
2. Arima 等时间序列模型的拟合依据于比赛的评判函数不同
尽管这些标准时间序列模型不适合此次比赛,认为他将时间序列进行分解的这个思路是可以借鉴的。在传统的方法之后,还有周期性的叠加这一项。在样本集当中,我们也发现部分歌手的日播放量与时间序列成明显的周期性。
第二赛季,我们对所有歌手的日播放量进行过一个周期性的判断与提取,并在长期判断的基础上进行叠加。
可是叠加之后的分数下降了两百多分,我们分析后出现这种情况的原因主要有两个。
1. 待预测的时间范围比较长,在样本集中,这种周期性未必会一直延续下去。
2. 趋势和预测的偏差比较大的话,叠加的效果会适得其反。
所以我们预测后,没有对周期性进行叠加。
随机干扰
周期性和趋势是时间序列中确定的因素,随机干扰是时间序列中不确定的因素,它对长时间段的预测是比较小的,而且我们没有很好的办法对随机干扰进行提取。
所以在预测过程中,忽略掉随机干扰这一项。此外,我们尝试过用户对歌曲的收藏量,下载量与播放量的相关数据 进行研究,他们呈现出很明显的正相关性,但是我们也没有很好的办法对他们进行进一步的处理,所以没有在这个思路上继续进行下去。
四、建议
截至目前为止,阿里巴巴已经举办过很多这样的大数据的比赛 在选手主要来自高校的学生和老师。因此,可以考虑用高校的实际背景来设计赛题,用高校学生所熟悉的范围,更能激发他们的参赛热情,推动大数据在高校方面的研究与应用。