周虹君 殷復蓮 陳怡婷 周嘉琪 伊成昱
【摘要】 本文針對協同過濾推薦算法中存在的矩陣稀疏問題,提出了基于聚類和矩陣分解的推薦算法,并結合隱式反饋信息構建的電視用戶收視偏好模型,將推薦算法應用有電視動畫受眾分群和推薦中。針對受眾分群和節目推薦所使用的聚類算法和推薦算法涉及大量的迭代計算的問題,采用了高效的分布式計算系統——Spark進行電視動畫節目推薦研究。該方法提高了推薦準確度,運行時間明顯減少,具有較強的可擴展性。
【關鍵詞】 Spark 受眾分群 矩陣分解 推薦 電視動畫 節目標簽
引言
推薦算法是目前應用較廣的數據挖掘技術,在學術研究和應用方面都得到了廣泛關注。Shihang H[1]在MapReduce上實現了對網絡服務的協同過濾推薦,而MapReduce并不擅長推薦算法的迭代計算;Jing M[2]構建了大規模的廣告推薦系統;Duo L[3]提出了基于統計模型的推薦方法,以解決協同過濾算法中的矩陣稀疏問題,并將其應用于用戶行為分析及推薦中;YiBo H[4]提出了基于聚類的協同過濾推薦算法,但其涉及的迭代式計算較多,致使無法實現較高的效率。Manda W[5]等人在Spark上實現了基于ALS模型的協同過濾推薦。結合以上研究以及存在的問題,文本利用Spark在內存計算和迭代計算上的優勢,提出了Spark框架下受眾分群及聚類分解的推薦算法,將其應用于廣電動畫節目受眾推薦研究中。本文使用隱式反饋信息構建“用戶-標簽”收視偏好模型,通過聚類劃分用戶簇實現受眾分群,然后使用矩陣分解的推薦算法針對不同的用戶簇進行推薦,可進一步降低矩陣的稀疏性。使用“用戶-標簽”收視偏好模型進行受眾分群,一方面可以通過標簽實現對用戶的肖像刻畫,另一方面可以使得各用戶簇的特性更加直觀。
一、用戶收視偏好模型
動畫節目受眾分群和推薦需基于用戶收視偏好模型,本文使用隱含在用戶與節目交互之中的隱式反饋信息構建該模型,包括二元數據(如用戶是否觀看了某個動畫節目)和計數數據(如用戶收看某動畫節目的收視時長、收看次數)[7]。
1.1“用戶-標簽”偏好模型
使用爬蟲技術獲取動畫節目標簽并與用戶收視數據結合,形成“用戶-標簽”基本模型,使用收視時長、節目播出時長重構出“用戶-標簽”偏好模型的特征——忠誠度和興趣度,構成“用戶-標簽”偏好集合:IL={L1,L2},L1、L2分別表示用戶對節目的忠誠度和興趣度。
忠誠度:某用戶收視含某標簽的節目總時長與含該標簽的節目播出總時長的關系,表征該用戶對某標簽的忠誠程度。如式所示:


原始的收視偏好矩陣很稀疏,通過矩陣分解可有效降低收視矩陣的稀疏程度[6]。矩陣分解的求解方法很多,常用方法有:最小二乘迭代法ALS和隨機梯度下降法SGD。
ALS模型中,對R≈PQT固定P求解Q,然后再固定Q求解P,重復交替這兩步直至算法收斂[5]。本文基于Spark分布式計算框架,因此采用更易于分布式計算的ALS算法。
2.2推薦算法的評價指標
為評價算法推薦的準確性,本文中采用一下評價指標:均方誤差MSE、均方根誤差RMSE、全局平均準確率MAP[7]。MSE表示評價數據的變化程度,其值越小,說明推薦模型描述實驗數據具有更好精確度,RMSE為其標準差。而MAP是基于排名的評價指標,其值越高說明推薦的節目越精準,節目的排位也更能滿足用戶。其具體定義分別如下式
三、實驗及結果分析
本文使用某省單月用戶收視作為實驗數據, 進行動畫節目核心受眾分群及其推薦。實驗在Linux上搭建Spark平臺,并使用Python API、Anaconda科學計算集成以及IPython Notebook作為IDE。
3.1“用戶-標簽”偏好模型的受眾分群
(1)Spark平臺下的K-means受眾分群
計算動畫節目受眾所投入的累計時長,取時長最長的70個動畫標簽進行降維處理,并構建“用戶-標簽”偏好矩陣。使用K-Means聚類實現用戶分群,本文將最大迭代次數設為100,確保算法達到收斂。由于聚類簇數K會影響最后的聚類效果,因此需要通過實驗來確定。目標函數WCSS是K-means聚類的內部評價指標,其數值可以表征聚類結果的誤差,其值越大,代表聚類的誤差越大。本實驗通過改變K值,綜合聚類效果及運行時間確定K的取值。實驗結果如圖1:
隨著K增大,目標函數WCSS數值降低,聚類效果越好,同時運行時間也增加。綜合不同K下的WCSS和運行時間,本文選擇K=8作為聚類的簇數,根據“用戶-標簽”偏好模型,將用戶劃分成8類。
使用節目標簽對分群后的各類簇用戶進行肖像刻畫。表3為各類簇前十個高頻核心標簽。如表,類1用戶偏愛冒險、國產動畫;類2用戶的興趣集中在益智和戰斗、冒險類動畫;類3用戶偏向親子和家庭類動畫,可預測其主要受眾為低齡兒童;類4用戶的興趣集中在輔導、音樂類及真人秀節目;類5用戶的標簽集中在搞笑和益智類;類6用戶的興趣度明顯集中在音樂、輔導等益智類的節目;類7用戶喜歡劇情、冒險、戰斗類的動畫;類8用戶偏向于游戲、綜藝等少兒類節目。

(2)不同平臺下受眾分群的對比
本實驗在Spark和R中使用K-menas對實驗數據進行聚類,并就其CPU占用時間進行對比。實驗結果如表4。使用Spark受眾分群的CPU占用時間比R少一個數量級,時間減少約80%,說明在迭代運算方面,Spark更有優勢。
3.2矩陣分解的協同過濾推薦算法
使用“用戶-節目”收視偏好模型,根據分群后結果,使用矩陣分解的協同過濾算法分別對各類用戶推薦,本實驗使用ALS進行矩陣分解。實驗將用戶的最大因子向量維度設為100維,最大迭代次數設為10次,收斂閾值設為0.01。
本實驗對某月收看動畫節目天數最多(29天)的機頂盒的用戶進行推薦,受眾分群后該用戶屬于用戶簇5,此類用戶偏愛冒險、奇幻、搞笑類動畫。推薦結果按照偏好評分取前50個節目。
(1)有無受眾分群的推薦結果比較
實驗中,分別對經過受眾分群的用戶和未分群的用戶進行節目推薦,預測出的評分表示用戶對該節目的偏好程度。為用戶ID=174294377推薦評分高的前十個節目,如表4:
可以看出,受眾分群后的推薦結果可挖掘到未分群推薦所忽略的節目,例如偏好評分較高的《熊出沒之叢林總動員》和《大風車》,未出現在無受眾分群的推薦列表中。因此,受眾分群的協同過濾推薦可以挖掘到更多更加滿足用戶收視偏好的節目。
(2)有無受眾分群的推薦結果、以及用戶原始偏好指數對比
表5顯示,矩陣分解的推薦算法在整體上表現都是優秀的,無論是有無進行受眾分群的推薦,都沒有較嚴重的誤差;另一方面,受眾分群后進行推薦相比于未分群進行節目推薦,更加接近用戶原始偏好指數,推薦結果的可信度更高。
(3)有無受眾分群的推薦結果評價指標對比
該實驗對全部用戶進行動畫節目推薦,分別計算兩個推薦方式的MSE、RMSE、MAPK、和運行時間,實驗結果如表6:
上圖顯示,經過受眾分群的推薦,其MSE和RMSE的值越低,說明節目推薦的準確度越高,其準確率提高了60%;另一方面MAP的值越高,說明就排名而言,受眾分群的推薦更接近用戶的偏好。從運行時間而言,該算法節省了50%的運行時間。
四、總結
本文基于分布式處理框架Spark,提出了基于聚類和矩陣分解的推薦算法,并結合隱式反饋信息構建的電視用戶收視偏好模型,將推薦算法應用有電視動畫受眾分群和推薦中。通過對高頻受眾進行有無受眾分群的推薦,對比驗證得出,基于受眾分群的節目推薦,可以挖掘出傳統推薦所忽視的節目,從個體上,提高了所推薦節目預測評分的準確性,從整體上,提高了推薦節目列表的排名準確度。該方法能夠明顯減少推薦時間并且提高推薦準確度,具有良好的可擴展性。
參 考 文 獻
[1] Shihang H,et al.Collaborative filtering of web service based on MapReduce[C]. ICSS.2014
[2] Jing M.A recommend system for modelling large-scale advertising[C].CCT.2014
[3] Duo L, et al. A NEW ITEM RECOMMEND ALGORITHM OF SPARSE DATA SET BASED ON USER BEHAVIOR ANALYZING[C].ICSP.2014
[4] YiBo H. An Item Based Collaborative Filtering Using Item Clustering Prediction[C].ISECS.2009
[5] Manda W, et al. Algorithmic Acceleration of Parallel ALS for Collaborative Filtering: Speeding up Distributed Big Data Recommendation in Spark[C].ICPADS.2015
[6] 鄭鳳飛,黃文培.基于Spark的矩陣分解推薦算法[J].中國機器學習會議.2015
[7] Nick P.Machine Learning with Spark[J]. Packt Publishing - ebooks Account.2014
[8]ZAHARIA M,et al.Resilient distributed datasets: a fault-tolerant abstraction for in-memory cluster computing[C].EECS.2011