999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的協(xié)同過(guò)濾算法的設(shè)計(jì)與實(shí)現(xiàn)

2019-04-19 03:11:14
關(guān)鍵詞:用戶信息

(1.濟(jì)南職業(yè)學(xué)院,山東 濟(jì)南 250014;2.山東廣播電視大學(xué),山東 濟(jì)南 250014)

一、引言

隨著網(wǎng)絡(luò)的飛速發(fā)展,網(wǎng)絡(luò)信息飛速增長(zhǎng),人們面臨著“信息過(guò)載”和“信息迷航”的問(wèn)題。借助于搜索引擎,人們可以從海量信息中查找到自己所需的信息。但是,搜索引擎只適用于在有明確需求的情況下幫人們查找信息,如果在沒(méi)有明確需求的情況下,搜索引擎則難以幫助人們有效地篩選信息。此時(shí)推薦技術(shù)應(yīng)運(yùn)而生,它通過(guò)研究用戶的興趣偏好,自動(dòng)建立起用戶和信息之間的聯(lián)系,從而幫助用戶從海量信息中去發(fā)掘自己潛在的需求。

推薦系統(tǒng)是建立在海量數(shù)據(jù)挖掘基礎(chǔ)上的,它通過(guò)分析用戶的歷史數(shù)據(jù)來(lái)了解用戶的需求和興趣,從而將用戶感興趣的信息、物品等主動(dòng)推薦給用戶,其本質(zhì)是建立用戶與物品之間的聯(lián)系。常用的推薦算法主要有專家推薦、基于統(tǒng)計(jì)的推薦、基于內(nèi)容的推薦和協(xié)同過(guò)濾推薦等。其中協(xié)同過(guò)濾推薦是推薦系統(tǒng)中應(yīng)用最早和最為成功的算法。

協(xié)同過(guò)濾算法的關(guān)鍵是計(jì)算相似度及求解推薦評(píng)分,在計(jì)算時(shí)需要用到矩陣的一些運(yùn)算。Python的第三方擴(kuò)展庫(kù)Numpy是一科學(xué)計(jì)算庫(kù),提供了大量的數(shù)組及矩陣運(yùn)算,因此很多推薦系統(tǒng)中都是利用Numpy來(lái)實(shí)現(xiàn)協(xié)同過(guò)濾算法,但因協(xié)同過(guò)濾算法中涉及到的矩陣多是稀疏矩陣,采用普通的二維數(shù)組存放存在大量的無(wú)效存儲(chǔ),空間利用率較低,同時(shí)利用Numpy擴(kuò)展庫(kù)也無(wú)法進(jìn)行算法的優(yōu)化,因此本文利用Python的內(nèi)置序列字典來(lái)存放稀疏矩陣,自行編制相應(yīng)的代碼來(lái)求解推薦評(píng)分,可有效提高算法的時(shí)間空間效率。

二、協(xié)同過(guò)濾算法

協(xié)同過(guò)濾算法分為基于用戶的協(xié)同過(guò)濾算法和基于物品的協(xié)同過(guò)濾算法。

基于用戶的協(xié)同過(guò)濾算法(簡(jiǎn)稱UserCF),通過(guò)不同用戶對(duì)物品的評(píng)分來(lái)評(píng)測(cè)用戶之間的相似性,基于用戶之間的相似性做出推薦。簡(jiǎn)單說(shuō)就是給用戶推薦和他興趣相似的其他用戶喜歡的物品。

基于物品的協(xié)同過(guò)濾算法(簡(jiǎn)稱ItemCF),通過(guò)用戶對(duì)不同物品的評(píng)分來(lái)評(píng)測(cè)物品之間的相似性,基于物品之間的相似性做出推薦。簡(jiǎn)單說(shuō)就是給用戶推薦和他之前喜歡的物品相似的物品。

UserCF算法和ItemCF算法最主要的區(qū)別在于:UserCF推薦的是那些和目標(biāo)用戶有共同興趣愛(ài)好的其他用戶所喜歡的物品,ItemCF算法則推薦那些和目標(biāo)用戶之前喜歡的物品類似的其他物品。因此,UserCF算法的推薦更偏向社會(huì)化,適合應(yīng)用于新聞推薦、微博話題推薦等應(yīng)用場(chǎng)景;而ItemCF算法的推薦則是更偏向于個(gè)性化,適合應(yīng)用于電子商務(wù)、電影、圖書(shū)等應(yīng)用場(chǎng)景。

UserCF算法和ItemCF算法思想類似,其實(shí)現(xiàn)過(guò)程也基本類似,唯一不同的是一個(gè)是計(jì)算用戶相似度,一個(gè)是計(jì)算物品相似度,本文以ItemCF算法為例詳細(xì)說(shuō)明其具體實(shí)現(xiàn)。

三、ItemCF的Python實(shí)現(xiàn)

(一)數(shù)據(jù)準(zhǔn)備

以一組用戶的觀影記錄作為測(cè)試數(shù)據(jù)集,共包括兩個(gè)數(shù)據(jù)文件,一個(gè)是rating.txt,存放的是用戶對(duì)電影的評(píng)分記錄,其數(shù)據(jù)如圖1所示,每一行用逗號(hào)分隔的3個(gè)數(shù)據(jù)項(xiàng)分別表示用戶ID、電影ID和評(píng)分。

圖1 評(píng)分?jǐn)?shù)據(jù)

另一個(gè)數(shù)據(jù)文件是movies.txt,存放的是電影信息,其數(shù)據(jù)如圖2所示,每一行用逗號(hào)分隔的3個(gè)數(shù)據(jù)項(xiàng)分別表示電影ID、電影名稱和上映時(shí)間,該數(shù)據(jù)文件主要用于推薦結(jié)果輸出。

圖2 電影信息數(shù)據(jù)

(二)具體實(shí)現(xiàn)過(guò)程

1.數(shù)據(jù)預(yù)處理

將數(shù)據(jù)集中的文件讀入并進(jìn)行一定的處理,將用戶評(píng)分記錄及電影信息分別存入相應(yīng)的字典中。其Python代碼如圖3所示。

圖3 數(shù)據(jù)預(yù)處理代碼

2.建立同現(xiàn)矩陣

ItemCF算法的關(guān)鍵是計(jì)算物品(此處為電影)的相似度,相似度的計(jì)算方法有很多,在此直接以同時(shí)出現(xiàn)的次數(shù)多少作為相似度的衡量,因此需要建立物品的同現(xiàn)矩陣M。

建立過(guò)程如下:

step1:列出每個(gè)用戶看過(guò)的電影列表,結(jié)果如圖4所示。

圖4 用戶看過(guò)的電影列表

step2:求出每個(gè)用戶的電影同現(xiàn)矩陣

例對(duì)用戶1,其看過(guò)的電影有11、12、13,因此在矩陣對(duì)應(yīng)的位置(11,12)(12,11)(11,13)(13,11)(12,13)(13,12)處寫(xiě)上1,其余為0。也即用戶1的同現(xiàn)矩陣如圖5所示。

圖5 用戶1的同現(xiàn)矩陣

step3:將所有用戶的同現(xiàn)矩陣相加,得到最終的同現(xiàn)矩陣,如圖6所示。

圖6 所有用戶的同現(xiàn)矩陣

利用Python來(lái)實(shí)現(xiàn)同現(xiàn)矩陣的建立,其代碼如圖7所示。

圖7 求解電影同現(xiàn)矩陣

3.計(jì)算推薦評(píng)分

計(jì)算每個(gè)用戶曾看過(guò)的電影的推薦評(píng)分。推薦評(píng)分=同現(xiàn)矩陣M*評(píng)分向量R。

評(píng)分向量即用戶對(duì)所有物品(電影)的評(píng)分,由評(píng)分記錄表可得出。

由前面計(jì)算出的同現(xiàn)矩陣和用戶1的評(píng)分向量可得出用戶1對(duì)電影104的推薦評(píng)分為:

U1:14=4.5*3+3.5*1=17

具體求解方法如圖8所示。

用戶ID電影ID1用戶評(píng)分電影ID2電影ID1與電影ID2的關(guān)聯(lián)權(quán)重得分=用戶評(píng)分?電影ID1與電影ID2的關(guān)聯(lián)權(quán)重1114.51434.5?3=13.51123.51413.5?1=3.511331400114014001150141011601430總分=13.5+3.5=17

圖8推薦評(píng)分求解過(guò)程

同樣方法可求得每個(gè)用戶對(duì)未曾看過(guò)的電影的推薦評(píng)分,其結(jié)果如圖9所示。圖中陰影部分為每個(gè)用戶未曾看過(guò)的電影中推薦評(píng)分最高的,也是要推薦的結(jié)果。

然后將推薦得分從高到低排序,實(shí)際應(yīng)用中通常采用Top-N推薦,即為目標(biāo)用戶提供一個(gè)長(zhǎng)度為N的推薦列表,使該推薦列表能夠盡量滿足用戶的興趣和需求。利用Python來(lái)計(jì)算推薦評(píng)分的代碼如圖10所示。

圖9 所有用戶對(duì)未曾觀看的電影的推薦得分

圖10 求解推薦評(píng)分

4.輸出推薦結(jié)果

求得推薦評(píng)分的前N項(xiàng)后就可將結(jié)果輸出給用戶。輸出推薦結(jié)果時(shí),有時(shí)可能需要為某個(gè)指定用戶來(lái)輸出推薦結(jié)果,也可能需要為所有用戶都輸出推薦結(jié)果,為使程序更加靈活,可編制兩個(gè)不同的函數(shù)來(lái)滿足其需求。為一個(gè)指定用戶輸出推薦結(jié)果的Python代碼如圖11所示。

圖11 輸出推薦結(jié)果

例如要為用戶1推薦兩部電影可直接調(diào)用主函數(shù):main_one(“rates.txt”,“movies.txt”,“1”,2),程序運(yùn)行結(jié)果如圖12所示,與前面手工計(jì)算得出的結(jié)果相同。

圖12 用戶1的推薦結(jié)果

若想為每個(gè)用戶都輸出其推薦結(jié)果,其相應(yīng)的主函數(shù)代碼如圖13所示。

圖13 為每個(gè)用戶推薦結(jié)果

如要為每個(gè)用戶推薦1部電影,則可直接調(diào)用主函數(shù):main_all(“rates.txt”,“movies.txt”,1),運(yùn)行結(jié)果如圖14所示。

圖14 所有用戶的推薦結(jié)果

其輸出結(jié)果與前面手工求解的結(jié)果完全相同。

四、分析與測(cè)試

前面給出的測(cè)試數(shù)據(jù)集數(shù)據(jù)很少,主要應(yīng)用于系統(tǒng)開(kāi)發(fā)測(cè)試中。實(shí)際應(yīng)用中推薦系統(tǒng)所用的數(shù)據(jù)集通常為海量數(shù)據(jù),為驗(yàn)證系統(tǒng)在海量數(shù)據(jù)中的使用,可以MovieLens(http://grouplens.org/datasets/movielens)作為電影推薦系統(tǒng)中的實(shí)驗(yàn)數(shù)據(jù)來(lái)測(cè)試系統(tǒng)。MovieLens是GroupLens Research實(shí)驗(yàn)室的一個(gè)非商業(yè)性質(zhì)、以研究為目的的實(shí)驗(yàn)性項(xiàng)目,采集了一組從20世紀(jì)90年代末到21世紀(jì)初的電影評(píng)分?jǐn)?shù)據(jù),包含大小不同的數(shù)據(jù)集,每個(gè)數(shù)據(jù)集中包括電影信息數(shù)據(jù)及電影評(píng)分記錄等。如MovieLens 1M數(shù)據(jù)集中存放了1000多名用戶對(duì)近2000部電影的評(píng)分記錄,每個(gè)用戶至少對(duì)20部電影進(jìn)行過(guò)評(píng)分,一共有100000多條電影評(píng)分記錄。當(dāng)數(shù)據(jù)量增大時(shí),存儲(chǔ)同現(xiàn)矩陣所需要的空間也相應(yīng)增加,通過(guò)前述也可以看出同現(xiàn)矩陣是一稀疏矩陣,因此采用字典來(lái)存儲(chǔ)同現(xiàn)矩陣中的非零元素要比直接存儲(chǔ)整個(gè)同現(xiàn)矩陣節(jié)省空間。又因字典是Python的內(nèi)置對(duì)象,而numpy是第三方擴(kuò)展庫(kù),需要安裝和導(dǎo)入相應(yīng)的模塊,因此同一算法采用內(nèi)置對(duì)象比用擴(kuò)展庫(kù)會(huì)獲得更優(yōu)的時(shí)間性能和空間性能。

五、結(jié)語(yǔ)

本文利用Python實(shí)現(xiàn)的協(xié)同過(guò)濾算法框架清晰,代碼簡(jiǎn)潔,同時(shí)因其用Python的內(nèi)置序列字典代替二維數(shù)組來(lái)存放稀疏矩陣,有效提高了算法的時(shí)間空間效率。

猜你喜歡
用戶信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
Camera360:拍出5億用戶
100萬(wàn)用戶
如何獲取一億海外用戶
展會(huì)信息
信息
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 色噜噜狠狠色综合网图区| 精品伊人久久久久7777人| 全部免费特黄特色大片视频| 亚洲第一视频免费在线| 久久这里只精品国产99热8| 精品一区二区三区视频免费观看| 99青青青精品视频在线| 韩日午夜在线资源一区二区| 久精品色妇丰满人妻| 久久综合色播五月男人的天堂| 国产超碰一区二区三区| 国产精品密蕾丝视频| 精品国产香蕉伊思人在线| 亚洲欧美激情小说另类| 88av在线| 大陆精大陆国产国语精品1024| 97成人在线视频| 午夜免费小视频| 国产成人AV男人的天堂| 狠狠综合久久久久综| 亚洲人成色在线观看| 性视频久久| 成人日韩精品| 国产va欧美va在线观看| 这里只有精品国产| 久久永久精品免费视频| 99久久精品免费视频| 精品久久久久久久久久久| 小蝌蚪亚洲精品国产| 无码一区二区三区视频在线播放| 孕妇高潮太爽了在线观看免费| 97人人做人人爽香蕉精品| 国产91麻豆免费观看| 国产黄色免费看| 国产91熟女高潮一区二区| 国产91麻豆视频| 日韩天堂视频| 久草视频精品| 狠狠色丁婷婷综合久久| 无码 在线 在线| 久久中文字幕av不卡一区二区| 久久国产精品娇妻素人| 午夜成人在线视频| 国产成人区在线观看视频| 久久国产精品电影| 国产精品亚欧美一区二区三区| 国产91线观看| 亚洲国产中文欧美在线人成大黄瓜| 国产一区二区三区在线精品专区| 亚洲乱亚洲乱妇24p| 又黄又湿又爽的视频| 午夜福利在线观看入口| 91无码人妻精品一区二区蜜桃| 国产成人高清精品免费软件 | 尤物精品视频一区二区三区| 老色鬼欧美精品| 成人国产小视频| 久久96热在精品国产高清| 亚洲色图综合在线| 国产成人精品无码一区二| 亚洲一级毛片在线观播放| 色综合久久88| 久久久国产精品免费视频| 动漫精品中文字幕无码| 在线无码私拍| 青青青国产在线播放| 天天干伊人| 亚洲首页国产精品丝袜| 国产亚洲视频免费播放| 成人免费黄色小视频| 国产爽妇精品| 免费观看成人久久网免费观看| 狠狠色丁婷婷综合久久| 欧美a在线看| 久久无码av一区二区三区| 高清无码不卡视频| 精品人妻一区二区三区蜜桃AⅤ| 久久视精品| 亚洲人成色77777在线观看| 伊人91视频| 特级毛片免费视频| 欧美高清日韩|