本發(fā)明屬于數(shù)據(jù)挖掘應(yīng)用中個(gè)性化推薦技術(shù)領(lǐng)域,特別是涉及一種基于異構(gòu)信息網(wǎng)絡(luò)的電影推薦方法。
背景技術(shù):
(1)推薦系統(tǒng)
隨著互聯(lián)網(wǎng)的迅速普及,大數(shù)據(jù)時(shí)代已經(jīng)到來,隨之而來的是信息過載問題,如何進(jìn)行個(gè)性化的信息篩選和呈現(xiàn)是各類互聯(lián)網(wǎng)應(yīng)用領(lǐng)域中亟待解決的問題。采用科學(xué)的方法深度挖掘用戶的興趣并生成個(gè)性化推薦即構(gòu)建個(gè)性化推薦系統(tǒng),是解決這一問題的主要手段。
個(gè)性化推薦系統(tǒng)基于用戶特征、興趣和歷史行為數(shù)據(jù)構(gòu)建用戶信息模型,使用特定的推薦技術(shù),進(jìn)而挖掘用戶個(gè)人偏好,生成對(duì)目標(biāo)用戶的推薦。目前,主要的推薦系統(tǒng)有協(xié)同過濾推薦,基于內(nèi)容的推薦,基于網(wǎng)絡(luò)的推薦等。
1)協(xié)同過濾推薦
協(xié)同過濾推薦的思想是,根據(jù)目標(biāo)用戶的歷史偏好,為目標(biāo)用戶或項(xiàng)目找到相似項(xiàng),根據(jù)相似項(xiàng)對(duì)項(xiàng)目進(jìn)行評(píng)分并推薦給目標(biāo)用戶,即最近鄰技術(shù)。協(xié)同過濾推薦是推薦系統(tǒng)中運(yùn)用最成功的推薦技術(shù)之一,在各種環(huán)境下被廣泛運(yùn)用,許多不同領(lǐng)域算法和技術(shù)都相繼用于改進(jìn)和優(yōu)化其性能。按照分析對(duì)象分類,協(xié)同過濾推薦有基于用戶的最近鄰?fù)扑]和基于項(xiàng)目的最近鄰?fù)扑]。基于用戶的最近鄰?fù)扑]的基本思想:第一步,根據(jù)一個(gè)用戶對(duì)項(xiàng)目的評(píng)分?jǐn)?shù)據(jù)集,尋找與目標(biāo)用戶有相似偏好的其他用戶,這些用戶被稱為最近鄰;第二步,如果目標(biāo)用戶沒有對(duì)某一項(xiàng)目評(píng)分,則依據(jù)最近鄰過去對(duì)該項(xiàng)目的評(píng)分來預(yù)測目標(biāo)用戶對(duì)改項(xiàng)目的評(píng)分。基于項(xiàng)目的最近鄰?fù)扑]的思想與此類似。協(xié)同過濾算法簡單、高效且準(zhǔn)確率高,然而協(xié)同過濾推薦是從用戶歷史數(shù)據(jù)出發(fā)的,對(duì)于沒有評(píng)分過的用戶和沒有被評(píng)分過的項(xiàng)目,則永遠(yuǎn)無法被推薦,即冷啟動(dòng)問題,這就是協(xié)同過濾算法的固有缺點(diǎn)。另外,實(shí)際情況下,數(shù)據(jù)庫中的評(píng)分?jǐn)?shù)據(jù)往往是稀疏的,所以,也存在數(shù)據(jù)稀疏的問題。
2)基于內(nèi)容的推薦
基于內(nèi)容的推薦主要運(yùn)用于信息過濾,與協(xié)同過濾不同的是,基于內(nèi)容的推薦不以用戶對(duì)項(xiàng)目的評(píng)分為依據(jù),而是基于用戶本身的特征來判斷用戶的偏好,匹配與用戶偏好相似度高的項(xiàng)目,進(jìn)行推薦?;趦?nèi)容的推薦只需要項(xiàng)目和用戶的特征信息,不需要大量的用戶數(shù)量和歷史評(píng)分?jǐn)?shù)據(jù),只需要對(duì)目標(biāo)用戶的特征信息進(jìn)行提取分析,就可以進(jìn)行項(xiàng)目匹配推薦,有效避免了由于數(shù)據(jù)稀松導(dǎo)致的誤差,也避免了新用戶或者新項(xiàng)目在沒有歷史評(píng)分記錄的情況下存在的冷啟動(dòng)問題,另外,由于推薦是基于用戶或者項(xiàng)目的特征產(chǎn)生的,方便向用戶解釋推薦理由。然而,現(xiàn)有的技術(shù)對(duì)于內(nèi)容的分析也就是對(duì)于用戶或者項(xiàng)目的特征的提取僅限于一些簡單的文本內(nèi)容,較為復(fù)雜的內(nèi)容分析還存在一定的困難,所以基于內(nèi)容的推薦對(duì)用戶興趣的挖掘深度有限,推薦準(zhǔn)確度有限。而且用戶對(duì)于項(xiàng)目的愛好會(huì)隨著時(shí)間發(fā)生改變,基于內(nèi)容的推薦很難向用戶推薦一些新的可能會(huì)感興趣的項(xiàng)目。
3)基于網(wǎng)絡(luò)的推薦
典型復(fù)雜網(wǎng)絡(luò)近年來在各個(gè)學(xué)科領(lǐng)域被廣泛研究,逐漸成為一個(gè)獨(dú)立的研究方向。隨著復(fù)雜網(wǎng)絡(luò)的研究技術(shù)逐漸走向成熟,越來越多的研究者正在嘗試將復(fù)雜網(wǎng)絡(luò)運(yùn)用到推薦系統(tǒng)中,基于網(wǎng)絡(luò)的推薦也就發(fā)展起來。相對(duì)于基于內(nèi)容的推薦,基于網(wǎng)絡(luò)的推薦不用用戶或者項(xiàng)目的特征信息,而是使用用戶和項(xiàng)目作為結(jié)點(diǎn),使用用戶和項(xiàng)目之間的關(guān)系作為邊,構(gòu)建一個(gè)網(wǎng)絡(luò)圖。一般而言,基于網(wǎng)絡(luò)的推薦都是通過一些算法來挖掘網(wǎng)絡(luò)路徑中潛在的用戶偏好,比如使用隨即游走算法來計(jì)算用戶之間的相似度,用戶與用戶之間的路徑數(shù)量和路徑長度就代表著用戶之間的影響力。
(2)異構(gòu)網(wǎng)絡(luò)
由單一研究對(duì)象構(gòu)成的網(wǎng)絡(luò)稱為同構(gòu)網(wǎng)絡(luò),而與之相對(duì)應(yīng)的則是由多種研究對(duì)象構(gòu)成的異構(gòu)網(wǎng)絡(luò)。異構(gòu)網(wǎng)絡(luò)符合現(xiàn)實(shí)世界的關(guān)系模型,更容易包含用戶之間、用戶與項(xiàng)目之間的一些潛在的信息,因此,異構(gòu)網(wǎng)絡(luò)成為數(shù)據(jù)挖掘領(lǐng)域個(gè)性化推薦新興的一種挖掘技術(shù),尤其是面對(duì)多種研究對(duì)象的研究。一般,網(wǎng)絡(luò)的表示形式是G=(V,E,W),其中V代表研究對(duì)象的集合,E代表研究對(duì)象之間的鏈接關(guān)系的集合,W代表研究對(duì)象之間鏈接關(guān)系的權(quán)重的集合。對(duì)于異構(gòu)網(wǎng)絡(luò),|V|>1或者|E|>1,表示網(wǎng)絡(luò)中有多種類型的對(duì)象或者多種鏈接關(guān)系。與同構(gòu)網(wǎng)絡(luò)相比,異構(gòu)網(wǎng)絡(luò)不僅可以體現(xiàn)同種類型對(duì)象之間的關(guān)系,也可以體現(xiàn)不同類型對(duì)象之間的關(guān)系,如果同種類型之間并無直接聯(lián)系,還可以通過其他類型對(duì)象得到同種類型之間的間接聯(lián)系,這是異構(gòu)網(wǎng)絡(luò)最大的特點(diǎn),也是其被廣泛運(yùn)用于現(xiàn)實(shí)世界中的聚類、分類、預(yù)測等研究的根本原因。因此,如何充分利用異構(gòu)網(wǎng)絡(luò)的優(yōu)勢,深度挖掘出異構(gòu)網(wǎng)絡(luò)中潛在的用戶偏好,提高異構(gòu)網(wǎng)絡(luò)運(yùn)用時(shí)的計(jì)算速度和效率,是將異構(gòu)網(wǎng)絡(luò)運(yùn)用于數(shù)據(jù)挖掘領(lǐng)域個(gè)性化推薦時(shí)面臨的主要問題。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有的個(gè)性化推薦系統(tǒng)中普遍存在的冷啟動(dòng)、數(shù)據(jù)稀疏和文本特征分析技術(shù)有限等問題,本發(fā)明對(duì)現(xiàn)有的基于網(wǎng)絡(luò)的推薦方法進(jìn)行改進(jìn),基于用戶特征信息建立子模型,結(jié)合異構(gòu)網(wǎng)絡(luò)元路徑中潛在的信息,實(shí)現(xiàn)一種基于異構(gòu)信息網(wǎng)絡(luò)的電影推薦方法。在此基礎(chǔ)之上,對(duì)異構(gòu)網(wǎng)絡(luò)進(jìn)行社團(tuán)劃分和篩選,提高其運(yùn)算速度和效率,充分發(fā)揮異構(gòu)網(wǎng)絡(luò)的優(yōu)勢。
本發(fā)明提供的技術(shù)方案是一種基于異構(gòu)信息網(wǎng)絡(luò)的電影推薦方法,包括以下步驟:
一種基于異構(gòu)信息網(wǎng)絡(luò)的電影推薦方法,其特征在于,包括以下步驟:
步驟1,鏈接建模,以用戶、電影、電影類型三種類型的對(duì)象為結(jié)點(diǎn)構(gòu)建用戶-電影異構(gòu)網(wǎng)絡(luò),并計(jì)算用戶與電影類型之間的權(quán)值,具體是:
定義用戶-電影異構(gòu)網(wǎng)絡(luò)模型G=(V,E,W),其中V=Vu∪Vm∪Vt,Vu表示用戶集合,Vm表示電影集合,Vt表示電影類型集合,E=Euu∪Emm∪Ett∪Eum∪Eut∪Emt,其中,Euu表示用戶與用戶之間的鏈接關(guān)系,Emm表示電影與電影之間的鏈接關(guān)系,Ett表示電影類型與電影類型之間的鏈接關(guān)系,Eum表示用戶與電影之間的鏈接關(guān)系,Eut用戶與電影類型之間的鏈接關(guān)系,Emt表示電影與電影類型之間的鏈接關(guān)系;W表示所有鏈接關(guān)系的權(quán)重集合,所述鏈接關(guān)系分別為用戶與用戶之間的鏈接關(guān)系、電影類型之間的鏈接關(guān)系、用戶與電影之間的鏈接關(guān)系。
步驟2,以電影類型結(jié)點(diǎn)為中心,對(duì)異構(gòu)網(wǎng)絡(luò)進(jìn)行社團(tuán)劃分,一種電影類型為一個(gè)社團(tuán),查找不同社團(tuán)兩兩之間的共同結(jié)點(diǎn),并計(jì)算電影類型之間的權(quán)值;具有包括:
步驟2.1,利用元路徑搜索將異構(gòu)網(wǎng)絡(luò)中不同類型的結(jié)點(diǎn)以電影類型為中心進(jìn)行劃分,具有相似特征的結(jié)點(diǎn)被劃分到一個(gè)社團(tuán)當(dāng)中,劃分的結(jié)果是社團(tuán)內(nèi)結(jié)點(diǎn)具有高內(nèi)聚,社團(tuán)間結(jié)點(diǎn)具有低耦合的特征。劃分社團(tuán)的個(gè)數(shù)就是電影類型的個(gè)數(shù),每一個(gè)社團(tuán)包含該電影類型以及對(duì)該電影類型相關(guān)的電影進(jìn)行過評(píng)分的用戶即喜愛改電影類型相關(guān)電影的用戶群,一個(gè)社團(tuán)可以包含多個(gè)用戶,一個(gè)用戶也可能存在多個(gè)社團(tuán)中,實(shí)際實(shí)施時(shí)用戶結(jié)點(diǎn)與相鄰的電影類型結(jié)點(diǎn)的權(quán)值可以使用數(shù)組a[|Mtype|][|Mtypei|]來存儲(chǔ),|Mtype|表示電影類型種數(shù),|Mtypei|表示屬于第i中類型的用戶的數(shù)量,a[i][j]表示第i種電影類型與該類型電影中第j個(gè)用戶之間的權(quán)值,
步驟2.2,基于計(jì)算電影類型之間的權(quán)值,其中Mi∩Mj表示這兩種電影類型共同的電影集合,mk代表電影集合中的電影,而相應(yīng)的gk,i代表用戶i對(duì)于電影mk的評(píng)分;Mi∩Mj表示這兩種類型電影的并集。
步驟3,計(jì)算目標(biāo)用戶與每個(gè)社團(tuán)即每個(gè)電影類型結(jié)點(diǎn)之間的相關(guān)程度,設(shè)置閥值,篩選出符合要求的社團(tuán);目標(biāo)用戶與每個(gè)社團(tuán)之間的初始相關(guān)程度的計(jì)算與Dijkstra算法相似,唯一不同的在于,對(duì)于源點(diǎn)到其他結(jié)點(diǎn)的所有路徑,Dijkstra算法得到的是最短距離,而在此計(jì)算的是所有路徑長度的和。其中結(jié)點(diǎn)之間權(quán)值的計(jì)算分為兩種,一種是用戶結(jié)點(diǎn)與電影類型結(jié)點(diǎn)的權(quán)值,一種是電影類型結(jié)點(diǎn)之間的權(quán)值。
步驟4,對(duì)于每一個(gè)符合要求的社團(tuán),基于目標(biāo)用戶到電影類型結(jié)點(diǎn)的初始相關(guān)程度,計(jì)算目標(biāo)用戶與社團(tuán)中的每個(gè)用戶之間的影響力,其中,用戶之間的影響力就是用戶之間的相似性,其計(jì)算步驟為,確定與目標(biāo)用戶存在元路徑的用戶,計(jì)算元路徑每一段路徑的權(quán)值,根據(jù)元路徑復(fù)合規(guī)則計(jì)算兩用戶之間的相似性。
步驟5,計(jì)算目標(biāo)用戶與符合要求的社團(tuán)所代表的電影類型的喜愛程度,用目標(biāo)用戶與社團(tuán)中每一個(gè)用戶之間的影響力的均值來表示,社團(tuán)中各結(jié)點(diǎn)對(duì)目標(biāo)用戶影響力的平均值作為用戶劃分到該社團(tuán)的概率,即目標(biāo)用戶對(duì)于改社團(tuán)所代表的電影類型的喜愛程度,平均值越大,目標(biāo)用戶劃分到該社團(tuán)概率越大,喜愛對(duì)應(yīng)類型電影可能性越高。令目標(biāo)用戶劃分到社團(tuán)ck的概率為P2(ck|u0),其計(jì)算過程如公式其中,uk屬于社團(tuán)ck中的用戶結(jié)點(diǎn),|ck|表示其中結(jié)點(diǎn)的個(gè)數(shù),sim(u0,uk)表示目標(biāo)用戶u0和uk之間的相互影響力。
步驟6,特征建模,基于經(jīng)典樸樹貝葉斯分類進(jìn)行用戶單個(gè)特征屬性分類,分析目標(biāo)用戶的每一個(gè)特征被劃分到每種電影類型的概率;
步驟7,基于目標(biāo)用戶的每一個(gè)特征被劃分的概率,綜合計(jì)算目標(biāo)用戶對(duì)每個(gè)電影類型的喜愛程度;
步驟8,結(jié)合步驟5與步驟7中分別得出的用戶對(duì)每一種電影類型的喜愛程度,進(jìn)行加權(quán)求和,分析目標(biāo)用戶對(duì)每一種電影類型的喜愛程度;
步驟9,按照目標(biāo)用戶對(duì)每一種電影類型的喜愛程度,選擇電影類型,推薦評(píng)分高的電影,具體是,選擇用戶喜愛程度最高的前k種電影類型,分別從這些電影類型中選擇評(píng)分高于一定值的前m部電影推薦給目標(biāo)用戶。
在上述的一種基于異構(gòu)信息網(wǎng)絡(luò)的電影推薦方法,所述步驟4具體包括:
步驟4.1、兩個(gè)電影用戶之間的相互影響力計(jì)算依據(jù)用戶間的元路徑,用戶之間的相互影響包括直接影響和間接影響。
所述間接影響為用戶之間存在一條路徑,用戶影響力依靠路徑影響彼此相鄰結(jié)點(diǎn)。
所述直接影響為結(jié)點(diǎn)之間有鏈接關(guān)系,即彼此為相鄰結(jié)點(diǎn),那么彼此之間存在直接影響力。
兩個(gè)結(jié)點(diǎn)之間的存在多條間接影響路徑。對(duì)于兩結(jié)點(diǎn)之間存在直接聯(lián)系又有間接聯(lián)系,他們的相互影響是兩種影響的疊加。這種影響力大小定義為公式計(jì)算,當(dāng)i,j為不相鄰結(jié)點(diǎn)時(shí)當(dāng)i,j相鄰時(shí),sim(i,j)=wi,j,其中n表示結(jié)點(diǎn)i,j之間的路徑數(shù)目,m表示路徑序號(hào),Nb(i,j)表示結(jié)點(diǎn)i,j每一條路徑的連接點(diǎn)結(jié)點(diǎn)集合,符號(hào)表示影響力在路徑中不同階段的連接方式,因?yàn)榻Y(jié)點(diǎn)間隨著路徑長度加長,影響會(huì)逐漸變?nèi)酰绰窂皆介L影響力越小,當(dāng)結(jié)點(diǎn)i,j是相鄰結(jié)點(diǎn)時(shí),使用步驟1中的鏈接關(guān)系的權(quán)值,當(dāng)不是相鄰結(jié)點(diǎn)時(shí)并且元路徑較長時(shí),就將元路徑以某一結(jié)點(diǎn)分為兩段,這樣反復(fù)下去直到元路徑只有兩個(gè)相鄰結(jié)點(diǎn)。
步驟4.2、元路徑將依據(jù)上述三種類型的鏈接進(jìn)行構(gòu)建。在用戶-電影異構(gòu)網(wǎng)絡(luò)中,對(duì)于用戶與用戶之間的間接關(guān)系,起到連接作用的是電影類型結(jié)點(diǎn),當(dāng)用戶都喜愛某一種類型的電影,可以認(rèn)為彼此之間能夠產(chǎn)生影響。用戶之間的影響力計(jì)算公式使用Sim(u0,uij)=l(Mtypei)*a[Mtypei][j]來計(jì)算,其中,Mtypei表示第i種電影類型,l(Mtypei)表示目標(biāo)用戶u0到第i種電影類型的初始相關(guān)程度,a[Mtypei][j]表示該電影類型結(jié)點(diǎn)到該電影類型所代表的社團(tuán)中的第j個(gè)用戶uij的權(quán)值。
在上述的一種基于異構(gòu)信息網(wǎng)絡(luò)的電影推薦方法,所述步驟6具體包括:
步驟1,定義用戶各個(gè)特征屬性之間相互獨(dú)立,對(duì)用戶單個(gè)特征屬性進(jìn)行建模分類,目的在于分析用戶單個(gè)特征屬于每個(gè)電影類型的概率。在用戶-電影異構(gòu)網(wǎng)絡(luò)中,對(duì)象特征屬性進(jìn)行建模時(shí),用Xv表示對(duì)象V的特征信息屬性集,相應(yīng)地,針對(duì)文中的研究對(duì)象用戶ui來說,Xui代表其特征屬性集合。考慮電影用戶有多個(gè)特征屬性,因此Xui是一個(gè)向量,表示為Xui={Xui,1,Xui,2,...,Xui,j,Xui,n},其中n=|Xui|為屬性個(gè)數(shù)。
步驟2,目標(biāo)用戶單個(gè)特征屬性屬于某個(gè)電影類型的概率用P(ck|Xui,j)表示,P(Xui,j|ck)表示在電影類型ck中用戶ui的第j個(gè)屬性Xui,j所占的比率,Xui,j|ck服從高斯分布,即P(ck)表示屬于電影類型ck的電影占所有電影的比例,從數(shù)據(jù)中可以直接統(tǒng)計(jì)獲取,P(Xui,j)表示屬性Xui,j的概率,定義所有屬性概率相同,即P(Xui,j)=P(Xuj,i),i≠j。由貝葉斯定理得兩者之間關(guān)系如公式P(ck|Xui,j)=P(Xui,j|ck)×P(ck)/P(Xui,j)對(duì)于單個(gè)特征屬性Xui,j建模完成以后,同樣的,用戶其他特征屬性也相應(yīng)的得到建模,從而每個(gè)用戶的每個(gè)屬性都得到了建模。依據(jù)貝葉斯定理可以得出每個(gè)用戶的每個(gè)屬性屬于某個(gè)電影類型的概率。
在上述的一種基于異構(gòu)信息網(wǎng)絡(luò)的電影推薦方法,所述步驟7具體包括:復(fù)合特征屬性建模,綜合考慮所有用戶特征屬性,從用戶自身角度分析用戶屬于某個(gè)電影類型的概率,喜愛某種類型電影的可能性。是將每個(gè)用戶的每個(gè)屬性分類結(jié)果綜合起來考慮,利用對(duì)用戶屬性的分類進(jìn)而完成對(duì)用戶的分類,其主要思想是如果用戶所有屬性同時(shí)劃分到某一類型的概率比較大,那么目標(biāo)用戶劃分到該類型的可能性就比較大,即認(rèn)為目標(biāo)用戶喜愛對(duì)應(yīng)類型的電影可能性就比較高。用P(ck|u0)表示u0劃分到電影類型ck的概率。由用戶各個(gè)特征屬性之間相互獨(dú)立,得到公式Xu0,j|ck服從高斯分布,即結(jié)合步驟6中每一個(gè)特征屬性的概率公式可以得到用戶屬于每一個(gè)電影類型的概率公式
在上述的一種基于異構(gòu)信息網(wǎng)絡(luò)的電影推薦方法,如果以目標(biāo)用戶u0為例,所述步驟6和步驟7中,使用樸素貝葉斯分類,根據(jù)用戶特征建立了特征模型,可以計(jì)算出目標(biāo)用戶u0喜愛電影類型ck的概率子模型P1(ck|u0),步驟1到步驟5中,通過利用元路徑和社團(tuán)劃分,對(duì)用戶-電影異構(gòu)網(wǎng)絡(luò)進(jìn)行了分析,建立了基于鏈接的模型,得到目標(biāo)用戶u0喜愛電影類型ck的概率子模型P2(ck|u0)。這兩種模型的加權(quán)決定了目標(biāo)用戶u0對(duì)于電影類型ck的喜愛程度。定義兩種子模型的權(quán)重分別為α和β,得到統(tǒng)一概率模型P(ck|u0)=α*P1(ck|u0)+β*P2(ck|u0),其中P1(ck|u0)和P2(ck|u0)分別表示所述步驟6、步驟7和步驟1到步驟5中,通過兩種不同方式計(jì)算出的目標(biāo)用戶u0喜愛電影類型ck的概率,α為非負(fù)數(shù),表示特征模型所占權(quán)重,β為正常數(shù),表示鏈接模型所占權(quán)重。
本發(fā)明具有如下優(yōu)點(diǎn):本發(fā)明從異構(gòu)網(wǎng)絡(luò)的角度出發(fā),利用用戶基本信息,進(jìn)行用戶特征屬性建模,從用戶自身的角度分析用戶屬于某個(gè)電影類型的概率,喜愛某種電影類型的可能性,避免了使用復(fù)雜技術(shù)對(duì)用戶興趣愛好進(jìn)行分析,簡化了用戶特征屬性的獲取、分析和用戶劃分的過程,本發(fā)明還進(jìn)行鏈接建模,對(duì)異構(gòu)網(wǎng)絡(luò)進(jìn)行社團(tuán)劃分,利用異構(gòu)網(wǎng)絡(luò)中元路徑潛在的用戶之間的影響力,分析用戶屬于某一個(gè)電影類型的概率,更準(zhǔn)確地挖掘異構(gòu)網(wǎng)絡(luò)中用戶的偏好,在此基礎(chǔ)之上,對(duì)于用戶之間相似度的計(jì)算,還提出設(shè)置閥值篩選符合要求的社團(tuán),簡化計(jì)算并提高運(yùn)行效率,避免了傳統(tǒng)相似度計(jì)算中需要計(jì)算目標(biāo)用戶與每一個(gè)用戶的相似度。本發(fā)明的技術(shù)方案具有簡單、高效和高準(zhǔn)確率的特點(diǎn),能夠很好地解決現(xiàn)有推薦系統(tǒng)中的固有問題,并能較好地運(yùn)用于電影推薦系統(tǒng)中。
附圖說明
圖1本發(fā)明實(shí)施例的流程圖。
圖2本發(fā)明的用戶-電影異構(gòu)網(wǎng)絡(luò)圖示意圖。
圖3本發(fā)明實(shí)施例的用戶-電影異構(gòu)網(wǎng)絡(luò)的社團(tuán)劃分示意圖。
圖4本發(fā)明實(shí)施例的用戶-電影異構(gòu)網(wǎng)絡(luò)元路徑示意圖。
圖5本發(fā)明實(shí)施例中用戶之間的相互影響力在元路徑中的傳播示意圖。
具體實(shí)施方式
下面通過實(shí)施例,并結(jié)合附圖,對(duì)本發(fā)明的技術(shù)方案作進(jìn)一步具體的說明。
實(shí)施例
以電影推薦系統(tǒng)為例,實(shí)施例具體實(shí)現(xiàn)過程如下:
步驟1,鏈接建模,以用戶、電影、電影類型三種類型的對(duì)象為結(jié)點(diǎn)構(gòu)建用戶-電影異構(gòu)網(wǎng)絡(luò),并計(jì)算用戶與電影類型之間的權(quán)值。
根據(jù)網(wǎng)絡(luò)的表示形式,定義用戶-電影異構(gòu)網(wǎng)絡(luò)模型G=(V,E,W),如圖1所示,其中V=Vu∪Vm∪Vt,Vu表示用戶集合,Vm表示電影集合,Vt表示電影類型集合,E=Euu∪Emm∪Ett∪Eum∪Eut∪Emt,其中,Euu表示用戶與用戶之間的鏈接關(guān)系,Emm表示電影與電影之間的鏈接關(guān)系,Ett表示電影類型與電影類型之間的鏈接關(guān)系,Eum表示用戶與電影之間的鏈接關(guān)系,Eut用戶與電影類型之間的鏈接關(guān)系,Emt表示電影與電影類型之間的鏈接關(guān)系。其中W表示六種鏈接關(guān)系的權(quán)重集合,他們的計(jì)算方式不盡相同。本技術(shù)主要考慮用戶之間的鏈接關(guān)系、電影類型之間的鏈接關(guān)系以及用戶與電影類型之間的鏈接關(guān)系。用戶對(duì)于某個(gè)電影類型的喜愛程度即Eut用該電影類型中所有被用戶評(píng)分過的電影的平均分來量化,用戶之間的鏈接關(guān)系Euu用他們直接的相互影響力來量化,電影類型之間的鏈接關(guān)系用不同電影類型之間共同的電影來進(jìn)行量化,即邊的權(quán)值。
異構(gòu)網(wǎng)絡(luò)中的元路徑是兩個(gè)結(jié)點(diǎn)通過不同鏈接關(guān)系建立的一條可達(dá)路徑,傳遞著用戶之間的影響力,如圖2所示,在用戶-電影異構(gòu)網(wǎng)絡(luò)中,有6種鏈接關(guān)系,但是在利用元路徑計(jì)算時(shí),所使用的鏈接關(guān)系主要有兩種,一種是用戶與電影類型之間的鏈接關(guān)系,用L1表示,電影類型與電影類型之間的鏈接關(guān)系,用L2表示。
對(duì)于用戶結(jié)點(diǎn)與電影類型結(jié)點(diǎn)之間,由于電影類型對(duì)應(yīng)著多部電影,它們之間是一對(duì)多的關(guān)系,以用戶對(duì)于特定電影類型的所有電影的平均評(píng)分作為權(quán)值,即用戶與該電影類型的初始相關(guān)程度。特別地,為了整個(gè)推薦算法計(jì)算,需要將所有權(quán)值進(jìn)行歸一化處理,使其屬于0~1,歸一化使用函數(shù)公式f(x)=(x-Xmin)/(Xmax-Xmin),其中,x為歸一化之前的值,f(x)為歸一化后的值,Xmin為數(shù)據(jù)集合X中的最小值,Xmax為數(shù)據(jù)集合X中的最大值。令元路徑權(quán)值為w,用戶i對(duì)于電影類型Mj中電影mk評(píng)分為gk,i,那么可以得到歸一化之前的權(quán)值W,計(jì)算方法如公式其中|Mj|為電影類型為Mj的電影數(shù)量,結(jié)合上述兩式,最終歸一化后的權(quán)值W為公式即L1鏈接關(guān)系的權(quán)值計(jì)算方式。
步驟2,以電影類型為中心,對(duì)異構(gòu)網(wǎng)絡(luò)進(jìn)行社團(tuán)劃分,一種電影類型為一個(gè)社團(tuán),查找不同社團(tuán)兩兩之間的共同結(jié)點(diǎn),并計(jì)算電影類型之間的權(quán)值。
利用元路徑搜索將異構(gòu)網(wǎng)絡(luò)中不同類型的結(jié)點(diǎn)以電影類型為中心進(jìn)行劃分,具有相似特征的結(jié)點(diǎn)被劃分到一個(gè)社團(tuán)當(dāng)中,劃分的結(jié)果是社團(tuán)內(nèi)結(jié)點(diǎn)具有高內(nèi)聚,社團(tuán)間結(jié)點(diǎn)具有低耦合的特征。劃分社團(tuán)的個(gè)數(shù)就是電影類型的個(gè)數(shù),每一個(gè)社團(tuán)包含該電影類型以及對(duì)該電影類型相關(guān)的電影進(jìn)行過評(píng)分的用戶即喜愛改電影類型相關(guān)電影的用戶群,一個(gè)社團(tuán)可以包含多個(gè)用戶,一個(gè)用戶也可能存在多個(gè)社團(tuán)中,實(shí)際實(shí)施時(shí)用戶結(jié)點(diǎn)與相鄰的電影類型結(jié)點(diǎn)的權(quán)值可以使用數(shù)組a[|Mtype|][|Mtypei|]來存儲(chǔ),|Mtype|表示電影類型種數(shù),|Mtypei|表示屬于第i中類型的用戶的數(shù)量,a[i][j]表示第i種電影類型與該類型電影中第j個(gè)用戶之間的權(quán)值,其權(quán)值計(jì)算方式如步驟1中的L1鏈接關(guān)系的去權(quán)值計(jì)算。
社團(tuán)所代表的電影類型之間沒有之間鏈接關(guān)系,但因?yàn)樗麄冇泄餐碾娪皭酆谜?,所以可以使用共同愛好者的?shù)量來量化兩種電影類型結(jié)點(diǎn)之間的鏈接權(quán)值。社團(tuán)間共同用戶的查找有如下步驟:第一步,對(duì)原始數(shù)據(jù)進(jìn)行分解,用戶與看過的電影是一一對(duì)應(yīng)的關(guān)系,但是一部電影可以對(duì)應(yīng)多種電影類型,所以將用戶對(duì)一部電影的評(píng)分記錄分解為多條記錄,使一條記錄對(duì)應(yīng)一種電影類型,具體實(shí)施時(shí)可以構(gòu)建一個(gè)Urecord數(shù)據(jù)結(jié)構(gòu),包含UID、Nuser、sex、age、occupation、MID、Mname、Mtype、goal和數(shù)組a,其中UID表示電影用戶ID,Nuser表示用戶記錄分解以后每個(gè)UID對(duì)應(yīng)的記錄數(shù),sex表示用戶性別:0表示男性、1表示女性,age表示用戶年齡,occupation代表用戶職業(yè)用1-21來表示,對(duì)應(yīng)21種職業(yè),MID表示電影ID,Mname表示電影名字,Mtype代表電影類型用1-18表示表示,對(duì)應(yīng)18種電影類型,goal表示電影用戶對(duì)電影的評(píng)分,數(shù)組a表示用戶是否對(duì)每個(gè)類型的電影進(jìn)行過評(píng)分,每個(gè)元素為0或者1,假設(shè)原數(shù)據(jù)中電影類型共18個(gè),因此數(shù)組a大小為18。a[i]=0表示該用戶沒有對(duì)第i個(gè)電影類型進(jìn)行過評(píng)分,a[i]=1表示該用戶對(duì)第i個(gè)電影類型進(jìn)行過評(píng)分。第二步,統(tǒng)計(jì)分解以后的記錄個(gè)數(shù)N,具體實(shí)施時(shí)用Vector<Urecord>來存儲(chǔ)所有記錄。第三步,遍歷所有記錄,將相同電影類型的記錄,存放在一個(gè)集合中,具體實(shí)施時(shí),可以使用HashSet存儲(chǔ)同一電影類型的所以記錄,有多少中電影類型,就使用多少個(gè)HashSet。第四步,對(duì)記錄不同電影類型的集合取交集。第五步,檢索交集中每一條記錄所對(duì)應(yīng)的用戶,相同用戶只記錄一次,那么,所得用戶的集合就是兩個(gè)社團(tuán)之間共同的結(jié)點(diǎn)。
對(duì)于電影類型之間的權(quán)值主要利用不同電影類型的共同電影進(jìn)行計(jì)算,計(jì)算公式如即L2連接關(guān)系的計(jì)算方式,其中Mi∩Mj表示這兩種電影類型共同的電影集合,mk代表電影集合中的電影,而相應(yīng)的gk,i代表用戶i對(duì)于電影mk的評(píng)分;Mi∩Mj表示這兩種類型電影的并集。
步驟3,計(jì)算目標(biāo)用戶與每個(gè)社團(tuán)即每個(gè)電影類型結(jié)點(diǎn)之間的相關(guān)程度,設(shè)置閥值,篩選出符合要求的社團(tuán)。
基于目標(biāo)用戶結(jié)點(diǎn)、電影類型結(jié)點(diǎn)集合以及權(quán)值鄰接矩陣,使用Dijkstra算法計(jì)算路徑長度之和,實(shí)現(xiàn)計(jì)算目標(biāo)用戶結(jié)點(diǎn)與每一個(gè)電影類型結(jié)點(diǎn)的影響力,即與該社團(tuán)的相關(guān)程度。并通過設(shè)置閾值,篩選出閾值之上的社團(tuán),從而節(jié)省計(jì)算,提高效率。
步驟4,對(duì)于每一個(gè)符合要求的社團(tuán),基于目標(biāo)用戶到電影類型結(jié)點(diǎn)的初始相關(guān)程度,計(jì)算目標(biāo)用戶與社團(tuán)中的每個(gè)用戶之間的影響力。
兩個(gè)電影用戶之間的相互影響力計(jì)算依據(jù)用戶間的元路徑,用戶之間的相互影響分為直接影響和間接影響。間接影響反映了用戶之間存在一條路徑,那么用戶影響力就會(huì)依靠路徑影響彼此相鄰結(jié)點(diǎn)。如果結(jié)點(diǎn)之間有鏈接關(guān)系,即彼此為相鄰結(jié)點(diǎn),那么彼此之間存在直接影響力。在網(wǎng)路圖中,兩個(gè)結(jié)點(diǎn)之間的可能存在多條間接影響路徑。特別地,對(duì)于兩結(jié)點(diǎn)之間存在直接聯(lián)系又有間接聯(lián)系,他們的相互影響是兩種影響的疊加。這種影響力大小可以定義為公式計(jì)算,當(dāng)i,j為不相鄰結(jié)點(diǎn)時(shí)當(dāng)i,j相鄰時(shí),sim(i,j)=wi,j,其中n表示結(jié)點(diǎn)i,j之間的路徑數(shù)目,m表示路徑序號(hào),Nb(i,j)表示結(jié)點(diǎn)i,j每一條路徑的連接點(diǎn)結(jié)點(diǎn)集合,符號(hào)⊕表示影響力在路徑中不同階段的連接方式,因?yàn)榻Y(jié)點(diǎn)間隨著路徑長度加長,影響會(huì)逐漸變?nèi)?,即路徑越長影響力越小,為了反映這種特性,在本文中,連接方式用相乘的方式。公式原理是分治與遞推思想,當(dāng)結(jié)點(diǎn)i,j是相鄰結(jié)點(diǎn)時(shí),使用步驟1中的鏈接關(guān)系的權(quán)值,當(dāng)不是相鄰結(jié)點(diǎn)時(shí)并且元路徑較長時(shí),就將元路徑以某一結(jié)點(diǎn)分為兩段,這樣反復(fù)下去直到元路徑只有兩個(gè)相鄰結(jié)點(diǎn)。
用戶-電影異構(gòu)網(wǎng)絡(luò)中,一共存在6種類型的鏈接,主要研究三種類型的鏈接關(guān)系,分別為用戶與用戶之間的鏈接關(guān)系、電影類型之間的鏈接關(guān)系、用戶與電影之間的鏈接關(guān)系。用戶之間的相互影響可能會(huì)涉及到上述三種類型的鏈接。在用戶-電影異構(gòu)網(wǎng)絡(luò)中,不同鏈接關(guān)系對(duì)于影響程度作用會(huì)不一樣,而異構(gòu)網(wǎng)絡(luò)中特有的的元路徑正好可以區(qū)分不同類型的鏈接關(guān)系,因此本文將根據(jù)用戶之間的元路徑來研究用戶之間的相互影響。本文中,元路徑將依據(jù)上述三種類型的鏈接進(jìn)行構(gòu)建。在用戶-電影異構(gòu)網(wǎng)絡(luò)中,對(duì)于用戶與用戶之間的間接關(guān)系,起到連接作用的是電影類型結(jié)點(diǎn),當(dāng)用戶都喜愛某一種類型的電影,可以認(rèn)為彼此之間能夠產(chǎn)生影響。用戶之間的影響力計(jì)算公式可以使用Sim(u0,uij)=l(Mtypei)*a[Mtypei][j]來計(jì)算,其中,Mtypei表示第i種電影類型,l(Mtypei)表示目標(biāo)用戶u0到第i種電影類型的初始相關(guān)程度,a[Mtypei][j]表示改電影類型結(jié)點(diǎn)到改電影類型所代表的社團(tuán)中的第j個(gè)用戶uij的權(quán)值。
步驟5,計(jì)算目標(biāo)用戶與符合要求的社團(tuán)所代表的電影類型的喜愛程度。
社團(tuán)中各結(jié)點(diǎn)對(duì)目標(biāo)用戶影響力的平均值作為用戶劃分到該社團(tuán)的概率,即目標(biāo)用戶對(duì)于改社團(tuán)所代表的電影類型的喜愛程度,平均值越大,目標(biāo)用戶劃分到該社團(tuán)概率越大,喜愛對(duì)應(yīng)類型電影可能性越高。令目標(biāo)用戶劃分到社團(tuán)ck的概率為P2(ck|u0),其計(jì)算過程如公式其中,uk屬于社團(tuán)ck中的用戶結(jié)點(diǎn),|ck|表示其中結(jié)點(diǎn)的個(gè)數(shù),sim(u0,uk)表示目標(biāo)用戶u0和uk之間的相互影響力。
步驟6,特征建模,用戶單個(gè)特征屬性分類,分析目標(biāo)用戶的每一個(gè)特征被劃分到每種電影類型的概率。
假設(shè)用戶各個(gè)特征屬性之間相互獨(dú)立,對(duì)用戶單個(gè)特征屬性進(jìn)行建模分類,目的在于分析用戶單個(gè)特征屬于每個(gè)電影類型的概率。在用戶-電影異構(gòu)網(wǎng)絡(luò)中,對(duì)象特征屬性進(jìn)行建模時(shí),用Xv表示對(duì)象V的特征信息屬性集,相應(yīng)地,針對(duì)文中的研究對(duì)象用戶ui來說,Xui代表其特征屬性集合??紤]電影用戶有多個(gè)特征屬性,因此Xui是一個(gè)向量,表示為Xui={Xui,1,Xui,2,...,Xui,j,Xui,n},其中n=|Xui|為屬性個(gè)數(shù)。
目標(biāo)用戶單個(gè)特征屬性屬于某個(gè)電影類型的概率用P(ck|Xui,j)表示,P(Xui,j|ck)表示在電影類型ck中用戶ui的第j個(gè)屬性Xui,j所占的比率,一般來講,Xui,j|ck是服從高斯分布的,即P(ck)表示屬于電影類型ck的電影占所有電影的比例,從數(shù)據(jù)中可以直接統(tǒng)計(jì)獲取,P(Xui,j)表示屬性Xui,j的概率,在本文中認(rèn)為所有屬性概率相同,即P(Xui,j)=P(Xuj,i),i≠j。由貝葉斯定理得兩者之間關(guān)系如公式P(ck|Xui,j)=P(Xui,j|ck)×P(ck)/P(Xui,j)對(duì)于單個(gè)特征屬性Xui,j建模完成以后,同樣的,用戶其他特征屬性也相應(yīng)的得到建模,從而每個(gè)用戶的每個(gè)屬性都得到了建模。依據(jù)貝葉斯定理可以得出每個(gè)用戶的每個(gè)屬性屬于某個(gè)電影類型的概率
步驟7,基于目標(biāo)用戶的每一個(gè)特征被劃分的概率,綜合計(jì)算目標(biāo)用戶對(duì)每個(gè)電影類型的喜愛程度。
復(fù)合特征屬性建模,綜合考慮所有用戶特征屬性,從用戶自身角度分析用戶屬于某個(gè)電影類型的概率,喜愛某種類型電影的可能性。是將每個(gè)用戶的每個(gè)屬性分類結(jié)果綜合起來考慮,利用對(duì)用戶屬性的分類進(jìn)而完成對(duì)用戶的分類,其主要思想是如果用戶所有屬性同時(shí)劃分到某一類型的概率比較大,那么目標(biāo)用戶劃分到該類型的可能性就比較大,即認(rèn)為目標(biāo)用戶喜愛對(duì)應(yīng)類型的電影可能性就比較高。用P(ck|u0)表示u0劃分到電影類型ck的概率。由于步驟6中已經(jīng)假設(shè)用戶各個(gè)特征屬性之間相互獨(dú)立的所以得公式
因?yàn)閄u0,j|ck是服從高斯分布的,結(jié)合步驟6中每一個(gè)特征屬性的概率公式可以得到用戶屬于每一個(gè)電影類型的概率公式
步驟8,結(jié)合步驟5與步驟7中分別得出的用戶對(duì)每一種電影類型的喜愛程度,進(jìn)行加權(quán)求和,分析目標(biāo)用戶對(duì)每一種電影類型的喜愛程度。
以目標(biāo)用戶u0為例,步驟6和步驟7,使用樸素貝葉斯分類,根據(jù)用戶特征建立了特征模型,可以計(jì)算出目標(biāo)用戶u0喜愛電影類型ck的概率子模型P1(ck|u0),步驟1到步驟5中,通過利用元路徑和社團(tuán)劃分,對(duì)用戶-電影異構(gòu)網(wǎng)絡(luò)進(jìn)行了分析,建立了基于鏈接的模型,得到目標(biāo)用戶u0喜愛電影類型ck的概率子模型P2(ck|u0)。這兩種模型的加權(quán)決定了目標(biāo)用戶u0對(duì)于電影類型ck的喜愛程度。設(shè)兩種子模型的權(quán)重分別為α和β,得到統(tǒng)一概率模型P(ck|u0)=α*P1(ck|u0)+β*P2(ck|u0),其中P1(ck|u0)和P2(ck|u0)分別表示所述步驟6、步驟7和步驟1到步驟5中,通過兩種不同方式計(jì)算出的目標(biāo)用戶u0喜愛電影類型ck的概率,α為非負(fù)數(shù),表示特征模型所占權(quán)重,β為正常數(shù),表示鏈接模型所占權(quán)重。
步驟9,按照目標(biāo)用戶對(duì)每一種電影類型的喜愛程度,選擇電影類型,推薦評(píng)分高的電影電影。
結(jié)合目標(biāo)用戶自身特征屬性和其他具有相同愛好的用戶對(duì)其的影響力兩方面來預(yù)測目標(biāo)用戶對(duì)于每種類型的電影的喜愛程度,喜愛程度越高,被推薦的可能性越大。因此推薦策略就是取前k種喜愛程度高的電影類型作為推薦目標(biāo),再分別從每種電影類型類型中取評(píng)分在3(評(píng)分為1-5,3分及其以上的認(rèn)為是喜歡)以上的前m部電影推送給目標(biāo)用戶。
現(xiàn)有推薦技術(shù)普遍存在數(shù)據(jù)稀松、冷啟動(dòng)等問題,本發(fā)明充分利用了異構(gòu)網(wǎng)絡(luò)存在潛在用戶興趣的優(yōu)勢,結(jié)合用戶特征屬性,從兩個(gè)角度挖掘用戶偏好,很好的解決了數(shù)據(jù)稀松和冷啟動(dòng)問題,在此基礎(chǔ)之上,還提出在異構(gòu)網(wǎng)絡(luò)中進(jìn)行社團(tuán)劃分以后,進(jìn)行閾值篩選,有效的提高了算法的執(zhí)行效率。
本文中所描述的具體實(shí)施例僅僅是對(duì)本發(fā)明精神作舉例說明。本發(fā)明所屬技術(shù)領(lǐng)域的技術(shù)人員可以對(duì)所描述的具體實(shí)施例做各種各樣的修改或補(bǔ)充或采用類似的方式替代,但并不會(huì)偏離本發(fā)明的精神或者超越所附權(quán)利要求書所定義的范圍。