(江蘇師范大學(xué) 數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,江蘇 徐州 221000)
隨著數(shù)字電視、網(wǎng)絡(luò)電視的快速普及,服務(wù)提供商可以根據(jù)數(shù)字電視或網(wǎng)絡(luò)電視的收視紀(jì)錄,來更好地了解用戶的收視行為和偏好[1]。迄今為止,個(gè)性化推薦的算法技術(shù)發(fā)展迅速,其中,最常用的是協(xié)同過濾算法和聚類算法。例如:黃賢英等(2018)[2]提出了新聞文本內(nèi)容相似度的計(jì)算方式和時(shí)間窗的概念,考慮了特征詞的詞性以及它在新聞中的位置的因素,建立了個(gè)性化新聞推薦模型。此外,還有其他的算法應(yīng)用于個(gè)性化推薦,例如:徐宏等(2018)[3]建立了基于MC-Apriori 算法的面向旅游用戶個(gè)性化搜索的關(guān)鍵詞推薦模型,向用戶推薦滿足其當(dāng)前搜索興趣的旅游信息。由于每戶家庭的電視用戶類型不同、收看的節(jié)目類型也不同,因此本文針對不同的數(shù)據(jù)集,采用了基于電視產(chǎn)品內(nèi)容的協(xié)同過濾算法和基于電視用戶的協(xié)同過濾算法,為用戶做出合理化的推薦。
基于內(nèi)容(CB)的推薦算法[4]的原理很簡單:它是根據(jù)用戶過去喜愛的物品,提取出每個(gè)物品的一些特征,并利用這些特征數(shù)據(jù),學(xué)習(xí)該用戶的喜好,最后與候選的物品特征進(jìn)行比較,為用戶推薦相似度較大的物品。
1.jieba 分詞。本文采用Python 軟件對附件1 中的文本信息進(jìn)行中文jieba 分詞[5-6]。分詞是對于一個(gè)特定的字符串Q,將其切分成多個(gè)詞語組成的字符串,會有q 個(gè)分割方案。我們采用概率語言模型的分詞方法來選擇最佳的切分方案。
2.概率語言模型的分詞方法。對于多個(gè)切分方案,我們需要計(jì)算出可能性最大的切分序列,其概率模型表示為:
其中Ri表示第i 種切分方案,(1,2,…,q)。
計(jì)算P(R1|Q)和P(R2|Q),選擇概率值較大的切分方案。根據(jù)貝葉斯公式:
其中P(Q)是字符串在語料庫中出現(xiàn)的概率,且P(Q|Ri)=1。
因此,比較P(R1|Q)和P(R2|Q)的值,也就是比較P(R1)和P(R2)的大小,因此P(Ri)的概率表達(dá)式即為:
P(Ri)=P(Ri1Ri2…Rim)≈P(Ri1)×P(Ri2)×…×P(Rim)
其中,對于不同的Ri,m 的值不同,一般來說m的值越大,Ri越小。也就是說,分出的詞越多,概率越小。下面,我們需要計(jì)算P(Rij):
因此,我們可以推導(dǎo)出:
logP(Rij)=log(Freq(Rij))-log(N)
本文基于概率語言模型,分別對電視劇、電影、綜藝、動漫的“detail”文本數(shù)據(jù)進(jìn)行jieba 分詞,得到所有的分詞結(jié)果,并將它們保存在向量text 中。
3.計(jì)算分詞詞頻。根據(jù)上一步text 中的分詞結(jié)果,我們遍歷每個(gè)單詞,計(jì)算出每個(gè)單詞在該“detail”文本中出現(xiàn)的次數(shù),找出詞頻大于1 的單詞,舍棄詞頻為0 的單詞,并且通過dict 創(chuàng)建字典,對每個(gè)詞頻大于1 的單詞進(jìn)行編號。
1.建立向量表示的語料庫。根據(jù)分詞對所有的電影“detail”文本數(shù)據(jù)的分詞結(jié)果進(jìn)行向量表示,并保存在語料庫中。
2.TF-IDF 分詞權(quán)重模型。設(shè)所有電影的“detail”文本數(shù)據(jù)的集合為:
C={C1,C2,…,CN}
而所有電影的“detail”文本數(shù)據(jù)中出現(xiàn)的分詞的集合為:
T={T1,T1,…,TW}
即:這些“detail”文本數(shù)據(jù)中包含了W 個(gè)詞,使用一個(gè)向量表示所有的電影。比如第j 個(gè)文章被表示為:
Cj={W1j,W2j,…,Wnj}
其中Wij表示第i 個(gè)詞Ti在第j 個(gè)電影“detail”中的權(quán)重,值越大表示越重要。在大多數(shù)已有的基于內(nèi)容的推薦算法中,Wij的取值常用的是詞頻-逆文檔頻率[6-7](TF-IDF)。TF-IDF 的分詞權(quán)重模型表示為:
假設(shè)我們的矩陣A 是一個(gè)m×n 的矩陣,那么我們定義矩陣A 的SVD 為:
其中U 是一個(gè)m×m 的矩陣;∑是一個(gè)m×n 的矩陣,主對角線上的元素稱為奇異值;V 是一個(gè)n×n的矩陣。U 和V 都是酉矩陣[8]。
TOPSIS 是計(jì)算諸評價(jià)對象與兩者方案的距離,得到相對接近程度,找出最優(yōu)方案和最劣方案。計(jì)算步驟如下:
第一步:設(shè)某一問題,決策矩陣為F。構(gòu)成規(guī)范化的決策矩陣Z',其元素為,且有:
第二步:決定理想解、負(fù)理想解。決策矩陣Z 中元素Zij值越大說明方案越好,則:
第三步:計(jì)算每個(gè)方案到正負(fù)理想點(diǎn)的距離,找到距離最短的最優(yōu)解。
余弦相似度,是計(jì)算兩個(gè)向量的夾角余弦值,評價(jià)兩個(gè)方案的相似度[9-10]。
均方根誤差是觀測值與真值偏差的平方和觀測次數(shù)n 比值的平方根,可以檢驗(yàn)?zāi)P皖A(yù)測的偏差程度。
模型求解步驟如下:
我很小很小的時(shí)候,在澡盆里洗澡,洗完了,澡盆被端走,地上有一個(gè)圓圓的水印,我就指著水印說:“太陽!太陽!”據(jù)說我當(dāng)時(shí)這樣說的時(shí)候,是十分激動的。夏天,我赤著腳在地上走,腳上有水,地上就有腳印,我又指著腳印說:“小船!小船!”看來我小時(shí)候是有些想象力的,而我現(xiàn)在想象力要比那時(shí)糟得多。
第一步:通過Python 軟件中的Pyspide 系統(tǒng)進(jìn)行網(wǎng)絡(luò)爬蟲,爬取出附件中用戶單片點(diǎn)播和點(diǎn)播的所有收視節(jié)目的相關(guān)信息以及所有電視劇、電影、綜藝等的相關(guān)信息。
第二步:數(shù)據(jù)預(yù)處理:補(bǔ)充點(diǎn)播和單片點(diǎn)播數(shù)據(jù)中文本數(shù)據(jù)的缺失值,用“無”代替;對點(diǎn)播中的“用戶付費(fèi)金額”“用戶收視時(shí)長”的數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化;用中位數(shù)法分別對單片點(diǎn)播、點(diǎn)播中的演員、導(dǎo)演、細(xì)節(jié)、地區(qū)、種類、類型的數(shù)據(jù)矩陣中的缺失數(shù)據(jù)進(jìn)行補(bǔ)充;采用最小-最大值規(guī)范化方法對點(diǎn)播數(shù)據(jù)矩陣“點(diǎn)播2”和單片點(diǎn)播數(shù)據(jù)矩陣“單片2”中的每一列數(shù)據(jù)進(jìn)行歸一化處理。
第三步:對用戶點(diǎn)播、用戶單片點(diǎn)播的數(shù)據(jù)進(jìn)行分析:(1)將點(diǎn)播的演員、導(dǎo)演、細(xì)節(jié)、地區(qū)、節(jié)目種類、節(jié)目類型、二級目錄的文本數(shù)據(jù)分別生成列表,并通過計(jì)算詞頻將文本數(shù)據(jù)轉(zhuǎn)換成數(shù)字向量;(2)計(jì)算TF-IDF 權(quán)重;(3)采用SVD 模型對每一列的TF-IDF 權(quán)重?cái)?shù)據(jù)進(jìn)行降維,得到奇異值矩陣,并存入DataFrame 二維數(shù)據(jù)結(jié)構(gòu)中[11]。
第四步:采用topsis 綜合評價(jià)法對每位用戶觀看節(jié)目的所有信息數(shù)據(jù)進(jìn)行綜合評價(jià),得到綜合評價(jià)值,并將用戶、節(jié)目名稱、評分構(gòu)成新的矩陣[12]。
第五步:將爬蟲后得到的所有電視劇、電影、綜藝節(jié)目、動畫片的相關(guān)信息做第一步至第四步的同樣的分詞處理。
第六步:采用交叉驗(yàn)證方法驗(yàn)證模型的可靠性,本文我們隨機(jī)分了80%的訓(xùn)練集,20%的測試集,計(jì)算訓(xùn)練數(shù)據(jù)與測試數(shù)據(jù)之間的均方誤差來檢驗(yàn)?zāi)P汀?/p>
第七步:采用余弦相似度模型對處理后的爬蟲數(shù)據(jù)與點(diǎn)播、單片點(diǎn)播數(shù)據(jù)進(jìn)行相似性分析,得到爬蟲數(shù)據(jù)與用戶點(diǎn)播、單片點(diǎn)播數(shù)據(jù)的相似度即為推薦指數(shù)。
第八步:采用均方值誤差對模型進(jìn)行檢驗(yàn),得到誤差為:RMSE=0.65。
表1 用戶11004 的推薦結(jié)果
基于用戶的協(xié)同過濾算法,是一種采集用戶之前的愛好習(xí)慣預(yù)測用戶對商品和內(nèi)容的嗜好,將同類型的用戶放在一起,進(jìn)行推薦。
1.尋找用戶間的相似度。我們利用上文建立的余弦相似度模型,計(jì)算用戶之間的相似度,對用戶進(jìn)行分類。
2.推薦物品。在選取上述方法中的一種得到各個(gè)用戶之間相似度,針對目標(biāo)用戶u,進(jìn)一步選出相似的k 個(gè)用戶,用集合S(u,k)表示;提取出S 中所有用戶喜歡的物品,去掉目標(biāo)用戶u 曾經(jīng)喜歡的物品;對剩下的物品進(jìn)行評分與相似度加權(quán),最后根據(jù)相似度從高到低對目標(biāo)用戶u 進(jìn)行推薦。
3.數(shù)據(jù)連接。把55 個(gè)銷售產(chǎn)品作為電影產(chǎn)品,提取出它們的標(biāo)簽,對于缺失數(shù)據(jù),我們采用支持向量機(jī)模型進(jìn)行預(yù)測,得到所有的電影產(chǎn)品的標(biāo)簽,部分?jǐn)?shù)據(jù)如表1 所示。然后根據(jù)爬蟲后的數(shù)據(jù)與用戶的收視數(shù)據(jù)進(jìn)行分析,得到基于用戶收視行為的標(biāo)簽。
4.相似性分析及RMSE 檢驗(yàn)。本文采用余弦相似度計(jì)算用戶與用戶之間標(biāo)簽的相似性和55 個(gè)銷售產(chǎn)品與用戶之間的標(biāo)簽的相似性,并進(jìn)行RMSE模型的檢驗(yàn)。
采集用戶之前的收視愛好習(xí)慣以及用戶的基本信息,我們可以將用戶進(jìn)行分類,分成很多個(gè)用戶群,如表2 所示。
表2 用戶群以及觀看特征
根據(jù)表2 的用戶群特征,用戶群1 可以基本定位為兒童用戶群體,可以估測該電視用戶的家中有兒童,針對這一用戶群體,可以重點(diǎn)宣傳與突出營銷,對此類群體可以通過動畫產(chǎn)品的宣傳不斷吸引用戶的觀看興趣,提高用戶的持續(xù)觀看的概率。
用戶群2 偏女性居多,且觀看電視的時(shí)長較短,針對此類用戶群,不進(jìn)行重點(diǎn)推銷,運(yùn)用宣傳手段進(jìn)行趣味主頁和趣味活動的引導(dǎo),挖掘或者激發(fā)用戶的觀看興趣。此外,還可以向該用戶群提供有關(guān)廚藝和家務(wù)勞動小技巧的短視頻,既能節(jié)約用戶群的觀看時(shí)間,又能吸引用戶的興趣,而不產(chǎn)生厭惡感。
用戶群3 可以定位為TFBOYS 的粉絲,因此,電視產(chǎn)品供應(yīng)商可以在電視主頁進(jìn)行推薦,吸引用戶的觀看興趣。同時(shí),對于該用戶群中的VIP 用戶,采取優(yōu)惠政策,推送一些VIP 專享節(jié)目,既能滿足用戶群3 中VIP 用戶的觀看需求,穩(wěn)固用戶群,還能吸引用戶群3 中非VIP 用戶的VIP 充值興趣,增加會員制的營銷收入,促進(jìn)電視產(chǎn)品的營銷。
針對電視產(chǎn)品的推薦,我們采用了基于內(nèi)容的協(xié)同過濾算法,分析用戶的收視內(nèi)容以及爬蟲后得到的數(shù)據(jù)信息,為每位用戶推薦了相似度(從高到低)前20 的電視產(chǎn)品。此外,我們利用基于用戶的協(xié)同過濾算法,分析用戶的觀看行為,將用戶進(jìn)行分類,為用戶做出了推薦。本文采用的RMSE 檢驗(yàn)法得到的RMSE 檢驗(yàn)值為0.67 和0.69,數(shù)值較高,結(jié)果完美,但是結(jié)果與用戶的記錄有些出入,我們還需要對中文文本挖掘進(jìn)行深入探討。