陳婭昵,蘇岐芳
(臺州學(xué)院 電子與信息工程學(xué)院,浙江 臨海 317000)
一個完整的推薦系統(tǒng)[1]可以分為數(shù)據(jù)收集,數(shù)據(jù)處理,生成推薦三個模塊。
數(shù)據(jù)收集主要是收集用戶的信息,存放到數(shù)據(jù)庫中。然后通過數(shù)據(jù)處理對這部分?jǐn)?shù)據(jù)進(jìn)行分析,并建立模型。最后也是推薦系統(tǒng)的核心就是生成給用戶的推薦,按照模型計算出來的結(jié)果給用戶推薦他感興趣的項目。
主流的幾種推薦算法包括:基于內(nèi)容的推薦算法,基于項目的推薦算法,基于協(xié)同過濾的推薦算法,基于混合的推薦算法,基于數(shù)據(jù)挖掘的推薦算法。
協(xié)同過濾(Collaborative filtering)的算法[2]是目前應(yīng)用最廣泛的推薦算法,它的優(yōu)點在于,可以更好地挖掘出用戶的潛在興趣。
為了衡量用戶與用戶或項目與項目之間的相似程度,我們需要引入相似度來刻畫兩者的貼合程度。傳統(tǒng)的相似度計算有多種方法,但都有一個缺陷,他們認(rèn)為每個用戶對項目評價的貢獻(xiàn)程度是一樣的,事實上,每個用戶對項目的評價就其自身而言都是有很大差距的。舉個例子,用戶1和用戶2對項目A的貢獻(xiàn)大小是一樣的,用戶1對項目B和項目C的貢獻(xiàn)程度遠(yuǎn)小于對項目A的貢獻(xiàn)程度,但是用戶2則恰恰相反,他對項目B和項目C的貢獻(xiàn)程度遠(yuǎn)大于對項目A的貢獻(xiàn)程度。本文就不能把用戶1和用戶2劃分為相似的人群。因此,在這一基礎(chǔ)上,本文在相似度的計算中加入了相對偏好和絕對偏好,并給出差方函數(shù)來確定相對偏好與絕對偏好之間的權(quán)重關(guān)系。
以下先給出絕對偏好與相對偏好的定義,再給出相關(guān)的公式。
絕對偏好:若一個用戶對該類型的項目所作貢獻(xiàn)占他總時間的比例越高,可認(rèn)為該用戶越偏好這個類型的項目。
相對偏好:若一個用戶對該類型的節(jié)目所作貢獻(xiàn)占這個節(jié)目被所有用戶所做貢獻(xiàn)的比例越高,可認(rèn)為在這個人群中,該用戶相對于其他用戶更傾向于這個項目。
其中:
Pui:用戶u對項目i的絕對偏好。
Rui:用戶u對項目i的相對偏好。
m:總項目類型數(shù)。
n:總用戶數(shù)。
T:用戶對某一項目的貢獻(xiàn)大小。
為了中和他們的優(yōu)點,本文對相對偏好和絕對偏好賦予了權(quán)重,給出了差方函數(shù),使得差方和最小,來說明理論偏好與實際偏好相符。
其中x是變量,用以調(diào)整差方Q*的取值。本文讓x取一系列的值,若Q*在最低點得到,可認(rèn)為此時的x為最優(yōu)值。計算每一個用戶對各種類型的項目的綜合偏好。
上面這個矩陣是n×m階的,每一行都代表某一用戶對1…m個項目的綜合評分。而1…n表示共有n個用戶參與了對該項目的評分。利用Pearson計算公式(用戶)得到最后的結(jié)果。
在推薦系統(tǒng)中,針對一個新用戶或者新項目,由于他們是第一次進(jìn)入這個系統(tǒng),所以本文無法得到關(guān)于他的歷史的信息記錄。由于沒有關(guān)于新用戶或者新項目的興趣特征記錄,所以傳統(tǒng)的基于內(nèi)容的推薦算法,無法很好地解決這個問題。新項目或者新用戶沒有歷史的信息記錄,所以協(xié)同過濾的推薦算法[3]也無法很好地解決這個問題。由于大多數(shù)的算法是基于用戶與項目之間的互動,而在這種情況下,就無法生成對新項目、新用戶精準(zhǔn)的推薦。
冷啟動問題[4]嚴(yán)重影響著協(xié)同過濾算法的實現(xiàn),一方面他不能對新用戶產(chǎn)生個性化的推薦,使得新用戶不信任這個推薦系統(tǒng);另一方面,他嚴(yán)重影響了新項目的營銷。為了解決這個問題,研究人員提出了一些解決方案,主要包括:隨機推薦,平均法推薦,眾數(shù)法推薦等。
但上述列舉的解決方案都存在著較大風(fēng)險,用戶對系統(tǒng)產(chǎn)生不信任的概率較大。為了確保緩解冷啟動問題同時實現(xiàn)協(xié)同過濾算法,本文提出了基于屬性信息冷啟動問題的一個改進(jìn)。
本文將冷啟動問題分為新項目的冷啟動問題和新用戶的冷啟動問題。針對新項目,雖然他是第一次進(jìn)入這個數(shù)據(jù)庫,但是本文可以對他的屬性信息進(jìn)行全面綜合的考慮,提取出關(guān)于新項目的基本特征。通過基于項目的協(xié)同過濾算法,將該新項目歸納到與他相似的項目簇中,將相似的節(jié)目打包,從而實現(xiàn)新項目的推薦。
針對新用戶,也是第一次進(jìn)入這個數(shù)據(jù)庫,本文可以提出兩種方法實現(xiàn)新用戶的推薦。(1)推薦熱門項目。熱門項目一定程度上代表了大眾群體的喜愛趨勢,并且,本文可以認(rèn)為他們會培養(yǎng)出用戶新的愛好。也就是說,原來新用戶并沒有嘗試過,但是不能代表該新用戶一定不喜歡。(2)對他的屬性信息進(jìn)行全面綜合的考慮,根據(jù)新用戶的基本特征,包括年齡、職業(yè),尤其是愛好很大程度上反映了他的屬性信息。再通過基于用戶的協(xié)同過濾算法,將該新用戶歸納到與他相似的用戶群體中,將相似的用戶打包,從而實現(xiàn)新項目的推薦。
以第六屆“泰迪杯”數(shù)據(jù)挖掘挑戰(zhàn)賽——B題電視產(chǎn)品的營銷推薦數(shù)據(jù)為支撐。主要包括三個附件,數(shù)據(jù)說明如下:
附件1:用戶收視信息數(shù)據(jù),記錄數(shù):561288條
附件2:電視產(chǎn)品信息數(shù)據(jù),記錄數(shù):41876條
附件3:用戶基本信息數(shù)據(jù),記錄數(shù):1329條
旨在解決:利用附件1所給的用戶觀看記錄信息數(shù)據(jù),分析用戶的收視偏好,并給出附件2中產(chǎn)品的營銷推薦方案。
首先對附件1中收視、回看、點播、單片點播的數(shù)據(jù)進(jìn)行處理,發(fā)現(xiàn)附件中共含1329個用戶和1329個機頂盒,一個用戶只對應(yīng)一個機頂盒,其中274個用戶沒有觀看記錄。
由于用戶的收視信息只提供了用戶觀看每個頻道的時長,無法以此來推斷用戶的偏好。因此,本文需要對2017.6.30—2017.9.30的各個頻道的節(jié)目進(jìn)行分類。同時,對回看、點播、單片點播的用戶數(shù)據(jù)也進(jìn)行分類。針對每一個用戶,需要將他的收看時長與節(jié)目類型相對應(yīng)。以下,給出計算用戶各類型的收視時長方法。
圖1 計算收視時長的流程圖
對用戶的偏好主要可以分為兩類:顯式表現(xiàn)和隱式表現(xiàn)。用戶對節(jié)目的評分可以從不同的角度反映他與這個節(jié)目的喜歡程度。
本文采用顯式表現(xiàn)與隱式表現(xiàn)相組合,對用戶收看、回看、點播、單片點播的行為進(jìn)行分類,并對不同的行為進(jìn)行加權(quán)。
整理用戶偏好的信息,可以得到用戶-節(jié)目矩陣。設(shè)用戶集合為U={u1,u2,…um },節(jié)目集合為I={ i1,i2,…in。 }m,n分別表示用戶的數(shù)量與節(jié)目的數(shù)量。得到m×n的矩陣,矩陣的行代表用戶編號、列代表節(jié)目編號。
其中的任意元素rij表示第i個用戶對第j個節(jié)目的偏好程度。若第i個用戶并沒有觀看第j個節(jié)目,那么rij=0。一般來說,所得到的矩陣十分稀疏,大部分節(jié)目都是未被觀看的。
對于用戶的收視偏好,本文分為兩個方面考慮,分別是相對偏好和絕對偏好,按照2.1的計算方法,最后得到最佳的x=0.12。
圖2 差方函數(shù)
圖3 用戶10003的偏好傾向
對于用戶來說,本文分別給出了他的8個偏好,第一偏好的傾向最大,依次逐漸減弱。圖3給出了用戶10003的偏好傾向。
在3.3.2中已經(jīng)詳細(xì)介紹了基于相對偏好和絕對偏好的相似度改進(jìn),本節(jié)是對3.3.2在電視節(jié)目相似度方面的一個應(yīng)用,以下給出節(jié)目(部分)之間的相似度關(guān)系矩陣。
表1 節(jié)目相似關(guān)系
通過節(jié)目之間的相似關(guān)系,把相似的電視節(jié)目打包,可以實現(xiàn)電視產(chǎn)品的營銷推薦。接著我們要繼續(xù)對電視產(chǎn)品實行更細(xì)的推薦。為了更好地達(dá)到個性化的推薦,每個用戶的推薦列表應(yīng)該都是不同的。因此我們給出了基于電視節(jié)目的推薦指數(shù)算法。
式中:
simij:節(jié)目i與節(jié)目j之間的相似度。
rui:用戶u對節(jié)目i的時長。
N:推薦列表的節(jié)目集合。
在2.1中已經(jīng)詳細(xì)介紹了基于相對偏好和絕對偏好的相似度改進(jìn),本節(jié)是對2.1在用戶相似度方面的一個應(yīng)用,以下給出用戶(部分)之間的相似度關(guān)系矩陣。
表2 用戶相似關(guān)系
與基于電視產(chǎn)品的推薦指數(shù)類似,基于用戶的推薦也是一種個性化的推薦。首先可以根據(jù)用戶分類,計算出用戶對節(jié)目的預(yù)測收看時間,并給出推薦指數(shù)。
式中:
simuv:用戶u與用戶v之間的相似度。
rvi:用戶v對節(jié)目i的時長。
N:最鄰近用戶集合。
本文在2.2中詳細(xì)介紹了基于屬性信息和潛在興趣對冷啟動問題的改進(jìn),在這一小節(jié)中,主要介紹如何實現(xiàn)新節(jié)目的營銷推薦。
針對用戶已經(jīng)收看過的節(jié)目,求出每個用戶之間的相似度,再利用基于用戶的協(xié)同過濾算法計算推薦指數(shù)。若該節(jié)目是新節(jié)目,通過每個節(jié)目給出的不同參數(shù),可以計算出同一個類型節(jié)目的相似度,然后基于節(jié)目的協(xié)同過濾算法,得到推薦指數(shù)。
在進(jìn)行電視節(jié)目推薦過程中,我們還考慮到了不同時間點的用戶需求不同,因此我們對每一天中的早中晚都進(jìn)行分類。以一天為周期,給出一天中不同時間的節(jié)目推薦方案,使其更符合用戶的觀看需求。
例如:以10003用戶為例,節(jié)目推薦結(jié)果如表6所示。
表3 用戶10003電視節(jié)目推薦表
針對產(chǎn)品的精準(zhǔn)營銷推薦,我們首先采用七、八月份的數(shù)據(jù),做出他的收視偏好,給出各節(jié)目的推薦指數(shù)以及營銷推薦方案。計算推薦節(jié)目中各類型節(jié)目占的比例,再將九月份用戶的絕對偏好進(jìn)行歸一,即計算出他看每個類型節(jié)目占總時間的比例,選擇推薦列表上含有的節(jié)目類型進(jìn)行歸一,與推薦指數(shù)進(jìn)行比較,分析誤差大小。最后可以看出1015位用戶中絕大多數(shù)用戶的偏差較小,說明我們的推薦節(jié)目具有較高的可靠性。