郁偉生,鄧 偉,張 瑤,李蜀瑜,
(1.陜西師范大學網絡信息中心,陜西 西安 710119;2.陜西師范大學計算機科學學院,陜西 西安 710119)
音樂是反映人類現實生活情感的一種藝術,當下音樂的流行趨勢成為了眾人關注的話題。在如今的大數據時代,音樂聽眾將會決定音樂的流行趨勢。聽眾在眾多音樂平臺上試聽、下載、收藏、分享音樂,以及在各大社交網絡、視頻網站、貼吧、論壇上對音樂進行關注、評論、轉發、點贊,這些行為反映出聽眾對音樂的喜好。當今音樂的流行趨勢,可以通過對聽眾的喜好趨向進行深度挖掘和分析預測獲得。利用龐大的曲庫資源和用戶行為形成音樂大數據,通過精準的大數據分析,可以有效預測音樂的潮流走向,真正實現聽眾喜好的聚合決定音樂的流行發展趨勢。
阿里音樂經過7年發展,現已擁有了數百萬的曲庫資源,及數億次的用戶試聽、下載、收藏等行為。阿里舉辦的音樂流行趨勢預測大賽基于阿里云平臺強大的數據計算能力,通過用戶的歷史行為數據,預測下一階段藝人播放量,挖掘出即將成為關注熱點的藝人,從而準確把控未來音樂的流行趨勢。本文以大賽復賽提供的音樂用戶從2016年3月~8月的歷史播放數據為基礎,借鑒STL、Holt-Winters模型中的分解思想,分別從長期趨勢、周期兩個方面進行分析,對長期趨勢編碼和分類,并基于類別最優值選擇和子序列模式匹配法,提出了E-TSMP(Extend-Time Series based Music Prediction)算法,最終在阿里音樂平臺上實現了對2016年9月~10月藝人播放量較為準確的預測。
對音樂流行趨勢的預測可以采用時間序列、回歸等預測模型來實現[1 - 7]。Li[8]提出的自回歸積分滑動平均模型ARIMA(Auto Regressive Integrated Moving Average model),雖能很好地根據動態數據及自身的相關特征進行預測,但因ARIMA中差分次數d和p、q參數的選取不具備通用性,需對每個藝人數據預處理分類后逐一進行參數調整。Chatfield等[9]提出的三次指數平滑TOES(Three Order Exponential Smoothing)模型可以對同時含有趨勢和季節性的時間序列進行預測,但該模型對數據集和時間段的選取比較敏感,此外針對高于二階擬合的曲線會出現不可控的發散狀態。Cleveland等[10]提出的STL分解(Seasonal and Trend decomposition using Loess)模型雖兼具通用性和魯棒性,但只適合加法模型,且不能根據數據突然變化進行自動處理。Jain等[11]提出的遞歸神經網絡RNN(Recurrent Neural Network)雖可以根據之前的數據給出相應反饋,并采用非線性動力系統,但收斂性差,即使加入相應的特征,預測效果也不理想。
采用ARIMA等時間序列模型中標準的時間序列函數對每個藝人的日播放量曲線進行擬合和預測,若需要預測的日期較長,容易出現過擬合等問題。在大數據環境下,對音樂進行流行趨勢預測,應當對模型建立、算法設計、實驗優化等方面進行綜合考慮。
預測效果表示預測值和真實值之間的差距,通常定義一個打分函數來衡量預測效果。因此,阿里大賽給出相應的評估指標,用于判斷預測值的準確度。設藝人j在第h天的實際播放量為Dj,h,藝人集合為A,算法預測得到藝人j在第h天的播放量為Sj,h,則藝人j的歸一化方差σj可以根據藝人N天的實際播放量和預測值的方差求得:
歸一化方差σj反映了預測結果Sj和實際播放量Dj之間的差距,(1-σj)值越大,表示預測越精準。根據當前藝人j的每日實際播放量相加后的算術平方根求對應權重φj:
定義打分函數F:
*φj
并以此作為預測標準,F值越大,預測值越接近實際值。
在音樂的流行趨勢預測過程中,借鑒了STL、Holt-Winters模型中的分解思想,在類別最優值選擇法的基礎之上,提出TSMP(Time Series based Music Prediction)算法。為了實現對音樂流行趨勢更為精準的預測,基于子序列模式匹配法及對近期發布新專輯的附加處理,提出E-TSMP算法,針對2016年8月中下旬某些藝人的日播放量突然成倍增加的情況,有效地解決了該類情況下預測趨勢后續走向問題。
為了實現音樂更精準的流行趨勢預測,需要對每個時間序列分別從長期趨勢、周期、隨機干擾項三部分進行分析。因為隨機干擾項的不確定性,因此所有的研究都忽略了該部分。
阿里比賽提供了用戶行為信息和歌曲藝人信息,其中用戶行為信息記錄用戶對歌曲進行的播放、下載、收藏等操作,歌曲藝人信息包含歌曲專輯收錄時間、初始播放量、歌曲語言、歌曲類別等內容。只有在提供的眾多信息中提取出有效信息,才能更好地對數據進行分析,實現對每個藝人音樂播放量更為精準的預測。因此,把信息處理成每個藝人對應的日播放量序列、周播放量均值序列、月播放量均值序列及日變化率序列,對數據進行的預處理為TSMP算法的實現奠定了基礎。
在對每個藝人日播放量曲線進行擬合和預測的過程中,曲線趨勢發展成為了至關重要的問題,而重要的外部事件是影響曲線趨勢發展的一大關鍵因素,比如:預測期間藝人發布新專輯、開演唱會、參加選秀節目等。在排除外部事件干擾的前提下,計算每個藝人播放量的月平均值、周平均值、日平均值并進行編碼處理,這些編碼處理的均值可以作為每個藝人播放量趨勢的預測。定義基本趨勢和增量趨勢作為編碼規則,例如月度編碼:若當月播放量均值高于前一月均值,則基本趨勢對應的編碼值為1,否則為0;若當月播放量均值高于前一月均值,則以當月均值除以上月均值的商值取整作為增量趨勢編碼值,否則增量趨勢編碼值為上月均值除以當月均值的商值取整。具體編碼過程如圖1所示。

Figure 1 Coding method圖1 編碼方法
根據月編碼、周編碼、日編碼中的基本趨勢和增量趨勢兩部分,基于k-means聚類算法[12,13],最終將阿里提供的數據集劃分成24個基本類別。通過對不同類別進行大量測試與分析,最終采用類別最優值選擇法對不同類別的藝人進行日播放量預測。類別最優值選擇法的思想是:選取時間序列的某個特征值作為其預測值[14],例如百分位數、后3天均值、后7日均值等,構成的如圖2所示的候選方法預測集合用來選取特征值。

Figure 2 Candidate prediction method set based on eigenvalue圖2 基于特征值的候選預測方法集合
大多數藝人的時間序列相對比較平穩,實驗證明,若預測的天數較長,與波動性的曲線相比,均值的預測效果更好。采用3~7月數據作為訓練集,8月數據作為測試集,進行預測值的特征值選取,將打分函數F計算的結果作為依據,并進行最大化選取,以便做最優預測。
對任意類Ck,候選方法集為S={s(1),s(2),…,s(n)},最優預測方法的選取公式為:
s=

算法1類別最優值選擇算法COVSA(S,Dk1,Dk2)
輸入:S:候選方法預測集合;Dk1:類別Ck內所有藝人3~7月內日播放量序列(訓練集);Dk2:類別Ck內所有藝人8月內日播放量序列(驗證集)。
輸出:m:類別Ck的最優預測方法。
Begin
f←0;m←s(1);/*定義打分函數初始值為0,m為最優預測方法*/
Fors(i)∈Sdo//遍歷候選方法預測集合
S←Ss(i)};
P←s(i)(Dk1);/*對訓練集采用候選方法s(i)得到8月份類別Ck內所有藝人的預測集*/
fi←F(P,Dk2);/*計算采用候選方法s(i)后的分數fi*/
iffi>fthen/*分數fi比之前方法獲得的分數f高,重設s(i)作為最優預測方法*/
f←fi;
m←s(i);
end
end
Returnm;//輸出最優預測方法。
End

Figure 3 Classification rules圖3 分類規則
隨機選出類別Ck中3~8月藝人j的音樂播放量作為數據集,應用類別最優值選擇算法最終輸出類別Ck的最優預測方法m,對于類別k中的其他藝人,用其最優預測方法m預測9~10月份的日播放量。具體分類規則及對應最優預測方法如圖3所示。基于類別最優值選擇方法,提出了TSMP算法,實現了對9~10月藝人總播放量的預測,偽代碼如下所示:
算法2音樂流行趨勢預測算法TSMP(U,A,S)
輸入:U:3~8月用戶行為數據集合;A:藝人基本信息集合;S:候選預測方法集合。
輸出:P:9~10月所有藝人總播放量預測值。
Begin
P←0;//設初始預測值為0
(D,W,M)←Pre(U,A);/*把數據集U,A預處理為日、周、月播放量均值序列集D,W,M*/
(DT,WT,MT)←Cod(D,W,M);/*對數據集D,W,M進行日、周、月編碼形成編碼序列集DT,WT,MT*/
Ck←Sort(DT,WT,MT);/*采用k-means算法對DT,WT,MT進行劃分構成類別Ck,及與類別對應的日播放量序列集DCk*/
Forck∈Ckdo//遍歷分類集合
Ck←Ckck};
Pck←0;/*設類別ck中所有藝人9~10月總播放量初始值為0*/
m←COVSA(S,Dck);/*根據類ck內所有藝人日播放量序列Dck中3~8月的日播放量,由COVSA獲得類別ck最優預測方法m*/
Pck←m(Dck);/*預測類別ck中所有藝人9~10月總播放量Pck*/
P←P+Pck;
end
ReturnP;/*輸出9~10月所有藝人總播放量預測值*/
End
在阿里提供的3~8月份數據集里,通過分析周編碼、日編碼的增量趨勢部分發現,在8月中下旬部分藝人的播放量突然成倍增加,若對此類藝人繼續使用最優預測方法,最終預測結果與真實值偏差會較大。因此,借鑒其他藝人歷史數據中出現過的類似曲線,提出了子序列模式匹配法SSPMM(Sub-Sequence Pattern Matching Method),對該類別藝人的預測方法做了相應的改進。子序列模式匹配法思想是:首先計算所有藝人3~8月份歌曲播放量日變化率序列,根據觀察及大量實驗進行驗證,最終選擇截取待預測藝人最后15天的日變化率序列并作為待匹配子序列集 ,然后根據序列集中藝人的日變化率,找出與待匹配子序列集歐氏距離最小的5個子序列,選取其中后續子序列變化比較平穩的3個子序列作為最佳子序列, 最后求取最佳子序列的日變化率均值,作為待預測藝人的日變化率序列,計算出待預測藝人9~10月份的日播放量趨勢中回落后的平穩部分的預測值。在回落過程,采用n段梯度法求取回落過程中的預測值,第i個回落點的預測值為:
其中,d1為回落點藝人的日播放量,d2為預測藝人平穩點的預測值。子序列模式匹配法的具體實現過程如圖4所示。

Figure 4 Sub-sequence pattern matching method圖4 子序列模式匹配法
此外對部分類別的預測值做了附加處理AD(Additional Processing):針對近兩個月有新專輯的藝人,根據專輯的發布時間對時間做分段處理,依據以往發布專輯的藝人的播放量變化率,分別求取對應的權重因子α,對發布專輯后一段時間的日播放量的預測值的精確度做了相應提升,AD算法具體處理過程如圖5所示。

Figure 5 Additional processing圖5 附加處理
在對所有藝人播放量的時間序列進行周期性疊加的實驗中,預測效果并不理想。為了能得到良好的實驗效果,在預測所有藝人的播放量的實驗過程中,沒有考慮周期性的疊加。基于類別最優值選擇和子序列模式匹配法提出的E-TSMP算法,實現了對2016年9~10月藝人播放量更為精準的預測,偽代碼如下所示:
算法3擴展音樂流行趨勢預測算法E-TSMP(U,A,S)
輸入:U:3~8月用戶行為數據集合;A:藝人基本信息集合;S:候選預測方法集合。
輸出:P:9~10月所有藝人總播放量預測值。
Begin
P←0;//設初始預測值為0
(D,W,M)←Pre(U,A);/*把數據集U,A預處理為日、周、月播放量均值序列集D,W,M*/
(DT,WT,MT)←Cod(D,W,M);/*對數據集D,W,M進行日、周、月編碼形成編碼序列集DT,WT,MT*/
Ck←Sort(DT,WT,MT);/*采用k-means算法對DT,WT,MT進行劃分構成類別Ck,及與類別對應的日播放量序列集DCk*/
Forck∈Ckdo//遍歷分類集合
Ck←Ckck};
Pck←0;/*設類別ck中所有藝人9~10月總播放量初始值為0*/
m←COVSA(S,Dck);/*根據類ck內所有藝人日播放量序列Dck中3~8月的日播放量,由COVSA獲得類別ck最優預測方法m*/
Forckj∈ckdo//遍歷ck類所有藝人
ck←ckckj};
Pckj←0;/*設置ck類中藝人j在9~10月總播放量的初始預測值為0*/
if suddenly increase then/*藝人j在8月中下旬的播放量突然成倍增加*/
Pckj←SSPMM(Dckj);/*用子序列模式匹配法預測ck類中9~10月藝人j的總播放量*/
else
Pckj←m(Dckj);/*用m預測ck類中藝人j在9~10月的總播放量*/
end
if publish then/*若藝人j近兩個月發布新專輯,略提升發布專輯后的預測值*/
Pckj←AD(Pckj);/*采用AD算法,重新預測ck類中藝人j在9~10月的總播放量*/
end
Pck←Pck+Pckj;/*預測ck類中9~10月藝人j的總播放量*/
end
P←P+Pck;
end
ReturnP;/*輸出9~10月所有藝人總播放量預測值*/
End
本文以阿里比賽復賽提供的1 000位藝人10 842首歌曲,從2016年3月~8月的歷史播放量作為實驗數據,采用E-TSMP算法預測2016年9月~10月這1 000位藝人歌曲總播放量。基于阿里云的Map-Reduce框架,使用Java語言,實現E-TSMP算法。另外,使用Echarts實現報表的可視化,形象地展示藝人日播放量序列變化及預測值。在復賽中,參賽團隊憑借提出的E-TSMP算法獲得大賽第2名,大賽復賽排行榜如圖6所示。
在E-TSMP算法中的類別最優值選擇過程中,將均值及百分位數作為其預測方法集,而不是將波動曲線作為預測方法集,實驗表明本文方法對均值預測的效果更理想。如圖7分別采用后7天均值、后3天均值作為其特征值。

Figure 6 Competition ranking圖6 比賽排名

Figure 7 Experiment results of the category optimal value selection method圖7 采用類別最優值選擇法的實驗結果
針對8月中下旬某些藝人播放量突然成倍增加的情況,采用E-TSMP算法中的子序列模式匹配方法進行預測,如圖8所示,在回落的過程中,不同分段中預測值的變化以梯度回落方式來體現,為了對均值預測的精確度進行改進,使預測值更符合播放量的實際變化趨勢;根據處理后的3個最佳匹配子序列的樣本序列的變化率求得。

Figure 8 Experiment results of the sub-sequence pattern matching method圖8 采用子序列模式匹配法的實驗結果
通過對訓練集中的數據進行分析發現,當藝人有新專輯發布時,在隨后的20~30日內其播放量會有明顯的提升。針對9~10月有新專輯發布的藝人,在E-TSMP算法中對此類別的預測值做了附加處理。如圖9所示,藝人在9月有新專輯發布時,則對發布專輯后一段時間的日播放量有相應提升。

Figure 9 Experiment result of additional processing for releasing new album圖9 針對新發布專輯進行附加處理的實驗結果
在比賽期間曾對所有藝人做過周期性的判斷和疊加處理,采用周作為提取和疊加的周期,預測結果如圖10所示,疊加后導致評判分數有所下降,即降低了預測值與實際播放量的準確度,分析原因如下:
(1)周期性是根據每個藝人樣本集的時間序列的最后10周70天的日播放量進行提取的,提取出來的周期性在未來60天的預測結果中不一定存在。
(2)周期性是在預測趨勢的基礎上進行疊加的,若預測趨勢的偏差過大,進行周期性疊加的結果可能會適得其反。
故最終提出的E-TSMP算法未對所有藝人的預測值進行周期性的疊加。

Figure 10 Experiment result of periodic overlay圖10 周期性疊加的實驗結果
在大數據環境下針對音樂的流行趨勢預測,本文借鑒了STL、Holt-Winters模型中的分解思想,在基于類別最優值選擇和子序列模式匹配等方法 以及對藝人近期發布新專輯的附加處理的基礎之上,提出E-TSMP算法。基于阿里云的Map-Reduce框架,在阿里音樂平臺上實現了對2016年9月~10月藝人播放量較為準確的預測,并使用Echarts工具實現報表的可視化,直觀形象地展示了藝人日播放量序列變化及預測值。