本發(fā)明涉及一種基于分層隱變量模型的新聞推薦方法。
背景技術(shù):
推薦系統(tǒng)大體上可以分為三個大類:基于內(nèi)容的推薦,協(xié)同過濾推薦和混合的推薦系統(tǒng)?;趦?nèi)容的推薦方法起源于信息檢索和信息過濾,它基于內(nèi)容的相似度進(jìn)行檢索,導(dǎo)致推薦的內(nèi)容過于相似,缺乏新穎性;基于協(xié)同過濾的推薦方法是最早用戶郵件過濾和文檔過濾,基于用戶評分矩陣中用戶或者物品的相似度進(jìn)行推薦,但是實際中用戶物品評分矩陣非常稀疏,導(dǎo)致推薦不準(zhǔn)確;而混合的推薦系統(tǒng)將用戶特征信息和物品特征信息加入線性模型中,從而將基于內(nèi)容的推薦和協(xié)同過濾的信息融合在一起,既保留了基于內(nèi)容過濾中用戶和物品的特征,又添加了協(xié)同過濾中關(guān)于評分矩陣的信息。
在這個混合模型中,用戶特征和物品特征部分構(gòu)建的是線性模型,然而對于用戶群或者物品群單純構(gòu)建線性模型卻不合理,這是由于強(qiáng)行用線性模型去擬合非線性的數(shù)據(jù)會導(dǎo)致很大的誤差。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)的不足,提供一種基于分層隱變量模型的新聞推薦方法。
為實現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案:
一種基于分層隱變量模型的新聞推薦方法,包括以下步驟:
s1、新聞抓取,從各大門戶網(wǎng)站爬取不同類型的新聞,并將其儲存在推薦系統(tǒng)的本地數(shù)據(jù)庫;
s2、在推薦系統(tǒng)中進(jìn)行用戶特征的提取,獲得用戶特征向量xj;
s3、對抓取的新聞進(jìn)行新聞特征的提取,獲得新聞特征向量yi;
s4、使用聚類算法對相似的新聞特征及用戶特征進(jìn)行聚類,將用戶特征xj分為m類,將新聞特征yi分為n類;
s5、對s4劃分的每一類相似的新聞特征及用戶特征建立分層隱變量模型以預(yù)測用戶對新聞的評分;
s6、根據(jù)s5預(yù)測出的用戶對新聞的評分選取預(yù)測評分最高的若干條新聞推薦給用戶。
進(jìn)一步地,s2包括:
s21、對系統(tǒng)注冊用戶提取用戶的注冊信息,包括性別、年齡以及職業(yè),以獲得用戶顯式特征ij;
s22、對用戶最新閱讀、操作的若干條新聞提取關(guān)鍵詞,抽取頻率最高的若干個關(guān)鍵詞作為用戶隱式特征rhj;
s23、構(gòu)成用戶特征向量xj={ij,rhj}。
更進(jìn)一步地,步驟s22中頻率最高的若干個關(guān)鍵詞的抽取方法為,
其中f(x,a)表示用戶x的歷史行為中出現(xiàn)關(guān)鍵詞a的次數(shù),f1(k1,a)表示用戶x近期閱讀的l篇新聞中第k1篇中關(guān)鍵詞a出現(xiàn)的次數(shù),f2(k2,a)表示用戶近期有過點贊或者評論的n篇新聞的第k2篇新聞中關(guān)鍵詞a出現(xiàn)的次數(shù);f3(k3,a)表示近期用戶分享的m篇新聞中第k3篇新聞中關(guān)鍵詞a出現(xiàn)的次數(shù);ω1、ω2、ω3為權(quán)重,ω1<ω2<ω3。
進(jìn)一步地,s3包括:
s31、對抓取的新聞的標(biāo)題及正文內(nèi)容使用分詞軟件進(jìn)行分詞;
s32、使用tf-idf模型提取新聞的關(guān)鍵詞,選取新聞原有的一個標(biāo)簽ti和若干個權(quán)值最高的關(guān)鍵詞ki構(gòu)成新聞特征向量yi={ti,ki}。
進(jìn)一步地,步驟s4中所述聚類算法為som自組織聚類算法。
進(jìn)一步地,步驟s5具體包括:
s51、建立基于聚類結(jié)果的分層隱變量模型
用戶特征xj分為m類,則m類中第q類的用戶有mq個,用
s52、獲得所述分層隱變量模型的優(yōu)化問題
分別用χq,γp表示第q類用戶的下標(biāo)集和第p類新聞的下標(biāo)集,則每一類(p,q)的優(yōu)化問題為:
式中,
更進(jìn)一步地,為防止步驟s52求解分層隱變量模型的優(yōu)化問題時過擬合,使用由l1正則化和l2正則化的凸組合對分層隱變量模型進(jìn)行彈性網(wǎng)絡(luò)懲罰,則優(yōu)化問題變?yōu)椋?/p>
式中,
再進(jìn)一步地,根據(jù)步驟s5分層隱變量模型求出的參數(shù),用戶對新聞的預(yù)測評分為:
進(jìn)一步地,還包括步驟s7:重復(fù)步驟s1-s6,根據(jù)新聞特征和用戶特征的變化不斷更新所要推薦的新聞。
采用上述技術(shù)方案后,本發(fā)明與背景技術(shù)相比,具有如下優(yōu)點:
1、推薦的準(zhǔn)確度高,基于門限自回歸的思想,在整個混合模型中,把用戶特征和物品特征分成若干個小類,在每一類上分別建立隱變量模型,之后再把這若干類聯(lián)合在一起構(gòu)成了分層隱變量模型,從而避免了用線性模型區(qū)擬合非線性數(shù)據(jù)時誤差大的缺陷;
2、使用l1正則化與l2正則化的凸組合對模型進(jìn)行彈性網(wǎng)絡(luò)懲罰,防止模型求解時過擬合;
3、高擴(kuò)展性,可以方便地在用戶特征向量和新聞特征向量中添加其它因素;
4、實時性好,評分預(yù)測可實現(xiàn)在線計算,并不斷根據(jù)新聞特征與用戶特征的變化更新所要推薦的新聞。
附圖說明
圖1為本發(fā)明算法框圖;
圖2為采用som聚類算法構(gòu)建分層隱變量模型的算法流程圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
實施例
門限自回歸的想法在于:把整個空間分成若干個小空間,在每個小空間考慮線性模型,然后將這些小的模型合在一起,就成了整個空間上的模型。本申請在整個混合模型中,把用戶特征和物品特征也分成若干個小類,在每一類上分別建立隱變量模型,之后再把這若干類聯(lián)合在一起構(gòu)成整個隱變量模型,稱為分層隱變量模型。
如圖1所示是本發(fā)明的流程框圖,本發(fā)明主要包括七大步驟。
s1、新聞抓取,根據(jù)不同門戶網(wǎng)站的結(jié)構(gòu),配置不同的正則表達(dá)式,從各大門戶網(wǎng)站爬取不同類型的新聞,并將其儲存在推薦系統(tǒng)的本地數(shù)據(jù)庫中,爬取的內(nèi)容包括新聞的標(biāo)題、正文內(nèi)容、標(biāo)簽、作者、來源網(wǎng)站url等。
s2、在推薦系統(tǒng)中進(jìn)行用戶特征的提取,獲得用戶特征向量xj,具體包括三個步驟。
s21、對系統(tǒng)注冊用戶提取用戶的注冊信息,包括性別、年齡以及職業(yè)等,以獲得用戶顯式特征ij,ij={gender,age,occupation}。
s22、對用戶最新閱讀、操作的若干條新聞提取關(guān)鍵詞,抽取頻率最高的若干個關(guān)鍵詞作為用戶隱式特征rhj,rhj={nj1,nj2,…,nj5}。本實施例中抽取的關(guān)鍵詞為頻率最高的5個關(guān)鍵詞,具體抽取方法為:
其中f(x,a)表示用戶x的歷史行為中出現(xiàn)關(guān)鍵詞a的次數(shù),f1(k1,a)表示用戶x近期閱讀的l篇新聞中第k1篇中關(guān)鍵詞a出現(xiàn)的次數(shù),f2(k2,a)表示用戶近期有過點贊或者評論的n篇新聞的第k2篇新聞中關(guān)鍵詞a出現(xiàn)的次數(shù);f3(k3,a)表示近期用戶分享的m篇新聞中第k3篇新聞中關(guān)鍵詞a出現(xiàn)的次數(shù);ω1、ω2、ω3為權(quán)重,ω1<ω2<ω3。
s23、用戶顯式特征ij與用戶隱式特征rhj構(gòu)成用戶特征向量xj={ij,rhj}。
s3、對抓取的新聞進(jìn)行新聞特征的提取,獲得新聞特征向量yi,具體如下:
s31、對抓取的新聞的標(biāo)題及正文內(nèi)容使用分詞軟件進(jìn)行分詞;
s32、使用tf-idf模型提取新聞的關(guān)鍵詞,對新聞標(biāo)題中的關(guān)鍵詞賦予較高權(quán)重,新聞內(nèi)容中的關(guān)鍵詞賦予較低權(quán)重,選取新聞原有的一個標(biāo)簽ti和若干個權(quán)值最高的關(guān)鍵詞ki,則一篇id為i的新聞可被表示為yi={ti,ki},這個集合構(gòu)成新聞的特征向量。本實施例中ki的數(shù)量為7個。
s4、使用聚類算法對相似的新聞特征及用戶特征進(jìn)行聚類,將用戶特征xj分為m類,將新聞特征yi分為n類;
本發(fā)明采用自組織神經(jīng)網(wǎng)絡(luò)聚類算法對用戶和新聞進(jìn)行聚類,假設(shè)用戶特征向量和新聞特征向量具有一定的拓?fù)浣Y(jié)構(gòu),自組織神經(jīng)網(wǎng)絡(luò)聚類算法把高維的用戶和新聞特征向量離散化到一維或者二維的離散空間上,然后將相似程度較高的神經(jīng)元聚集在一起,通過自組織方式,將相似的用戶和相似的新聞聚成一類。由于用戶和新聞聚類方法相同,這里只討論用戶聚類的情況,如圖2所示的是采用som聚類算法構(gòu)建分層隱變量模型的算法流程圖,其中som算法具體為:
(1)設(shè)定輸出層有m個神經(jīng)元,每個神經(jīng)元都賦予一個初值權(quán)向量ωl;
(2)輸入用戶特征向量x,計算與ωl的距離d,最小的就為獲勝神經(jīng)元;
(3)輸入學(xué)習(xí)參數(shù)率α的初始值αold,在獲勝神經(jīng)元的領(lǐng)域n內(nèi)更新權(quán)值:αnew=αold×0.5,ωl=ωl+αnew(x-ωl);
(4)終止條件為αnew足夠小,否則返回(2);
(5)得到m個簇的中心ωl,然后就可以得到用戶特征的聚類結(jié)果。
s5、對s4劃分的每一類相似的新聞特征及用戶特征建立分層隱變量模型以預(yù)測用戶對新聞的評分。
s51、建立基于聚類結(jié)果的分層隱變量模型:
步驟s4中將用戶特征xj分為m類,則m類中第q類的用戶有mq個,用
s52、獲得所述分層隱變量模型的優(yōu)化問題:
分別用χq,γp表示第q類用戶的下標(biāo)集和第p類新聞的下標(biāo)集,則每一類(p,q)的優(yōu)化問題為:
式中,
為防止步驟s52求解分層隱變量模型的優(yōu)化問題時過擬合,需要對分層隱變量模型進(jìn)行懲罰。
當(dāng)使用l1正則化作為懲罰項時,優(yōu)化函數(shù)為:
其中,式中,
算法過程:
(1)輸入
(2)假設(shè)每一塊都已經(jīng)迭代了m-1步:
a、對于第q類的每一個
其中
b、對于第p類的每一個
這個時候問題變?yōu)橐粋€lasso問題,就能分別解出第m步的迭代
c、對于第p類的每一個(αq,βp),給定
此時問題就成為一個回歸問題,由于
終止條件:如果
選擇l1正則化做為懲罰項可以使得矩陣稀疏達(dá)到特征選擇的效果,并簡化算法。
當(dāng)使用l2正則化作為懲罰項時,優(yōu)化函數(shù)為:
其算法過程類似于l1正則化,采用塊坐標(biāo)下降,將問題轉(zhuǎn)化為三個子問題,區(qū)別在于:a和b兩個步驟中l(wèi)asso問題變成了嶺回歸問題。采用l2正則化比l1的正則化更直觀一些,而且在很多的情況下,l2范數(shù)的預(yù)測精度要優(yōu)于l1。
本實施例采用由l1正則化和l2正則化的凸組合對分層隱變量模型進(jìn)行彈性網(wǎng)絡(luò)懲罰,則優(yōu)化問題變?yōu)椋?/p>
式中γ為線性組合參數(shù)。彈性網(wǎng)絡(luò)懲罰的算法與l1的算法一致,先對新聞特征和用戶特征進(jìn)行聚類后采用塊坐標(biāo)下降的方法來求解最優(yōu)解,區(qū)別在于:a和b兩個步驟中l(wèi)asso問題變成了elasticnet問題。使用彈性網(wǎng)絡(luò)懲罰后,既可以像l1范數(shù)一樣篩選變量,作出特征選擇,又可以像l2范數(shù)一樣對相似的變量給出相似的收縮,從而將無關(guān)緊要的特征篩選出去,把具有相似性質(zhì)的特征給保留下來。
根據(jù)分層隱變量模型求解出參數(shù)αq、βp、
s6、根據(jù)s5預(yù)測出的用戶對新聞的評分選取預(yù)測評分最高的若干條新聞推薦給用戶,本發(fā)明中推薦的新聞數(shù)為10條。
s7、重復(fù)步驟s1-s6,根據(jù)新聞特征和用戶特征的變化不斷更新所要推薦的新聞。
以上所述,僅為本發(fā)明較佳的具體實施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。