本發(fā)明涉及推薦系統(tǒng)和數(shù)據(jù)分析技術(shù)領(lǐng)域,特別是涉及一種基于項(xiàng)目的評(píng)分矩陣預(yù)測(cè)算法。
背景技術(shù):
隨著時(shí)代的發(fā)展與科學(xué)技術(shù)的進(jìn)步,網(wǎng)絡(luò)已慢慢滲透進(jìn)人們的生活并發(fā)展成為人們收集以及獲取信息的重要途徑,用戶更傾向于通過互聯(lián)網(wǎng)來(lái)得到自己所需要的信息與各方面的資料。但是,以web2.0為代表的互聯(lián)網(wǎng)技術(shù)促使網(wǎng)絡(luò)數(shù)據(jù)展現(xiàn)出爆炸式增長(zhǎng)的現(xiàn)象,它的結(jié)構(gòu)變得越來(lái)越復(fù)雜,也造成越來(lái)越多的信息和服務(wù)充斥著整個(gè)網(wǎng)絡(luò)的局面。這大大增加了人們?cè)诰W(wǎng)絡(luò)上汲取信息的難度。與此同時(shí),人們對(duì)于互聯(lián)網(wǎng)信息的利用效率也大大降低了,這就出現(xiàn)了"信息過載"的困境。推薦系統(tǒng)(recommendersystem)在這種情境下應(yīng)運(yùn)而生。
“推薦系統(tǒng)”使用特定的方法建立起項(xiàng)目與用戶之間關(guān)系,最常使用的推薦系統(tǒng)的定義為“推薦系統(tǒng)通過電子商務(wù)網(wǎng)站給予用戶消費(fèi)建議,代替銷售員工對(duì)用戶導(dǎo)購(gòu)過程,解決用戶購(gòu)買什么樣商品”。這是一個(gè)狹義的定義,因?yàn)樗欢x了在電子商務(wù)情境下的推薦系統(tǒng)。2005年,adomavicius等人總結(jié)道:通常情況下,“推薦問題”可以簡(jiǎn)化為“用戶對(duì)未知的項(xiàng)目如何進(jìn)行評(píng)分的估計(jì)問題”,評(píng)分估計(jì)通常基于對(duì)其它項(xiàng)目的評(píng)分模擬出當(dāng)前用戶對(duì)未購(gòu)買項(xiàng)目的打分;一旦模擬出當(dāng)前用戶對(duì)未購(gòu)買項(xiàng)目的打分,便可以將打分最靠前的n個(gè)項(xiàng)目作為推薦列表給用戶。
在上述的評(píng)分估計(jì)問題中,常用的有協(xié)同過濾算法。該算法所存在的缺陷在于它的實(shí)現(xiàn)需要對(duì)用戶的評(píng)價(jià)信息進(jìn)行分析處理,但實(shí)際上由于電子商務(wù)網(wǎng)站的評(píng)論信息量巨大、商品信息龐大,導(dǎo)致了信息不對(duì)稱;同時(shí)容易出現(xiàn)許多商品的評(píng)論信息極少,而熱門商品的評(píng)論信息又很多的情況,從而導(dǎo)致評(píng)價(jià)信息不準(zhǔn)確,進(jìn)而影響到推薦結(jié)果的準(zhǔn)確性。
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有技術(shù)存在的缺陷,本發(fā)明提出了一種基于項(xiàng)目的評(píng)分矩陣預(yù)測(cè)算法,該算法包括以下步驟:
步驟101、獲取推薦數(shù)據(jù)集,有兩種獲取方式:一種是通過用戶自定義方式使用爬蟲工具爬取互聯(lián)網(wǎng)上的數(shù)據(jù),例如python的scrapy框架;另一種是通過互聯(lián)網(wǎng)下載相應(yīng)的互聯(lián)網(wǎng)數(shù)據(jù)集;
步驟201、進(jìn)行數(shù)據(jù)預(yù)處理,至少包括通過處理缺失值、處理噪聲、篩選離群點(diǎn)且解決不一致等問題;主要目的是實(shí)現(xiàn)數(shù)據(jù)格式統(tǒng)一化、錯(cuò)誤數(shù)據(jù)清除、重復(fù)數(shù)據(jù)清除;
步驟301、使用newpearsoncorrelationcoefficient(npcc)算法計(jì)算項(xiàng)目的相似度,計(jì)算公式如下:
其中,ni為項(xiàng)目i具有評(píng)分行為的用戶數(shù)量,nj為項(xiàng)目j具有評(píng)分行為的用戶數(shù)量。rui是用戶u給項(xiàng)目i的評(píng)分?jǐn)?shù)據(jù),ruj是用戶u給項(xiàng)目j的評(píng)分?jǐn)?shù)據(jù),ri、rj分別為所有用戶對(duì)項(xiàng)目i和項(xiàng)目j的平均評(píng)分。
步驟(401)、構(gòu)造關(guān)聯(lián)矩陣:遍歷項(xiàng)目集合中任意兩項(xiàng),使用上述步驟的相似度計(jì)算方法計(jì)算這兩項(xiàng)的相似度,基于該相似度構(gòu)建出項(xiàng)目的關(guān)聯(lián)矩陣。
步驟(501)、構(gòu)造評(píng)分矩陣,進(jìn)行預(yù)測(cè)用戶對(duì)待推薦項(xiàng)目的評(píng)分結(jié)果,用戶對(duì)于待推薦項(xiàng)目的評(píng)分計(jì)算,具體公式如下:
缺失值指的是用戶對(duì)自己已經(jīng)購(gòu)買的部分項(xiàng)目集沒有評(píng)分,數(shù)據(jù)集采用賦予默認(rèn)值的處理方式,論文采用對(duì)該項(xiàng)目集用戶有效評(píng)分的平均數(shù)代替,缺失值計(jì)算公式如下:
其中,su,i為用戶u對(duì)項(xiàng)目i的評(píng)分,為ni對(duì)項(xiàng)目i有評(píng)分的用戶集合,su’,i為其他項(xiàng)目對(duì)項(xiàng)目i的評(píng)分,ci表示購(gòu)買項(xiàng)目i用戶的個(gè)數(shù)。
用戶對(duì)于待推薦項(xiàng)目的評(píng)分計(jì)算,采用改進(jìn)的newitem-basedcollaborativefiltering(nitem-basedcf)算法,計(jì)算公式如式(3)所示:
其中,su,i為用戶u對(duì)項(xiàng)目i的預(yù)測(cè)評(píng)分,iu表示用戶u已評(píng)分的項(xiàng)目集,rij表示項(xiàng)目i和j的關(guān)聯(lián)度,
步驟601、計(jì)算出用戶已購(gòu)買的商品與其它商品之間的相似度大小,根據(jù)nitem-basedcf算法利用相似度計(jì)算出用戶對(duì)項(xiàng)目的預(yù)測(cè)評(píng)分,根據(jù)預(yù)測(cè)評(píng)分可以構(gòu)造用戶對(duì)項(xiàng)目預(yù)測(cè)評(píng)分矩陣。矩陣中每一項(xiàng)為不同用戶對(duì)不同項(xiàng)目的評(píng)分,如
與現(xiàn)有技術(shù)相比,本發(fā)明使用npcc方法計(jì)算項(xiàng)目間相似度效果要好于傳統(tǒng)的pcc方法和jaccard方法;以及,使用nitem-basedcf算法提高了預(yù)測(cè)用戶對(duì)項(xiàng)目評(píng)分的精度。
附圖說明
圖1為本發(fā)明的基于項(xiàng)目的評(píng)分矩陣預(yù)測(cè)算法;
圖2為不同比例測(cè)試集實(shí)驗(yàn)結(jié)果對(duì)比圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。
如圖1所示,本發(fā)明的基于項(xiàng)目的評(píng)分矩陣預(yù)測(cè)算法整體流程具體包括以下步驟:
步驟101、獲取推薦數(shù)據(jù)集,有兩種獲取方式:一種是通過用戶自定義方式使用爬蟲工具爬取互聯(lián)網(wǎng)上的數(shù)據(jù),例如python的scrapy框架;另一種是通過互聯(lián)網(wǎng)下載相應(yīng)的互聯(lián)網(wǎng)數(shù)據(jù)集;
步驟201、進(jìn)行數(shù)據(jù)預(yù)處理,至少包括通過處理缺失值、處理噪聲、篩選離群點(diǎn)且解決不一致等問題;主要目的是實(shí)現(xiàn)數(shù)據(jù)格式統(tǒng)一化、錯(cuò)誤數(shù)據(jù)清除、重復(fù)數(shù)據(jù)清除。
步驟301、使用newpearsoncorrelationcoefficient(npcc)算法計(jì)算項(xiàng)目的相似度,計(jì)算公式如下:
其中,ni為項(xiàng)目i具有評(píng)分行為的用戶數(shù)量,nj為項(xiàng)目j具有評(píng)分行為的用戶數(shù)量。rui是用戶u給項(xiàng)目i的評(píng)分?jǐn)?shù)據(jù),ruj是用戶u給項(xiàng)目j的評(píng)分?jǐn)?shù)據(jù),ri、rj分別為所有用戶對(duì)項(xiàng)目i和項(xiàng)目j的平均評(píng)分。
步驟(401)、構(gòu)造關(guān)聯(lián)矩陣:遍歷項(xiàng)目集合中任意兩項(xiàng),使用上述步驟的相似度計(jì)算方法計(jì)算這兩項(xiàng)的相似度,基于該相似度構(gòu)建出項(xiàng)目的關(guān)聯(lián)矩陣。執(zhí)行關(guān)聯(lián)矩陣構(gòu)建算法:
輸入:項(xiàng)目集i,項(xiàng)目i,項(xiàng)目j,相似度計(jì)算方法simcompute
輸出:關(guān)聯(lián)矩陣rij
步驟(501)、構(gòu)造評(píng)分矩陣,進(jìn)行預(yù)測(cè)用戶對(duì)待推薦項(xiàng)目的評(píng)分結(jié)果,用戶對(duì)于待推薦項(xiàng)目的評(píng)分計(jì)算,具體公式如下:
缺失值指的是用戶對(duì)自己已經(jīng)購(gòu)買的部分項(xiàng)目集沒有評(píng)分,數(shù)據(jù)集采用賦予默認(rèn)值的處理方式,論文采用對(duì)該項(xiàng)目集用戶有效評(píng)分的平均數(shù)代替,缺失值計(jì)算公式如下:
其中,su,i為用戶u對(duì)項(xiàng)目i的評(píng)分,為ni對(duì)項(xiàng)目i有評(píng)分的用戶集合,su’,i為其他項(xiàng)目對(duì)項(xiàng)目i的評(píng)分,ci表示購(gòu)買項(xiàng)目i用戶的個(gè)數(shù)。
用戶對(duì)于待推薦項(xiàng)目的評(píng)分計(jì)算,采用改進(jìn)的newitem-basedcollaborativefiltering(nitem-basedcf)算法,計(jì)算公式如式(3)所示:
其中,su,i為用戶u對(duì)項(xiàng)目i的預(yù)測(cè)評(píng)分,iu表示用戶u已評(píng)分的項(xiàng)目集,rij表示項(xiàng)目i和j的關(guān)聯(lián)度,
步驟601、根據(jù)上述步驟可以計(jì)算出用戶已購(gòu)買的商品與其它商品之間的相似度大小,根據(jù)nitem-basedcf算法利用相似度計(jì)算出用戶對(duì)項(xiàng)目的預(yù)測(cè)評(píng)分,根據(jù)預(yù)測(cè)評(píng)分可以構(gòu)造用戶對(duì)項(xiàng)目預(yù)測(cè)評(píng)分矩陣。矩陣中每一項(xiàng)為不同用戶對(duì)不同項(xiàng)目的評(píng)分,如
如圖2所示,不同相似度方法實(shí)驗(yàn)對(duì)npcc方法進(jìn)行效果驗(yàn)證。實(shí)驗(yàn)結(jié)果如表1所示,該實(shí)驗(yàn)使用mae對(duì)實(shí)驗(yàn)進(jìn)行驗(yàn)證。
本發(fā)明的驗(yàn)證中,使用平均絕對(duì)誤差(mae)作為預(yù)測(cè)評(píng)分的評(píng)價(jià)標(biāo)準(zhǔn),與平均誤差相比,平均絕對(duì)誤差由于離差被絕對(duì)值化,不會(huì)出現(xiàn)正負(fù)相抵消的情況,因而,平均絕對(duì)誤差能更好地反映預(yù)測(cè)值誤差的實(shí)際情況。mae的計(jì)算公式如公式(5)所示。
其中,k表示預(yù)測(cè)項(xiàng)目的個(gè)數(shù),pi和qi分別為預(yù)測(cè)評(píng)分和項(xiàng)目的實(shí)際評(píng)分,mae的值越小,表示預(yù)測(cè)結(jié)果越好。
使用均方根誤差(rmse)可以很好體現(xiàn)出預(yù)測(cè)的精準(zhǔn)度,該值也是測(cè)量預(yù)測(cè)值與真實(shí)值的差異程度,且對(duì)于預(yù)測(cè)值中出現(xiàn)的較大或較小偏差反映較為敏感。rmse的公式如(6)所示。
其中,參數(shù)sui為nitem-basedcf算法預(yù)測(cè)用戶評(píng)分,rui為用戶u對(duì)項(xiàng)目i真實(shí)評(píng)分。參數(shù)i表示預(yù)測(cè)項(xiàng)目編號(hào),n表示預(yù)測(cè)項(xiàng)目數(shù)量。
從圖2中可以看到,當(dāng)訓(xùn)練集為90%的時(shí)候,mae值是最低的,說明預(yù)測(cè)結(jié)果與真實(shí)值最為接近。并且隨著訓(xùn)練集比例的降低,mae值變大,說明預(yù)測(cè)結(jié)果與真實(shí)值差距越來(lái)越大。實(shí)驗(yàn)中,同樣采用隨機(jī)抽取不同比例數(shù)據(jù)作為訓(xùn)練集的方式進(jìn)行,隨機(jī)從數(shù)據(jù)集中選取90%的數(shù)據(jù)作為訓(xùn)練集進(jìn)行建模,然后隨機(jī)從數(shù)據(jù)集中選取5%數(shù)據(jù)進(jìn)行預(yù)測(cè)驗(yàn)證。實(shí)驗(yàn)結(jié)果如表1所示,該實(shí)驗(yàn)使用mae對(duì)實(shí)驗(yàn)進(jìn)行驗(yàn)證。
表1、不同相似度算法對(duì)比實(shí)驗(yàn)
從表1中可知,當(dāng)訓(xùn)練集和測(cè)試集的比例固定時(shí),使用pcc方法的mae值要小于使用jaccard方法,npcc方法的mae值小于pcc方法。實(shí)驗(yàn)結(jié)果證明,使用npcc方法計(jì)算項(xiàng)目之間的相似度效果要好于傳統(tǒng)的pcc方法和jaccard方法。使用rmse進(jìn)行驗(yàn)證,結(jié)論是npcc方法效果要好于傳統(tǒng)的pcc和jaccard方法。綜合上述實(shí)驗(yàn)結(jié)果,專利使用npcc方法計(jì)算項(xiàng)目間相似度效果要好于傳統(tǒng)的pcc方法和jaccard方法。使用nitem-basedcf算法提高了預(yù)測(cè)用戶對(duì)項(xiàng)目評(píng)分的精度。