本發(fā)明涉及項目推薦方法,具體是一種結合用戶評論內容和評分的項目推薦方法。
背景技術:
隨著Web2.0以來,互聯(lián)網上的信息以指數(shù)級的數(shù)量增長,面對海量的數(shù)據,用戶明顯感覺到很難從中發(fā)現(xiàn)自己真正感興趣的內容,于是推薦系統(tǒng)變得越來越不可或缺。我們可以依靠推薦系統(tǒng)從音樂流媒體服務平臺(例如網易云音樂)中收藏的上百萬首歌曲中發(fā)現(xiàn)自己喜歡的歌曲;我們也可以依靠推薦系統(tǒng)從新聞網站(例如騰訊新聞)中發(fā)現(xiàn)自己感興趣的新聞。淘寶等購物網站使用推薦系統(tǒng)向用戶推薦他們可能喜歡的商品。
雖然推薦系統(tǒng)在互聯(lián)網的很多領域表現(xiàn)良好,但是現(xiàn)有的方法仍然存在不足之處。其中一個不足之處在于大多數(shù)推薦系統(tǒng)都不能很好的處理冷啟動問題,冷啟動問題指的是當推薦系統(tǒng)中存在新用戶時,由于系統(tǒng)中缺少新用戶足夠的歷史行為信息,這樣就導致推薦系統(tǒng)不能很好的給新用戶做出滿意的推薦結果;同樣,對于新項目推薦系統(tǒng)也不能及時的推薦給用戶。冷啟動問題在導致推薦系統(tǒng)對新用戶和新項目的體驗不好。另外一個問題是現(xiàn)有的推薦系統(tǒng)的可解釋性差,它們不能更加深入地學習用戶的偏好以及項目的屬性。例如在矩陣分解方法中,我們學習對應用戶潛在特征和項目潛在特征的兩個特征向量。兩個潛在特征向量的點積大小表示用戶是否喜歡這個項目。但是這些潛在的特征值很難同用戶真實的評價聯(lián)系起來。例如一個用戶可能喜歡某個項目由于兩個特征向量的某個特征值同時對應的值比較大,當推薦系統(tǒng)給用戶推薦這個項目時,很難用真實的物理意義解釋說明給用戶,做出相應推薦的原因。如果項目是一 部科幻題材的電影,是否意味著用戶喜歡科幻電影或者用戶僅僅因為喜歡電影的男主角而喜歡呢?我們無從得之。事實上把潛在向量的每一個特征值都對應于一個真實的物理意義是很困難的。
推薦系統(tǒng)中預測用戶的偏好是通過學習用戶對項目的歷史評分得到的,它的思想是假設過去有相似偏好的用戶在未來也有相似的偏好,推薦系統(tǒng)對用戶進行建模僅僅用到用戶的評分信息而沒有考慮評論的內容。在實際的推薦系統(tǒng)中,用戶不僅有對項目的評分值,而且有對項目的評論。評論中包含了豐富的信息解釋了用戶對這個項目的評分值是某個確定值的原因。這些評論提供了項目的內容,可以用來緩解當用戶評分很稀疏時的冷啟動問題。這是因為評論內容中包含的信息比一個評分值豐富很多,當系統(tǒng)中的評分數(shù)據很稀疏時,推薦系統(tǒng)幾乎不可能學習到用戶或者項目的特點。然而文本的評論內容卻可以更好的估計用戶偏好或者項目的內容。在早期的研究中,研究者們也意識到在推薦系統(tǒng)中使用文本內容的優(yōu)點,于是在基于內容過濾和基于協(xié)同過濾的組合中做了大量的工作,研究者們發(fā)現(xiàn)有很多特征影響用戶對項目的評分,他們利用文本的評論內容學習用戶在這些特征上的權重分布,然而他們的方法需要有經驗的專家預先定義這些特征。而且這樣選擇的特征也有很大的隨機性,如果特征選擇的不好,導致系統(tǒng)不能正確的學習用戶的偏好。
技術實現(xiàn)要素:
本發(fā)明的目的在于克服上述項目推薦現(xiàn)有方法中存在的問題和不足,提供一種結合用戶評論內容和評分的項目推薦方法,通過基于用戶評論內容的過濾和基于評分的協(xié)同過濾自動學習這些特征,從而解決上述問題。同時為了解決可解釋性問題,把評分的潛在主題空間維度和評論內容的主題空間維度進行了一致排列,這樣每一個評分的潛在主題的維度都可以用評價的關鍵詞的標簽來 解釋,標簽解釋了評分對應維度的真實物理意義。
為實現(xiàn)本發(fā)明目的,本發(fā)明一種結合用戶評論內容和評分的項目推薦方法,其中評分用基于矩陣的方法進行潛在特征分解,用戶評論的內容用LDA方法進行建模,項目推薦方法包括以下步驟:
步驟1:從互聯(lián)網中采集用戶數(shù)據并對其進行預處理,生成用戶行為數(shù)據存放到用戶行為信息數(shù)據庫;
步驟2:通過分析用戶的歷史行為數(shù)據,構建用戶對項目偏好評分以及評論的標簽,并將數(shù)據劃分為訓練集和測試集;
步驟3:基于訓練集構建用戶-項目的偏好評分矩陣;
步驟4:利用訓練集中用戶對項目的評論內容構建LDA模型;
步驟5:構建映射函數(shù),使基于評分的矩陣分解方法和基于評論的LDA模型方法有效地聯(lián)系起來;
步驟6:通過設置一個超參數(shù)μ來平衡評分數(shù)據和評論數(shù)據對推薦的影響程度,得到推薦的模型表達式;
步驟7:訓練步驟6中得到的模型,利用測試集得到的不同的超參數(shù)μ中的推薦誤差,繪制不同超參數(shù)μ得到的誤差曲線;
步驟8:從誤差曲線中選擇出最優(yōu)的誤差曲線對應的超參數(shù)μ,得到最優(yōu)的預測推薦模型;
步驟9:基于最優(yōu)超參數(shù)μ,對推薦系統(tǒng)中出現(xiàn)的用戶項目集,按照步驟8的模型對目標用戶計算他對某個待推薦項目的評分,當評分大于設定的閾值時,系統(tǒng)就把該項目推薦給用戶。
所述步驟1采集的數(shù)據至少包括用戶唯一ID、項目唯一ID、用戶對項目的評論內容、偏好評分以及用戶對項目的行為時間的相關信息,存放于用戶行為 信息數(shù)據庫中。
所述步驟3中,用戶-項目的偏好評分矩陣是利用矩陣分解方法的SVD算法得到的:
rec(u,i)=α+βu+βi+γu.γi (1)
其中,rec(u,i)表示用戶u對項目i的預測評分,α表示預測基準,βu和βi表示用戶u和項目i的評分偏移值,γu和γi表示用戶和項目的潛在特征向量。
所述步驟4基于評論內容集構建的LDA模型為:
其中τ表示整個評論集,Nd表示一條評論中出現(xiàn)的詞的數(shù)量,表示出現(xiàn)某個主題的可能性,ωd,j表示某個詞描述某個主題的可能性。
所述步驟5構建的映射函數(shù)為:
其中θi表示項目i的主題分布,k控制轉換函數(shù)的平滑,θi,k表示評論中討論項目i的第k維特征,γi表示項目i的潛在特征向量,γi,k表示項目i的第k個潛在特征。
所述矩陣分解的潛在主題數(shù)量和評論內容的主題數(shù)量相等,事實上項目的潛 在特征向量γi和評論的主題分布θi不是相互獨立的,從直觀上我們可以認為γi描述了產品i的潛在特征,如果用戶u喜歡這個產品,則用戶相應的潛在特征向量γu上值就會大。另一方面,主題θi定義了項目i特定主題的詞。通過連接二者,我們希望如果一個項目展示了某一個項目的潛在特征(對應于γi,k的值較大,θi,k表示評論中討論項目i的第k維特征),則在評論中討論了相應的主題(對應于θi,k的值較大,θi,k表示評論中討論項目i的第k維特征)。
所述步驟6得到推薦的模型表達式為:
其中參數(shù)Θ={α,βu,βi,γu,γi},Φ={θ,φ},μ表示兩種算法在整個模型中權重,α表示預測基準,βu和βi表示用戶u和項目i的評分偏移值,γu和γi表示用戶和項目的潛在特征向量,θ表示評論集的主題分布,φ表示主題中的詞分布。
所述步驟7訓練步驟6中得到的模型,開始訓練利用構建的映射函數(shù)使項目的潛在特征向量γ和評論的主題分布θ相對應,因此Θ和Φ都依賴于潛在特征向量γ,訓練(4)式的模型時兩個部分不能獨立。通常情況下單獨訓練(1)式中的各個參數(shù)可以利用梯度下降的方法,訓練(2)式中的參數(shù)可以通過Gibbs Sampling的方法。因此我們可以通過交替這兩個過程訓練模型。
所述步驟7訓練步驟6中得到的模型,(4)式的第一部分的訓練首先通過平方誤差最小化得到
其中T表示整個訓練的評分數(shù)據集,Ω(Θ)表示模型復雜度的正則化;
然后,對(5)式運用梯度下降進行參數(shù)的訓練,α一般是評分矩陣的平均值,其余各個參數(shù)的表達式為:
βu=βu+η(eu,i-λβu) (6)
βi=βi+η(eu,i-λβi) (7)
γu=γu+η(eu,i-λγu) (8)
γi=γi+η(eu,i-λγi) (9)
其中βu和βi的初值為0,γu和γi的初值為0向量,eu,i=(rec(u,i)-ru,i),η為梯度下降的步長,即學習率;
(4)式的第二部分LDA模型是采用Gibbs Sampling方法初始時隨機給用戶行為記錄中的每個項目分配一個所隸屬的潛在興趣T(0),然后統(tǒng)計每個潛在興趣T中項目的出現(xiàn)次數(shù),以及每個用戶中出現(xiàn)潛在興趣T中項目的次數(shù);每一次迭代依據Gibbs updating rule計算條件分布公式如下:
其中,分別是N×K、M×K維的矩陣,分別代表項目Ii被賦予潛在興趣Tj的次數(shù)、用戶Ui的所有項目中被賦予興趣Tj的次數(shù);N 為項目的個數(shù),M為用戶的個數(shù),K為潛在興趣的個數(shù);T-i表示除當前項目外的其他所有項目的潛在興趣賦值,Ui表示用戶索引,Ii表示項目索引,·代表其他所有已知或可見的信息,α和β是超參數(shù),需提前進行指定;排除當前項目的潛在興趣分配,根據其他所有項目的潛在興趣分配估計當前項目分配到各個潛在興趣上的概率值,當?shù)玫疆斍绊椖繉儆谒袧撛谂d趣T的概率分布后,根據這個概率分布重新為該項目采樣一個新的潛在興趣T(1),以此類推,用相同的方式不斷更新下一項目的待定狀態(tài),最終近似的計算公式如下:
θij即可認為是用戶Ui在潛在興趣Tj上的偏好概率值,φij可認為是潛在興趣Tj在項目Ii上的概率權重值。
所述評估推薦模型的好壞用RMSE表示,其公式如下:
其中,P(rui)代表示用戶u對項目i的預測得分,rui表示用戶u對項目i的實際得分,N表示測試集的大小,RMSE值越小表示預測越精確。
本發(fā)明針對推薦系統(tǒng)中存在的冷啟動問題和可解釋性差問題,提出了基于結合用戶評論和用戶評分的模型,通過利用蘊含在評論中豐富的信息,我們可以極大的提高預測的精確度,尤其當數(shù)據很稀疏時,可以很好的解決冷啟動和可解釋性差的問題。本發(fā)明方法主要考慮到用戶評論信息中包含了項目特征的描述,通過映射函數(shù)使數(shù)值評分中的潛在特征和評論信息的項目特征相對應??梢院芎玫膶τ脩舻南埠眠M行建模,因此即使數(shù)據很稀疏時,也能很好的進行預測和推薦。
附圖說明
圖1為本發(fā)明項目推薦方法流程圖;
圖2為基于用戶評論內容構建LDA模型圖;
圖3為實施例亞馬遜商品的評分和評論單詞數(shù)的百分比圖;
圖4為實施例在亞馬遜數(shù)據集上本發(fā)明方法和其它算法預測評分的均平方誤差圖。
具體實施方式
下面結合附圖和實施例對本發(fā)明內容作進一步詳細說明,但不是對本發(fā)明的限定。
參照圖1,一種基于用戶評論內容和評分的項目推薦方法,包括如下步驟:
ST1:從互聯(lián)網中采集用戶數(shù)據并對其進行預處理,生成用戶行為數(shù)據存放 到用戶行為信息數(shù)據庫;
ST2:通過分析用戶的歷史行為數(shù)據,構建用戶對項目偏好評分以及評論的標簽,并將數(shù)據劃分為訓練集和測試集;
ST3:基于訓練集構建用戶-項目的偏好評分矩陣;
ST4:利用訓練集中用戶對項目的評論內容構建LDA模型;
LDA模型參考圖2,其中所有空白圓表示不可預知的隱藏變量,而陰影圓則代表可觀察變量,每個矩形代表著步驟的重復。θm表示第m個用戶的興趣概率分布,φ表示興趣中的項目概率分布;k代表預先設置的興趣數(shù)目,M代表系統(tǒng)的中用戶數(shù)目,Nm表示第m個用戶產生行為的項目個數(shù)。Im,n和Tm,n分別表示第m個用戶行為記錄中的第n個項以及該項目所屬興趣。α和β是整個模型的兩個超參數(shù),α反映了用戶行為項目集合中興趣的相對強弱,β則反映了興趣中項目的概率密度;
ST5:構建映射函數(shù),使基于評分的矩陣分解方法和基于評論的LDA模型方法有效地聯(lián)系起來;
ST6:通過設置一個超參數(shù)μ來平衡評分數(shù)據和評論數(shù)據對推薦的影響程度,得到推薦的模型表達式;
ST7:訓練步驟6中得到的模型,利用測試集得到的不同的超參數(shù)μ中的推薦誤差,繪制不同超參數(shù)μ得到的誤差曲線;
ST8:從誤差曲線中選擇出最優(yōu)的誤差曲線對應的超參數(shù)μ,得到最優(yōu)的 預測推薦模型;
ST9:基于最優(yōu)超參數(shù)μ,對推薦系統(tǒng)中出現(xiàn)的用戶項目集,按照步驟8的模型對目標用戶計算他對某個待推薦項目的評分,當評分大于設定的閾值時,系統(tǒng)就把該項目推薦給用戶。
采用本發(fā)明方法,當我們觀察到一個用戶對一部電影的評價內容是“恐怖片、科幻、諾蘭”,而且該用戶對電影評分進行矩陣分解可以發(fā)現(xiàn)在這三個維度上的值都比較大。由此我們知道該用戶喜歡克里斯托弗·諾蘭執(zhí)導的科幻類的驚悚電影。
可解釋性和冷啟動的問題不是兩個孤立的問題,我們可以通過學習一個可解釋性的模型來緩解冷啟動的問題,我們可以充分利用用戶對項目的歷史評論中已知的信息,給用戶推薦新的項目。例如一個用戶給電影《月光寶盒》很高的評分,并且該用戶給電影評價的標簽是“愛情、喜劇、周星馳”。則可解釋模型的推薦系統(tǒng)可以確信的給用戶推薦《美人魚》即使這部電影還沒有公映,而傳統(tǒng)的推薦系統(tǒng)在《美人魚》剛公映時存在冷啟動的問題。
實施例
參照結合用戶評論內容和評分的項目推薦方法,用亞馬遜的商品評論數(shù)據集進行驗證,從亞馬遜的商品中隨機選取了5個類別,分別是珠寶、藝術品、手表、軟件和汽車。這些數(shù)據的特點每種商品的用戶評分很稀疏,但是都有用戶對其的評論。如圖3所示。
參數(shù)預估:
本實施例中,α為每類商品的評分的均值,βu和βi表示用戶u和項目i的評分偏移值,這里初始都為0;γu和γi表示用戶和項目的5維潛在的 特征的隨機向量,并且5維向量相加為1,學習率η為0.05;控制映射函數(shù)平滑程度k為0.02,其中迭代次數(shù)默認為150。如圖4所示描述了將數(shù)據集分成4:1的訓練集和測試集的情況下,本發(fā)明提出的方法和其它算法在亞馬遜數(shù)據集上預測評分的均平方誤差(13)如圖4。其中RMSE數(shù)值越小,代表性能越好。由圖中我們可以清楚地發(fā)現(xiàn),本發(fā)明方法中提出的算法確實在數(shù)據稀疏的情況下提高系統(tǒng)推薦性能上有很大的意義。