周虹君 殷復(fù)蓮 陳怡婷 周嘉琪 伊成昱
【摘要】 本文針對協(xié)同過濾推薦算法中存在的矩陣稀疏問題,提出了基于聚類和矩陣分解的推薦算法,并結(jié)合隱式反饋信息構(gòu)建的電視用戶收視偏好模型,將推薦算法應(yīng)用有電視動畫受眾分群和推薦中。針對受眾分群和節(jié)目推薦所使用的聚類算法和推薦算法涉及大量的迭代計算的問題,采用了高效的分布式計算系統(tǒng)——Spark進行電視動畫節(jié)目推薦研究。該方法提高了推薦準(zhǔn)確度,運行時間明顯減少,具有較強的可擴展性。
【關(guān)鍵詞】 Spark 受眾分群 矩陣分解 推薦 電視動畫 節(jié)目標(biāo)簽
引言
推薦算法是目前應(yīng)用較廣的數(shù)據(jù)挖掘技術(shù),在學(xué)術(shù)研究和應(yīng)用方面都得到了廣泛關(guān)注。Shihang H[1]在MapReduce上實現(xiàn)了對網(wǎng)絡(luò)服務(wù)的協(xié)同過濾推薦,而MapReduce并不擅長推薦算法的迭代計算;Jing M[2]構(gòu)建了大規(guī)模的廣告推薦系統(tǒng);Duo L[3]提出了基于統(tǒng)計模型的推薦方法,以解決協(xié)同過濾算法中的矩陣稀疏問題,并將其應(yīng)用于用戶行為分析及推薦中;YiBo H[4]提出了基于聚類的協(xié)同過濾推薦算法,但其涉及的迭代式計算較多,致使無法實現(xiàn)較高的效率。Manda W[5]等人在Spark上實現(xiàn)了基于ALS模型的協(xié)同過濾推薦。結(jié)合以上研究以及存在的問題,文本利用Spark在內(nèi)存計算和迭代計算上的優(yōu)勢,提出了Spark框架下受眾分群及聚類分解的推薦算法,將其應(yīng)用于廣電動畫節(jié)目受眾推薦研究中。本文使用隱式反饋信息構(gòu)建“用戶-標(biāo)簽”收視偏好模型,通過聚類劃分用戶簇實現(xiàn)受眾分群,然后使用矩陣分解的推薦算法針對不同的用戶簇進行推薦,可進一步降低矩陣的稀疏性。使用“用戶-標(biāo)簽”收視偏好模型進行受眾分群,一方面可以通過標(biāo)簽實現(xiàn)對用戶的肖像刻畫,另一方面可以使得各用戶簇的特性更加直觀。
一、用戶收視偏好模型
動畫節(jié)目受眾分群和推薦需基于用戶收視偏好模型,本文使用隱含在用戶與節(jié)目交互之中的隱式反饋信息構(gòu)建該模型,包括二元數(shù)據(jù)(如用戶是否觀看了某個動畫節(jié)目)和計數(shù)數(shù)據(jù)(如用戶收看某動畫節(jié)目的收視時長、收看次數(shù))[7]。
1.1“用戶-標(biāo)簽”偏好模型
使用爬蟲技術(shù)獲取動畫節(jié)目標(biāo)簽并與用戶收視數(shù)據(jù)結(jié)合,形成“用戶-標(biāo)簽”基本模型,使用收視時長、節(jié)目播出時長重構(gòu)出“用戶-標(biāo)簽”偏好模型的特征——忠誠度和興趣度,構(gòu)成“用戶-標(biāo)簽”偏好集合:IL={L1,L2},L1、L2分別表示用戶對節(jié)目的忠誠度和興趣度。
忠誠度:某用戶收視含某標(biāo)簽的節(jié)目總時長與含該標(biāo)簽的節(jié)目播出總時長的關(guān)系,表征該用戶對某標(biāo)簽的忠誠程度。如式所示:
原始的收視偏好矩陣很稀疏,通過矩陣分解可有效降低收視矩陣的稀疏程度[6]。矩陣分解的求解方法很多,常用方法有:最小二乘迭代法ALS和隨機梯度下降法SGD。
ALS模型中,對R≈PQT固定P求解Q,然后再固定Q求解P,重復(fù)交替這兩步直至算法收斂[5]。本文基于Spark分布式計算框架,因此采用更易于分布式計算的ALS算法。
2.2推薦算法的評價指標(biāo)
為評價算法推薦的準(zhǔn)確性,本文中采用一下評價指標(biāo):均方誤差MSE、均方根誤差RMSE、全局平均準(zhǔn)確率MAP[7]。MSE表示評價數(shù)據(jù)的變化程度,其值越小,說明推薦模型描述實驗數(shù)據(jù)具有更好精確度,RMSE為其標(biāo)準(zhǔn)差。而MAP是基于排名的評價指標(biāo),其值越高說明推薦的節(jié)目越精準(zhǔn),節(jié)目的排位也更能滿足用戶。其具體定義分別如下式
三、實驗及結(jié)果分析
本文使用某省單月用戶收視作為實驗數(shù)據(jù), 進行動畫節(jié)目核心受眾分群及其推薦。實驗在Linux上搭建Spark平臺,并使用Python API、Anaconda科學(xué)計算集成以及IPython Notebook作為IDE。
3.1“用戶-標(biāo)簽”偏好模型的受眾分群
(1)Spark平臺下的K-means受眾分群
計算動畫節(jié)目受眾所投入的累計時長,取時長最長的70個動畫標(biāo)簽進行降維處理,并構(gòu)建“用戶-標(biāo)簽”偏好矩陣。使用K-Means聚類實現(xiàn)用戶分群,本文將最大迭代次數(shù)設(shè)為100,確保算法達到收斂。由于聚類簇數(shù)K會影響最后的聚類效果,因此需要通過實驗來確定。目標(biāo)函數(shù)WCSS是K-means聚類的內(nèi)部評價指標(biāo),其數(shù)值可以表征聚類結(jié)果的誤差,其值越大,代表聚類的誤差越大。本實驗通過改變K值,綜合聚類效果及運行時間確定K的取值。實驗結(jié)果如圖1:
隨著K增大,目標(biāo)函數(shù)WCSS數(shù)值降低,聚類效果越好,同時運行時間也增加。綜合不同K下的WCSS和運行時間,本文選擇K=8作為聚類的簇數(shù),根據(jù)“用戶-標(biāo)簽”偏好模型,將用戶劃分成8類。
使用節(jié)目標(biāo)簽對分群后的各類簇用戶進行肖像刻畫。表3為各類簇前十個高頻核心標(biāo)簽。如表,類1用戶偏愛冒險、國產(chǎn)動畫;類2用戶的興趣集中在益智和戰(zhàn)斗、冒險類動畫;類3用戶偏向親子和家庭類動畫,可預(yù)測其主要受眾為低齡兒童;類4用戶的興趣集中在輔導(dǎo)、音樂類及真人秀節(jié)目;類5用戶的標(biāo)簽集中在搞笑和益智類;類6用戶的興趣度明顯集中在音樂、輔導(dǎo)等益智類的節(jié)目;類7用戶喜歡劇情、冒險、戰(zhàn)斗類的動畫;類8用戶偏向于游戲、綜藝等少兒類節(jié)目。
(2)不同平臺下受眾分群的對比
本實驗在Spark和R中使用K-menas對實驗數(shù)據(jù)進行聚類,并就其CPU占用時間進行對比。實驗結(jié)果如表4。使用Spark受眾分群的CPU占用時間比R少一個數(shù)量級,時間減少約80%,說明在迭代運算方面,Spark更有優(yōu)勢。
3.2矩陣分解的協(xié)同過濾推薦算法
使用“用戶-節(jié)目”收視偏好模型,根據(jù)分群后結(jié)果,使用矩陣分解的協(xié)同過濾算法分別對各類用戶推薦,本實驗使用ALS進行矩陣分解。實驗將用戶的最大因子向量維度設(shè)為100維,最大迭代次數(shù)設(shè)為10次,收斂閾值設(shè)為0.01。
本實驗對某月收看動畫節(jié)目天數(shù)最多(29天)的機頂盒的用戶進行推薦,受眾分群后該用戶屬于用戶簇5,此類用戶偏愛冒險、奇幻、搞笑類動畫。推薦結(jié)果按照偏好評分取前50個節(jié)目。
(1)有無受眾分群的推薦結(jié)果比較
實驗中,分別對經(jīng)過受眾分群的用戶和未分群的用戶進行節(jié)目推薦,預(yù)測出的評分表示用戶對該節(jié)目的偏好程度。為用戶ID=174294377推薦評分高的前十個節(jié)目,如表4:
可以看出,受眾分群后的推薦結(jié)果可挖掘到未分群推薦所忽略的節(jié)目,例如偏好評分較高的《熊出沒之叢林總動員》和《大風(fēng)車》,未出現(xiàn)在無受眾分群的推薦列表中。因此,受眾分群的協(xié)同過濾推薦可以挖掘到更多更加滿足用戶收視偏好的節(jié)目。
(2)有無受眾分群的推薦結(jié)果、以及用戶原始偏好指數(shù)對比
表5顯示,矩陣分解的推薦算法在整體上表現(xiàn)都是優(yōu)秀的,無論是有無進行受眾分群的推薦,都沒有較嚴(yán)重的誤差;另一方面,受眾分群后進行推薦相比于未分群進行節(jié)目推薦,更加接近用戶原始偏好指數(shù),推薦結(jié)果的可信度更高。
(3)有無受眾分群的推薦結(jié)果評價指標(biāo)對比
該實驗對全部用戶進行動畫節(jié)目推薦,分別計算兩個推薦方式的MSE、RMSE、MAPK、和運行時間,實驗結(jié)果如表6:
上圖顯示,經(jīng)過受眾分群的推薦,其MSE和RMSE的值越低,說明節(jié)目推薦的準(zhǔn)確度越高,其準(zhǔn)確率提高了60%;另一方面MAP的值越高,說明就排名而言,受眾分群的推薦更接近用戶的偏好。從運行時間而言,該算法節(jié)省了50%的運行時間。
四、總結(jié)
本文基于分布式處理框架Spark,提出了基于聚類和矩陣分解的推薦算法,并結(jié)合隱式反饋信息構(gòu)建的電視用戶收視偏好模型,將推薦算法應(yīng)用有電視動畫受眾分群和推薦中。通過對高頻受眾進行有無受眾分群的推薦,對比驗證得出,基于受眾分群的節(jié)目推薦,可以挖掘出傳統(tǒng)推薦所忽視的節(jié)目,從個體上,提高了所推薦節(jié)目預(yù)測評分的準(zhǔn)確性,從整體上,提高了推薦節(jié)目列表的排名準(zhǔn)確度。該方法能夠明顯減少推薦時間并且提高推薦準(zhǔn)確度,具有良好的可擴展性。
參 考 文 獻
[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].中國機器學(xué)習(xí)會議.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