本發(fā)明屬于進(jìn)化算法和個(gè)性化推薦
技術(shù)領(lǐng)域:
。運(yùn)用改進(jìn)的多目標(biāo)遺傳算法ffnsga-ii(具體涉及綜合相對(duì)熵過(guò)濾初始化種群,自適應(yīng)非劣解填充)做個(gè)性化電影推薦,以期多目標(biāo)遺傳算法對(duì)個(gè)性化電影推薦的性能提升。
背景技術(shù):
:隨著大數(shù)據(jù)時(shí)代的到來(lái),數(shù)據(jù)呈爆炸式增長(zhǎng),使得互聯(lián)網(wǎng)用戶在面對(duì)大量信息時(shí)無(wú)法從中獲得對(duì)自己真正有用的那部分信息,對(duì)信息的使用效率反而降低了,這就是所謂的信息超載問(wèn)題。推薦系統(tǒng)是解決信息超載問(wèn)題非常有應(yīng)用前景的方法。推薦系統(tǒng)根據(jù)用戶信息和項(xiàng)目屬性數(shù)據(jù),分析出用戶的興趣愛(ài)好,在項(xiàng)目集中選擇合適的可能被用戶關(guān)心的項(xiàng)目子集,預(yù)測(cè)被購(gòu)買的可能,然后根據(jù)用戶興趣點(diǎn)進(jìn)行個(gè)性化推薦。常用的推薦算法有協(xié)同過(guò)濾推薦算法、基于內(nèi)容的推薦算法、基于網(wǎng)絡(luò)結(jié)構(gòu)的推薦算法。協(xié)同過(guò)濾推薦算法可以分為兩類:基于記憶的和基于模型的算法?;谟洃浀乃惴ǜ鶕?jù)系統(tǒng)中所有被打過(guò)分的產(chǎn)品信息進(jìn)行預(yù)測(cè)?;谀P偷乃惴ㄊ占蚍?jǐn)?shù)據(jù)進(jìn)行學(xué)習(xí)并推斷用戶行為模型,進(jìn)而對(duì)某個(gè)產(chǎn)品進(jìn)行預(yù)測(cè)打分?;谀P偷膮f(xié)同過(guò)濾算法和基于記憶的算法的不同在于,基于模型的方法不是基于一些啟發(fā)規(guī)則進(jìn)行預(yù)測(cè)計(jì)算,而是基于對(duì)已有數(shù)據(jù)應(yīng)用統(tǒng)計(jì)和機(jī)器學(xué)習(xí)得到的模型進(jìn)行預(yù)測(cè)?;趦?nèi)容的推薦是協(xié)同過(guò)濾技術(shù)的延續(xù)與發(fā)展,它不需要依據(jù)用戶對(duì)項(xiàng)目的評(píng)價(jià)意見(jiàn),而是依據(jù)用戶已經(jīng)選擇的產(chǎn)品內(nèi)容信息計(jì)算用戶之間的相似性,進(jìn)而進(jìn)行相應(yīng)的推薦?;诰W(wǎng)格結(jié)構(gòu)的推薦算法不考慮用戶和產(chǎn)品的內(nèi)容特征,而是把他們看成抽象的節(jié)點(diǎn),所有算法利用的信息都藏在用戶和產(chǎn)品的選擇關(guān)系之中。傳統(tǒng)的推薦方法只關(guān)注提高推薦的準(zhǔn)確度,而多目標(biāo)個(gè)性化推薦不但關(guān)注準(zhǔn)確性而且關(guān)注多樣性,符合現(xiàn)代推薦系統(tǒng)的要求。而準(zhǔn)確性和多樣性是相互沖突的兩個(gè)變量。推薦系統(tǒng)可以精確的把物品推薦給用戶,但是這樣會(huì)失去多樣性,如果考慮多樣性,必然會(huì)失去準(zhǔn)確性。而一個(gè)具有挑戰(zhàn)性的工作就是開(kāi)發(fā)出一個(gè)既有準(zhǔn)確度又有多樣性的推薦系統(tǒng)。為了平衡多樣性和準(zhǔn)確性一些推薦系統(tǒng)相繼被開(kāi)發(fā)出來(lái),張等人把準(zhǔn)確性和多樣性看作二次規(guī)劃問(wèn)題,設(shè)計(jì)出多種策略來(lái)解決這個(gè)優(yōu)化問(wèn)題。在推薦列表中應(yīng)該設(shè)置控制參數(shù)來(lái)衡量多樣性的重要性。周等人提出了一種結(jié)合熱傳播算法解決多樣性問(wèn)題和概率傳播算法解決準(zhǔn)確性的混合推薦算法,該混合方法是使用加權(quán)線性組合的方法。結(jié)果是權(quán)重參數(shù)應(yīng)該適當(dāng)調(diào)整來(lái)保持推薦的多樣性和準(zhǔn)確性。adomavicius等人,開(kāi)發(fā)了一系列排序算法在保持準(zhǔn)確性的情況下產(chǎn)生多樣性。公茂果等人用經(jīng)典多目標(biāo)遺傳算法nsga-ii來(lái)優(yōu)化這兩個(gè)目標(biāo),該模型有兩個(gè)優(yōu)化目標(biāo),第一個(gè)是計(jì)算準(zhǔn)確性,第二個(gè)是計(jì)算多樣性,個(gè)性化推薦可以看作一個(gè)多目標(biāo)優(yōu)化問(wèn)題。多目標(biāo)優(yōu)化算法用來(lái)最大化這兩個(gè)目標(biāo),最終一個(gè)多樣性的推薦列表被提供給用戶。但是nsga-ii算法存在一些缺陷,導(dǎo)致優(yōu)化的準(zhǔn)確性和多樣性的缺失。本文提出基于改進(jìn)nsga-ii的個(gè)性化電影推薦算法優(yōu)化準(zhǔn)確性和多樣性。通過(guò)相對(duì)熵過(guò)濾和最優(yōu)填充改進(jìn)的多目標(biāo)遺傳算法(ffnsga-ii)可以優(yōu)化nsga-ii算法初始化種群中存在的問(wèn)題和進(jìn)化過(guò)程中分布性保持的問(wèn)題。該改進(jìn)算法在進(jìn)化之前,采用相對(duì)熵過(guò)濾的方式設(shè)置初始化種群,更為細(xì)致的區(qū)分個(gè)體之間的特征相近程度,避免由于隨機(jī)初始化造成的個(gè)體分布不均勻和組合出較差的個(gè)體;算法在進(jìn)化過(guò)程中,將每一代的進(jìn)化結(jié)果中的優(yōu)良個(gè)體保留在非劣集合中,并對(duì)每一代進(jìn)化結(jié)果采用自適應(yīng)相對(duì)熵過(guò)濾原則,根據(jù)種群的當(dāng)前狀態(tài)自適應(yīng)過(guò)濾掉一些分布較差的點(diǎn),然后將非劣集合中靠近前沿面并且與進(jìn)化結(jié)果中個(gè)體特征相異的最優(yōu)個(gè)體,對(duì)進(jìn)化結(jié)果進(jìn)行填充,保持了種群分布性的同時(shí),在一定程度上也維護(hù)了收斂性,使得算法的綜合性能得以提升。將該改進(jìn)算法應(yīng)用于電影個(gè)性化推薦的具體問(wèn)題上,通過(guò)與其他推薦算法的比較驗(yàn)證了算法的效果。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的是提出一種改進(jìn)nsga-ii的個(gè)性化電影推薦方法。用于解決傳統(tǒng)推薦算法無(wú)法兼顧準(zhǔn)確性和多樣性的問(wèn)題。對(duì)推薦列表的準(zhǔn)確性和多樣性兩個(gè)目標(biāo)進(jìn)行優(yōu)化,實(shí)現(xiàn)個(gè)性化電影的推薦。本發(fā)明的基于改進(jìn)nsga-ii的個(gè)性化電影推薦方法,其特征在于該算法在進(jìn)化之前,采用相對(duì)熵過(guò)濾的方式設(shè)置初始化種群,更為細(xì)致的區(qū)分個(gè)體之間特征的相近程度,避免隨機(jī)初始化造成個(gè)體分布不均勻,并且不利于組合出較為優(yōu)秀的個(gè)體;算法在進(jìn)化過(guò)程中,將每一代的進(jìn)化結(jié)果中的優(yōu)良個(gè)體保留在非劣集合中,并對(duì)每一代進(jìn)化結(jié)果采用自適應(yīng)綜合相對(duì)熵過(guò)濾原則,根據(jù)種群的當(dāng)前狀態(tài)自適應(yīng)過(guò)濾掉一些分布較差的點(diǎn),然后將非劣集合中靠近前沿面并且與進(jìn)化結(jié)果中個(gè)體特征相異的最優(yōu)個(gè)體對(duì)進(jìn)化結(jié)果進(jìn)行填充,保持了種群分布性的同時(shí),在一定程度上也維護(hù)了收斂性,使得算法的綜合性能得以提升,對(duì)電影推薦的能力得到加強(qiáng)?;诟倪M(jìn)nsga-ii的個(gè)性化電影推薦方法,包括以下步驟:s1個(gè)體編碼方案、相關(guān)參數(shù)取值:個(gè)體編碼采用實(shí)數(shù)編碼,每個(gè)電影的id表示一個(gè)基因位,n個(gè)推薦電影組成一條染色體,個(gè)體編碼形式為:<d1,d2,di…dn>,其中n表示推薦的電影個(gè)數(shù),di表示第i個(gè)需要推薦的電影編號(hào)。種群初始化為popsize,交叉概率pc為0.9,變異概率pm為0.1,每條染色體中電影編號(hào)不重復(fù)。s2相對(duì)熵過(guò)濾方式初始化推薦電影種群:step1.隨機(jī)產(chǎn)生s個(gè),數(shù)目為n的推薦電影種群,記作臨時(shí)推薦電影種群p,即推薦電影種群p的電影列表數(shù)目為m×s,s為正整數(shù);step2.對(duì)推薦電影種群p中的各個(gè)電影列表計(jì)算在待優(yōu)化問(wèn)題中各個(gè)目標(biāo)函數(shù)fit,表示為第i個(gè)電影列表在第t個(gè)目標(biāo)函數(shù)上的數(shù)值;step3.對(duì)推薦電影種群p中的每個(gè)電影列表按照各個(gè)目標(biāo)函數(shù)值fit之間的優(yōu)劣關(guān)系進(jìn)行非支配排序分層的計(jì)算,并標(biāo)記每個(gè)電影列表所在的層級(jí)ci,表示為第i個(gè)電影列表所在的層級(jí);step4.以推薦電影種群p為全集空間,對(duì)推薦電影種群p中的每個(gè)電影列表計(jì)算擁擠距離di,表示為第i個(gè)電影列表?yè)頂D距離的數(shù)值;step5.對(duì)于推薦電影種群中的每個(gè)電影列表的解向量xi和目標(biāo)向量yi組成的一個(gè)完整向量作為綜合相對(duì)熵計(jì)算的基本單位,計(jì)算每?jī)蓚€(gè)電影列表之間的相對(duì)熵rij;step6.對(duì)于每一個(gè)電影列表i,找出與其他電影列表相對(duì)熵最小的電影列表,并記錄該電影列表的編號(hào)k和相對(duì)熵的數(shù)值rik,這兩個(gè)電影列表組成一個(gè)待過(guò)濾組合;step7.按照相對(duì)熵過(guò)濾閾值r,過(guò)濾掉相對(duì)熵小于r的所有組合的兩個(gè)電影列表中非支配排序和擁擠距離表現(xiàn)差的電影列表,此時(shí)剩余的電影列表組合成的候選集合為p1;step8.在候選集合中p1,以每個(gè)電影列表的非支配排序?qū)蛹?jí)ci與擁擠距離di作為兩個(gè)目標(biāo),評(píng)價(jià)電影列表之間的非支配關(guān)系來(lái)選擇最優(yōu)的前n個(gè)電影列表生成初始推薦電影種群p0,其中,n為推薦電影種群規(guī)模數(shù)目。s3選擇操作以錦標(biāo)賽的方式進(jìn)行電影列表的選擇,即從這popsize個(gè)電影列表中隨機(jī)選擇k個(gè)電影列表,k<popsize,從這k個(gè)電影列表中選取一個(gè)最優(yōu)的電影列表;選擇標(biāo)準(zhǔn)為以非支配排序所在層數(shù)si和擁擠距離數(shù)值di作為兩個(gè)目標(biāo),按照非支配優(yōu)勝關(guān)系,對(duì)各個(gè)電影列表進(jìn)行比較,比較優(yōu)勝的電影列表為最優(yōu)電影列表;s4交叉操作交叉操作采用sbx交叉算子,假設(shè)當(dāng)前代進(jìn)化過(guò)程中的第t代待交叉的兩個(gè)電影列表為xat、xbt,α為交叉涉及的參數(shù)取值范圍為0~1,則xat+1、xbt+1為下一代產(chǎn)生的兩個(gè)電影列表;形式如下:s5變異操作對(duì)進(jìn)化過(guò)程中的第gen代推薦電影種群pgen中的任一電影列表pi=(pi1,pi2…pin),i∈{1,2,…popsize},以概率pm參與變異操作:產(chǎn)生一個(gè)小數(shù)r∈[0,1],和一個(gè)隨機(jī)整數(shù)j∈[1,n];令pi,j=lj+r×(uj-lj),對(duì)推薦電影群體pgen進(jìn)行變異產(chǎn)生新推薦電影種群pgennew其中,可行解空間為[l,u];s6維護(hù)推薦電影種群進(jìn)化運(yùn)用綜合相對(duì)熵過(guò)濾與自適應(yīng)最優(yōu)非劣集合填充維護(hù)推薦電影種群進(jìn)化,基本流程如下:step1.對(duì)每一代的進(jìn)化結(jié)果集合中非支配排序最優(yōu)的電影列表放入到非支配集合中,作為整個(gè)進(jìn)化過(guò)程中的最優(yōu)電影列表集合pbest;step2.某一代進(jìn)化結(jié)束后的推薦電影種群pnew中有n個(gè)電影列表,每個(gè)電影列表在各個(gè)維度上的坐標(biāo)數(shù)值為xim,表示該電影列表在第m維度上的取值,計(jì)算在待優(yōu)化問(wèn)題中各個(gè)目標(biāo)的數(shù)值fit,表示為該電影列表在第t個(gè)目標(biāo)函數(shù)上的數(shù)值,其中,i為每個(gè)電影列表的順次編號(hào);step3.對(duì)推薦電影種群pnew中的每個(gè)電影列表按照各個(gè)目標(biāo)數(shù)值fit之間的優(yōu)劣關(guān)系進(jìn)行非支配排序分層的計(jì)算,標(biāo)記每個(gè)電影列表所在的層級(jí)ci,并計(jì)算每個(gè)電影列表的擁擠距離di;step4.根據(jù)電影列表所在的各個(gè)維度上的坐標(biāo)值xim以及各個(gè)目標(biāo)的數(shù)值fit,計(jì)算兩兩電影列表之間的綜合相對(duì)熵,對(duì)于每個(gè)電影列表,找到與其他電影列表的最小相對(duì)熵,并記錄該電影列表編號(hào)i和得到該最小相對(duì)熵的另一個(gè)電影列表的編號(hào)j以及相對(duì)熵?cái)?shù)值sij,這樣就形成多組電影列表的點(diǎn)對(duì)。step5.代入計(jì)算的所有最小相對(duì)熵?cái)?shù)值的平均值average(d)和電影推薦種群規(guī)模pop以及當(dāng)前進(jìn)化代數(shù)gen,計(jì)算得到當(dāng)前代的過(guò)濾閾值δgen。step6.將最小相對(duì)熵?cái)?shù)值sij小于閾值δgen的電影列表點(diǎn)對(duì),在非支配排序和擁擠距離中表現(xiàn)差的進(jìn)行過(guò)濾,此時(shí)過(guò)濾mgen個(gè)電影列表。step7.對(duì)于非支配集合pbest中的電影列表,根據(jù)每個(gè)電影列表所在的各個(gè)維度上的坐標(biāo)值xi以及各個(gè)目標(biāo)的數(shù)值fit計(jì)算與當(dāng)前推薦電影種群pnew中各個(gè)電影列表的最小綜合相對(duì)熵,并以上述step6.中的δgen作為閾值過(guò)濾非支配集合pbest中綜合相對(duì)熵比較小的電影列表;step8.在過(guò)濾之后的非支配集合pbest中,選擇非支配排序與擁擠距離表現(xiàn)比較好的與過(guò)濾個(gè)數(shù)相同的mgen個(gè)最優(yōu)電影列表放入到當(dāng)前推薦電影種群pnew中,以維持與推薦電影種群規(guī)模相同的數(shù)目,繼續(xù)執(zhí)行下一代的進(jìn)化過(guò)程。s7終止條件判斷如果得到的結(jié)果為設(shè)定的預(yù)想結(jié)果則結(jié)束,否則轉(zhuǎn)s3;s8進(jìn)入下一個(gè)遺傳循環(huán)將推薦電影種群pgennew作為下一代進(jìn)化的初始推薦電影種群,繼續(xù)進(jìn)行s3步驟。依據(jù)上面的流程實(shí)施,把改進(jìn)nsga-ii方法應(yīng)用到個(gè)性化電影推薦中,得到個(gè)性化的電影推薦列表。與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益效果:基于改進(jìn)nsga-ii的個(gè)性化電影推薦方法,算法在進(jìn)化之前,采用相對(duì)熵過(guò)濾的方式設(shè)置初始電影推薦種群,更為細(xì)致的區(qū)分電影列表之間特征的相近程度,避免隨機(jī)初始化造成電影列表分布不均勻;算法在進(jìn)化過(guò)程中,將每一代的進(jìn)化結(jié)果中的優(yōu)良電影列表保留在非劣集合中,并對(duì)每一代進(jìn)化結(jié)果采用自適應(yīng)綜合相對(duì)熵過(guò)濾原則,根據(jù)推薦電影種群的當(dāng)前狀態(tài)自適應(yīng)過(guò)濾掉一些分布較差的電影列表,然后用非劣集合中的最優(yōu)電影列表對(duì)推薦電影種群進(jìn)行填充,保持了推薦電影種群的分布性,同時(shí)也維護(hù)了推薦電影種群的收斂性。將本算法應(yīng)用于個(gè)性化電影推薦的具體問(wèn)題上,得到的電影推薦列表,不僅準(zhǔn)確度高,而且多樣性得到加強(qiáng),通過(guò)與協(xié)同過(guò)濾推薦方法、基于內(nèi)容的推薦方法、多目標(biāo)遺傳算法推薦方法在相同的條件下進(jìn)行對(duì)比實(shí)驗(yàn),驗(yàn)證了算法的實(shí)用性。附圖說(shuō)明圖1為基于改進(jìn)nsga-ii的流程圖。圖2為基于改進(jìn)nsga-ii的個(gè)性化電影推薦方法整體流程圖。圖3為基于用戶的協(xié)同過(guò)濾推薦算法主要流程圖。圖4為基于內(nèi)容的推薦算法主要流程圖。具體實(shí)施方式下面結(jié)合附圖和具體實(shí)例對(duì)本發(fā)明做進(jìn)一步說(shuō)明。本發(fā)明采用movielens作為電影推薦的數(shù)據(jù)集,該數(shù)據(jù)集包括943個(gè)用戶的信息,1682部電影的信息,100,000條用戶對(duì)電影的評(píng)分,把ffnsga-ii和nsga-ii以及傳統(tǒng)的推薦方法基于用戶的協(xié)同過(guò)濾算法(usercf)、基于內(nèi)容的推薦算法(cb)進(jìn)行實(shí)驗(yàn)對(duì)比。在nsga-ii和ffnsga-ii兩種多目標(biāo)優(yōu)化算法中,以電影id號(hào)作為基因位,每條染色體代表n部電影,實(shí)驗(yàn)中n取值為(5,10,15,20),運(yùn)行代數(shù)gen=100,種群規(guī)模設(shè)置為popsize=50,交叉概率pc=0.9,變異概率pm=0.1,以準(zhǔn)確性和多樣性為兩個(gè)優(yōu)化目標(biāo)函數(shù),公式如下:d(i,j)=1-sim(i,j)(1-2)其中fd(r)為多樣性目標(biāo)函數(shù),r為推薦列表集合,sim(i,j)為相似性計(jì)算函數(shù),l為推薦列表長(zhǎng)度。gm(i,pu)=sim(i,j)i∈r,j∈pu(1-4)其中fm(pu,r)為準(zhǔn)確性目標(biāo)函數(shù),l為推薦列表長(zhǎng)度,r推薦集合,pu為用戶評(píng)分項(xiàng)目集合,gm(i,pu)為用戶評(píng)分集合和推薦列表相似性計(jì)算函數(shù)。推薦算法性能評(píng)估函數(shù)為:precision為準(zhǔn)確率評(píng)價(jià)函數(shù),r(i)為用戶推薦的列表集合,l(i)為用戶喜歡的列表集合。div(u)為多樣性評(píng)價(jià)函數(shù),r(i)為推薦列表集合,sim(i,j)為物品i和物品j的相似性,n(i)表示喜歡物品i的集合。本發(fā)明提出的基于改進(jìn)nsga-ii算法的主要流程如圖1所示,整個(gè)流程運(yùn)用綜合相對(duì)熵過(guò)濾初始化電影推薦種群和自適應(yīng)最優(yōu)非劣解集合填充維護(hù)種群多樣性和分布性的方法。主要分為綜合相對(duì)熵過(guò)濾初始化電影推薦種群、選擇操作、交叉操作、變異操作、自適應(yīng)最優(yōu)非劣解集合填充五個(gè)部分,選擇、交叉、變異三個(gè)操作流程與nsga-ii算法的操作流程一致。結(jié)合圖2對(duì)本發(fā)明的實(shí)施過(guò)程作詳細(xì)的說(shuō)明。本發(fā)明的實(shí)例是在以本發(fā)明技術(shù)方案為前提下進(jìn)行實(shí)施的,給出了詳細(xì)的實(shí)施方式和具體的操作過(guò)程,但本發(fā)明的保護(hù)范圍不限于下述實(shí)例。實(shí)例選用電影個(gè)性化推薦問(wèn)題對(duì)本文中提出的多目標(biāo)改進(jìn)算法otnsga-ii和基于用戶的協(xié)同過(guò)濾算法(usercf)、基于內(nèi)容的推薦算法(cb)以及nsga-ii進(jìn)行測(cè)試和比較。其中,基于用戶的協(xié)同過(guò)濾算法(usercf)根據(jù)用戶所看電影的評(píng)分?jǐn)?shù)值,計(jì)算兩兩用戶之間的相似度,并選出與待推薦用戶的相似度從大到小排序前k個(gè)用戶,以這些相似度數(shù)值為權(quán)重,利用這些用戶已看過(guò)并評(píng)分的電影對(duì)待推薦的用戶未看過(guò)的電影進(jìn)行預(yù)測(cè)評(píng)分。主要流程如圖3所示。基于內(nèi)容的推薦算法(cb)根據(jù)電影類型的所屬關(guān)系計(jì)算各個(gè)電影之間的相似度大小,并對(duì)待推薦的用戶已經(jīng)看過(guò)的電影評(píng)分比較高的電影,按照與之相似度大小對(duì)未看過(guò)的電影進(jìn)行預(yù)測(cè)評(píng)分。主要流程如圖4所示?;趎sga-ii和ffnsga-ii的推薦算法而言,使用準(zhǔn)確性和多樣性作為兩個(gè)優(yōu)化目標(biāo)函數(shù),使推薦列表在保持準(zhǔn)確性的同時(shí)多樣性有所提高。目的在于求解n個(gè)不同電影的編號(hào)組合,即每個(gè)個(gè)體的基因位為一部電影的編號(hào),用di表示i部待推薦電影的編號(hào),個(gè)體編碼形式為:<d1,d2,di。。。dn>,采用實(shí)數(shù)編碼方式,編碼范圍為電影編號(hào)所在的范圍并且為整數(shù)形式,保持編碼中電影編號(hào)有序且不重復(fù),以作為待推薦的n部不同電影的一種組合方式。下面詳細(xì)給出該發(fā)明技術(shù)方案中所涉及的各個(gè)細(xì)節(jié)問(wèn)題的說(shuō)明:s1進(jìn)行個(gè)體編碼、初始化數(shù)據(jù),并設(shè)定參數(shù)所述個(gè)體表示n個(gè)電影的編號(hào),其中n表示需要推薦的電影個(gè)數(shù);用di表示第i個(gè)需要推薦的電影編號(hào),為了應(yīng)用于解決個(gè)性化推薦領(lǐng)域的top-n問(wèn)題,采用n個(gè)電影編號(hào)組合,個(gè)體編碼形式為:<d1,d2,di。。。dn>,采用實(shí)數(shù)編碼方式,編碼范圍為電影編號(hào)所在的范圍并且為整數(shù)形式;所述初始化數(shù)據(jù)將種群大小初始化為popsize,每次后代都產(chǎn)生popsize大小的種群;所述設(shè)定參數(shù)包括:設(shè)定交叉概率pc為0.9,變異概率pm為0.1,個(gè)體長(zhǎng)度為n位,保持編碼中電影編號(hào)有序且不重復(fù),以作為待推薦的n部不同電影的一種組合方式。s2相對(duì)熵過(guò)濾方式初始化電影推薦種群:step1.隨機(jī)產(chǎn)生s個(gè),數(shù)目為n的推薦電影種群,記作臨時(shí)推薦電影種群p,即推薦電影種群p的電影列表數(shù)目為m×s,這里s為一位正整數(shù);step2.對(duì)推薦電影種群p中的各個(gè)電影列表計(jì)算在待優(yōu)化問(wèn)題中各個(gè)目標(biāo)函數(shù)fit,表示為第i個(gè)電影列表在第t個(gè)目標(biāo)函數(shù)上的數(shù)值;step3.對(duì)推薦電影種群p中的每個(gè)電影列表按照各個(gè)目標(biāo)函數(shù)值fit之間的優(yōu)劣關(guān)系進(jìn)行非支配排序分層的計(jì)算,并標(biāo)記每個(gè)電影列表所在的層級(jí)ci,表示為第i個(gè)電影列表所在的層級(jí);step4.以推薦電影種群p為全集空間,對(duì)推薦電影種群p中的每個(gè)電影列表計(jì)算擁擠距離di,表示為第i個(gè)電影列表?yè)頂D距離的數(shù)值;step5.對(duì)于推薦電影種群中的每個(gè)電影列表的解向量xi和目標(biāo)向量yi組成的一個(gè)完整向量作為綜合相對(duì)熵計(jì)算的基本單位,計(jì)算每?jī)蓚€(gè)電影列表之間的相對(duì)熵rij;step6.對(duì)于每一個(gè)電影列表i,找出與其他電影列表相對(duì)熵最小的電影列表,并記錄該電影列表的編號(hào)k和相對(duì)熵的數(shù)值rik,這兩個(gè)電影列表組成一個(gè)待過(guò)濾組合;step7.按照相對(duì)熵過(guò)濾閾值r,過(guò)濾掉相對(duì)熵小于r的所有組合的兩個(gè)電影列表中非支配排序和擁擠距離表現(xiàn)差的電影列表,此時(shí)剩余的電影列表組合成的候選集合為p1;step8.在候選集合中p1,以每個(gè)電影列表的非支配排序?qū)蛹?jí)ci與擁擠距離di作為兩個(gè)目標(biāo),評(píng)價(jià)電影列表之間的非支配關(guān)系來(lái)選擇最優(yōu)的前n個(gè)電影列表生成初始推薦電影種群p0,其中,n為推薦電影種群規(guī)模數(shù)目。s3選擇操作以錦標(biāo)賽的方式進(jìn)行電影列表的選擇,即從這popsize個(gè)電影列表中隨機(jī)選擇k個(gè)電影列表,k<popsize,從這k個(gè)電影列表中選取一個(gè)最優(yōu)的電影列表;選擇標(biāo)準(zhǔn)為以非支配排序所在層數(shù)si和擁擠距離數(shù)值di作為兩個(gè)目標(biāo),按照非支配優(yōu)勝關(guān)系,對(duì)各個(gè)電影列表進(jìn)行比較,比較優(yōu)勝的電影列表為最優(yōu)電影列表;s4交叉操作交叉操作采用sbx交叉算子,假設(shè)當(dāng)前代進(jìn)化過(guò)程中的第t代待交叉的兩個(gè)電影列表為xat、xbt,α為交叉涉及的參數(shù)取值范圍為0~1,則xat+1、xbt+1為下一代產(chǎn)生的兩個(gè)電影列表;形式如下:s5變異操作對(duì)進(jìn)化過(guò)程中的第gen代推薦電影種群pgen中的任一電影列表pi=(pi1,pi2…pin),i∈{1,2,…popsize},以概率pm參與變異操作:產(chǎn)生一個(gè)小數(shù)r∈[0,1],和一個(gè)隨機(jī)整數(shù)j∈[1,n];令pi,j=lj+r×(uj-lj),對(duì)推薦電影群體pgen進(jìn)行變異產(chǎn)生新推薦電影種群pgennew其中,可行解空間為[l,u];s6維護(hù)推薦電影種群進(jìn)化運(yùn)用綜合相對(duì)熵過(guò)濾與自適應(yīng)最優(yōu)非劣集合填充維護(hù)推薦電影種群進(jìn)化,基本流程如下:step1.對(duì)每一代的進(jìn)化結(jié)果集合中非支配排序最優(yōu)的電影列表放入到非支配集合中,作為整個(gè)進(jìn)化過(guò)程中的最優(yōu)電影列表集合pbest;step2.某一代進(jìn)化結(jié)束后的推薦電影種群pnew中有n個(gè)電影列表,每個(gè)電影列表在各個(gè)維度上的坐標(biāo)數(shù)值為xim,表示該電影列表在第m維度上的取值,計(jì)算在待優(yōu)化問(wèn)題中各個(gè)目標(biāo)的數(shù)值fit,表示為該電影列表在第t個(gè)目標(biāo)函數(shù)上的數(shù)值,其中,i為每個(gè)電影列表的順次編號(hào);step3.對(duì)推薦電影種群pnew中的每個(gè)電影列表按照各個(gè)目標(biāo)數(shù)值fit之間的優(yōu)劣關(guān)系進(jìn)行非支配排序分層的計(jì)算,標(biāo)記每個(gè)電影列表所在的層級(jí)ci,并計(jì)算每個(gè)電影列表的擁擠距離di;step4.根據(jù)電影列表所在的各個(gè)維度上的坐標(biāo)值xim以及各個(gè)目標(biāo)的數(shù)值fit,計(jì)算兩兩電影列表之間的綜合相對(duì)熵,對(duì)于每個(gè)電影列表,找到與其他電影列表的最小相對(duì)熵,并記錄該電影列表編號(hào)i和得到該最小相對(duì)熵的另一個(gè)電影列表的編號(hào)j以及相對(duì)熵?cái)?shù)值sij,這樣就形成多組電影列表的點(diǎn)對(duì)。step5.代入計(jì)算的所有最小相對(duì)熵?cái)?shù)值的平均值average(d)和電影推薦種群規(guī)模pop以及當(dāng)前進(jìn)化代數(shù)gen,計(jì)算得到當(dāng)前代的過(guò)濾閾值δgen。step6.將最小相對(duì)熵?cái)?shù)值sij小于閾值δgen的電影列表點(diǎn)對(duì),在非支配排序和擁擠距離中表現(xiàn)差的進(jìn)行過(guò)濾,此時(shí)過(guò)濾mgen個(gè)電影列表。step7.對(duì)于非支配集合pbest中的電影列表,根據(jù)每個(gè)電影列表所在的各個(gè)維度上的坐標(biāo)值xi以及各個(gè)目標(biāo)的數(shù)值fit計(jì)算與當(dāng)前推薦電影種群pnew中各個(gè)電影列表的最小綜合相對(duì)熵,并以上述step6.中的δgen作為閾值過(guò)濾非支配集合pbest中綜合相對(duì)熵比較小的電影列表;step8.在過(guò)濾之后的非支配集合pbest中,選擇非支配排序與擁擠距離表現(xiàn)比較好的與過(guò)濾個(gè)數(shù)相同的mgen個(gè)最優(yōu)電影列表放入到當(dāng)前推薦電影種群pnew中,以維持與推薦電影種群規(guī)模相同的數(shù)目,繼續(xù)執(zhí)行下一代的進(jìn)化過(guò)程。s7終止條件判斷如果得到的結(jié)果為設(shè)定的預(yù)想結(jié)果則結(jié)束,否則轉(zhuǎn)s3;s8進(jìn)入下一個(gè)遺傳循環(huán)將推薦電影種群pgennew作為下一代進(jìn)化的初始推薦電影種群,繼續(xù)進(jìn)行s3以上為基于改進(jìn)nsga-ii的個(gè)性化電影推薦方法的主要流程步驟。下面詳述說(shuō)明本發(fā)明的實(shí)驗(yàn)結(jié)果:為了證明本發(fā)明所述方法在個(gè)性化電影推薦問(wèn)題中的有效性,分別采用ffnsga-ii(本發(fā)明中的方法)和usercf、cb以及nsga-ii對(duì)個(gè)性化電影推薦中的top-n問(wèn)題進(jìn)行優(yōu)化,其中,n為一個(gè)組合中電影推薦的個(gè)數(shù)(這里分別取值為5、10、15、20),實(shí)驗(yàn)結(jié)果如表1所示。表1ffnsga-ii與usercf、cb以及nsga-ii的準(zhǔn)確率對(duì)比indexncbusercfitemcfnsga-iiffnsga-ii30.03470.18960.15870.19350.199860.02860.18630.15490.19180.198290.03090.18390.16230.18550.1892f120.02960.18730.15690.18980.1951150.03260.19110.16020.19570.1989180.02550.17990.15880.18340.187210.03530.18870.16050.19240.1973240.02760.18040.15920.18520.1877270.03370.19260.16110.19480.1993表2ffnsga-ii與usercf、cb以及nsga-ii的多樣性對(duì)比indexncbusercfitemcfnsga-iiffnsga-ii30.65260.60590.57640.67180.690860.66020.61150.57880.67890.699790.66340.61350.57950.67510.691120.67040.60580.57010.6750.6902diversity150.66450.61770.58420.67210.6956180.66780.61890.57570.68150.7068210.66420.61950.58690.67310.6977240.67550.61050.58740.68440.6979270.67690.62180.57890.68240.7048由表1表2可知,采用ffnsga-ii(本發(fā)明中的方法)在n=5、10、15、20的條件下都可以有效的提高電影推薦的準(zhǔn)確性、多樣性,而nsga-ii在這兩方面則表現(xiàn)較差,usercf和cb這兩種傳統(tǒng)的推薦方法相比f(wàn)fnsga-ii則更差。這充分說(shuō)明針對(duì)nsga-ii改進(jìn)的方法ffnsga-ii得到的電影推薦結(jié)果比nsgaii方法在提高準(zhǔn)確性、多樣性方面有所提高,也明顯優(yōu)于usercf、cb兩種傳統(tǒng)的推薦方法。因此,與現(xiàn)有技術(shù)相比,本發(fā)明可以為用戶推薦更為精準(zhǔn)和多樣化的電影列表。當(dāng)前第1頁(yè)12