天天看點

2016中國高校計算機大賽——大資料挑戰賽亞軍:陝西師範大學團隊

2016中國高校計算機大賽大資料挑戰賽上,陝西師範大學網路資訊中心團隊對阿裡音樂流行趨勢預測進行了自己的成果展示。首先從解題思路開始談起,重點對算法進行了闡述,包括類别最優值選擇法和子序列模式比對法,最後對比賽中遇到的問題進行了總結。一起來了解下。

總體思路

2016中國高校計算機大賽——大資料挑戰賽亞軍:陝西師範大學團隊

陝西師範大學的同學們采用了标準時間序列的分解思想,将日播放量分解為長期趨勢、中期與随機幹擾三項,但在最終的算法當中,隻對長期趨勢進行了預測,我們的算法分為資料預處理、編碼、分類、預測方法選擇和附加處理五個環節,整體來講是以歌手為機關,對資料集進行預處理,根據預處理結果對歌手進行編碼,依據編碼将所有歌手進行分類,分為24個基本類别,針對每一個類别選擇出它的最優預測方法,最後為了提高分數,我們也對部分歌手做了附加處理。

算法闡述

預處理部分,我們采用數加平台,在數加平台中建立sql節點,執行sql語句完成的資料預處理的結果,包括從樣本中提取的每個歌手的日播放量序列、周播放量均值序列、月播放量均值序列、日變化率序列等,前三個序列将在編碼中使用,日變化量序列用于選擇每個類别的最優預測方法,在此基礎上對歌手進行編碼。

<b>編碼方法</b><b></b>

2016中國高校計算機大賽——大資料挑戰賽亞軍:陝西師範大學團隊

編碼包括月編碼、周編碼與日編碼,進行編碼的主要目的是大緻的判斷歌手日周月播放量的變化趨勢,以月編碼為例,編碼是以基本趨勢和增量趨勢兩部分組成的,基本趨勢的編碼規則是當月均值高于前一個月均值,則為“1”,否則為“0”,例如,4月份的均值大于三月份的均值,那一位就為1,5月份均值小于4月份均值,對應位為0;增量趨勢代表變化幅度的大小,它的編碼規則是若當月均值高于前一月,則當月均值除以上月均值的結果取整,否則上月均值除以當月均值的結果取整,例如,最後一位為5,表示的是8月均值與7月均值相差5倍以上,到底是增長還是下降,我們從前面基本趨勢可以得出結果,綜合基本趨勢和增量趨勢兩個部分,就可以知道8月均值在7月均值上正向一個大幅度的增長。同樣地,日編碼和周編碼都可以使用這個方法得到。

<b>分類</b><b></b>

根據月編碼、周編碼、日編碼的基本趨勢和增量趨勢部分對歌手進行分類,最終分為24個基本類别。

2016中國高校計算機大賽——大資料挑戰賽亞軍:陝西師範大學團隊

進行分類的主要目的是将播放量變化總體趨勢相似的歌手歸為一類,例如,将基本趨勢的後兩個月連續上升的、增量趨勢最後一個月變化平穩的歌手歸為第一類,将增量趨勢最後一個月大幅度增加的歌手歸為一類,最初隻分為8個類别,在比賽進行的過程中我們對類别進行了不斷的驗證與細化,最後形成了24個基本類别。

<b>預測方法選擇</b><b></b>

對歌手分類好後,就需要對每個類别找到它的最優預測方法。尋找最優預測值的方法有兩種:

<b>類别最優值選擇法</b>

2016中國高校計算機大賽——大資料挑戰賽亞軍:陝西師範大學團隊

對歌手60天的日播放量進行預測,很難進行精确預測,應該盡可能預測9到10月份的日播放量的均值水準,是以選用最後三天均值法、最後一個月均值法以及各類使用百分位數作為預測值的方法等作為待選預測方法的集合。

2016中國高校計算機大賽——大資料挑戰賽亞軍:陝西師範大學團隊

有了待選方法集之後,就要針對每一類别的歌手評判他的最優預測方法,使用3到7月的資料作為訓練集,8月份的資料為測試集,周遊待選預測方法集合,用目前標明的待選預測方法計算八月份的預測值,根據大賽提供給我們的評判公式,我們對8月份預測值進行評分,得分最高時對應的方法正是我們要求的這一類别歌手的最優預測方法,使用最優預測方法就可以計算這一類别歌手9到10月份的日播放量。

<b>子序列模式比對法</b>

在第二賽季第二批資料集當中,通過對歌手的日編碼、周編碼的增量趨勢部分檢視發現,存在40多位歌手8月中下旬的日播放量突然成倍增長的情況,這部分歌手的日播放量趨勢與其他歌手的相差很大,我們認為對這部分歌手的預測要采取不一樣的方法,是以,針對這一類歌手,我們采用子序列模式比對法來進行預測,這種方法是通過對其他歌手樣本資料中曾經出現過的類似曲線的學習,

計算出待預測歌手9-10月份日播放量回落到正常水準的預測值。具體來講分為以下三步:

截取歌手的待比對子序列:截取待預測的歌手最後15天的日變化率序列;

求最佳比對子序列:在其他歌手的日變化率序列中找出歐式距離最小的5個子序列;

2016中國高校計算機大賽——大資料挑戰賽亞軍:陝西師範大學團隊

确定預測值:從選出的五個最佳比對子序列中選取後續變化比較平穩的三個子序列作為計算預測值的依據。

2016中國高校計算機大賽——大資料挑戰賽亞軍:陝西師範大學團隊

對選出的3個子序列比對結束後的樣本序列的變化率進行處理,計算出待預測歌手的9、10月份的日播放量趨勢。我們發現歌手的日播放量回落一般是需要一個過程的,不是一下子回落到水準狀态的,是以我們做了分段下降處理,使9到10月份呈現一個階梯式的回落過程。

2016中國高校計算機大賽——大資料挑戰賽亞軍:陝西師範大學團隊

<b>附加處理</b>

對top1歌手的處理:

2016中國高校計算機大賽——大資料挑戰賽亞軍:陝西師範大學團隊

上圖為歌手月播放量均值的示意圖,從圖中可以明顯看到,第一名歌手的播放量是其他歌手的若幹倍,由大賽提供的評判公式可以知道,對日播放量越大的歌手預測的準确程度對分數的影響越大,是以我們認為,提高第一名歌手的預測準确度是非常重要的,是以在已有預測值的基礎上根據二分法對第一名歌手的預測值進行了多次調整,最後提高了600多分。

釋出新專輯:根據專輯釋出時間,以釋出時間為分割點對9-10月份進行分段,根據專輯中的歌曲數量,對釋出時間後的預測值略作提升,用這個值作為最後的預測值。

2016中國高校計算機大賽——大資料挑戰賽亞軍:陝西師範大學團隊

總的來說,我們是從樣本集中提取出每個歌手的日、周、月播放量序列和日變化率序列,根據這些序列對每個歌手進行日編碼、月編碼與周編碼,根據編碼将所有歌曲分為24個基本類别,然後對每個類别選用它的最優預測方法,同時對月播放量最高歌手和有新專輯釋出歌手做了特殊處理,形成最終送出的結果集。

曾經的嘗試

我們的算法不是一朝一夕形成的,也邁過了很多的坎坷。比如:

我們嘗試過使用常見時間序列模型( arima、stl、holt-winters)進行預測,但由于預測的日期數較長,會出現過拟合問題;而且,arima等時間序列模型的拟合依據與比賽的評判函數不同。

我們也對所有日播放量歌手序列進行過周期性判斷,但由于待預測的時間範圍較長,樣本集中的周期性未必會延續下去;趨勢預測的偏差過大會導緻疊加周期性後的效果适得其反。

周期性與趨勢是随機序列中的确定性因素,随機幹擾是時間序列中的不确定因素,它對長時間的預測擾動是比較小的,而且,我們也沒有很好的辦法地随機幹擾進行提取,是以我們忽略了随機幹擾。此外,我們也嘗試過使用者對歌曲的收藏量、下載下傳量和播放量的相關性進行過研究。

繼續閱讀