国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于協(xié)同過(guò)濾的新聞推薦算法研究

2022-02-20 01:25:07李梅
電腦知識(shí)與技術(shù) 2022年34期

李梅

摘要:協(xié)同過(guò)濾算法分為ItemCF算法和UserCF算法,分別側(cè)重物品和用戶(hù),常用于新聞推薦。文章介紹了這兩個(gè)基礎(chǔ)算法及實(shí)現(xiàn)的步驟,并列出了這兩個(gè)算法的優(yōu)缺點(diǎn)。通過(guò)新聞數(shù)據(jù)集20Newsgroups比較了ItemCF算法和UserCF算法在準(zhǔn)確率、召回率、覆蓋率及流行度這四個(gè)評(píng)價(jià)指標(biāo)的值,ItemCF算法都低于UserCF算法。

關(guān)鍵詞:新聞推薦;ItemCF算法;UserCF算法

中圖分類(lèi)號(hào):TP312? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2022)34-0051-03

每天瀏覽新聞已經(jīng)是大多數(shù)人的生活習(xí)慣,如何從海量的新聞中獲取感興趣的新聞,成為很多人關(guān)心的問(wèn)題,可以節(jié)省大量時(shí)間,新聞推薦系統(tǒng)可以完美解決這個(gè)問(wèn)題。下面介紹基于協(xié)同過(guò)濾的新聞推薦算法。

1 基于用戶(hù)的協(xié)同過(guò)濾算法

基于用戶(hù)的協(xié)同過(guò)濾算法(UserCF)在為大家推薦喜歡看的電影方面,如最近看得比較多的歐美大片,為喜歡聽(tīng)音樂(lè)人們推薦好聽(tīng)的歌曲,如WestLife的經(jīng)典歌曲。UserCF算法影響深遠(yuǎn),近年來(lái),廣泛應(yīng)用于各種類(lèi)別的新聞推薦。

1.1 基礎(chǔ)算法

當(dāng)人們需要在網(wǎng)上尋找自己需要的信息時(shí),面對(duì)如此龐大的信息量,常會(huì)感到茫然,這時(shí)亟須一個(gè)推薦系統(tǒng)。通過(guò)用戶(hù)間的大量對(duì)比,發(fā)現(xiàn)興趣愛(ài)好等最相似的m個(gè)用戶(hù),采用相應(yīng)的算法,將這m個(gè)用戶(hù)感興趣的item推薦給該用戶(hù),即為我們熟悉的基于用戶(hù)的協(xié)同過(guò)濾算法(UserCF) 。

從UserCF算法的定義可以看出此算法經(jīng)歷兩個(gè)步驟。

1) 第一步 ,對(duì)比大量用戶(hù),包括他們的購(gòu)物行為等,經(jīng)常去哪些店鋪,經(jīng)常點(diǎn)擊哪類(lèi)物品,發(fā)現(xiàn)與該用戶(hù)興趣愛(ài)好等相似的m個(gè)用戶(hù)。

2) 第二步,把發(fā)現(xiàn)的這m個(gè)用戶(hù)都有興趣的并且該用戶(hù)未涉獵過(guò)的這些item推薦給該用戶(hù)。

第一個(gè)步驟的核心就是尋找相似的m個(gè)用戶(hù),找到后并計(jì)算他們之間的相似度。例如:現(xiàn)在有A、B、C、D四個(gè)用戶(hù),分別對(duì)a、b、c、d、e五個(gè)物品表達(dá)了自己的喜好程度(通過(guò)評(píng)分的高低來(lái)表現(xiàn)自己的喜好程度高低),而B(niǎo)用戶(hù)由于工作需要推薦軟件測(cè)試方面的書(shū)籍,這就需要計(jì)算發(fā)現(xiàn)B用戶(hù)的相似用戶(hù)群,然后找到用戶(hù)群喜歡的經(jīng)常查看的但C未涉獵的軟件測(cè)試方面的書(shū)籍推薦給B[1]。計(jì)算相似度可以使用Jaccard公式:

1.2 用戶(hù)相似度計(jì)算的改進(jìn)

生活中你會(huì)發(fā)現(xiàn),兩個(gè)人都購(gòu)買(mǎi)了《三國(guó)演義》,不能體現(xiàn)這兩個(gè)人的共同興趣,因?yàn)檫@本名著老幼皆知,中國(guó)人買(mǎi)得很多,即熱門(mén)物品對(duì)相似度的影響。再例如,兩個(gè)人都買(mǎi)過(guò)《軟件測(cè)試技術(shù)及項(xiàng)目案例實(shí)踐》,這個(gè)購(gòu)買(mǎi)行為就說(shuō)明兩人興趣愛(ài)好相似,只有對(duì)軟件測(cè)試感興趣或者從事軟件測(cè)試工作的人才會(huì)買(mǎi)這本書(shū)。因此,改進(jìn)相似度計(jì)算公式。

def UserSimilarity(train):

W = dict()

for u in train.keys():

for v in train.keys():

if u == v:

continue

W[u][v] = len(train[u] & train[v])

W[u][v] /= math.sqrt(len(train[u]) * len(train[v]) * 1.0)

return W

2 基于物品的協(xié)同過(guò)濾算法

基于物品的協(xié)同過(guò)濾算法(ItemCF),在某些網(wǎng)站中通過(guò)點(diǎn)擊等行為,使用“Customers who? viewed this also viewed(看過(guò)還看過(guò))”以及“Customers who viewed this item also bought(看過(guò)且買(mǎi)過(guò))”來(lái)進(jìn)行推薦。

2.1 基礎(chǔ)算法

簡(jiǎn)單的抑或通俗解釋?zhuān)ㄟ^(guò)歷史喜歡的item推薦與這個(gè)item相似的item,即物——物。從原理上我們可以得知:這個(gè)算法物——物的推薦方式,與目標(biāo)用戶(hù)的興趣愛(ài)好并不存在某種之間聯(lián)系。例如,要計(jì)算《傲慢與偏見(jiàn)》和《簡(jiǎn)·愛(ài)》兩部電影之間的相似度,需要使用對(duì)這兩部影片都有過(guò)評(píng)價(jià)的用戶(hù)數(shù)據(jù)。UserCF算法中,需要找到行與行之間的相似度;ItemCF算法中,要找到列之間的相似度,這個(gè)是兩者在找相似度方面的差別。ItemCF算法主要經(jīng)歷下面兩個(gè)步驟:

1) 第一步,找到物品之間的相似度,通過(guò)倒排表等方式。

2) 計(jì)算推薦結(jié)果,同時(shí)過(guò)濾熱門(mén)物品。

2.2 物品相似度計(jì)算的改進(jìn)

根據(jù)前面的介紹,在計(jì)算物品的相似度矩陣中有個(gè)問(wèn)題,如果物品j過(guò)于熱門(mén),就像大家熟悉的網(wǎng)紅物品,有很多用戶(hù)都給它進(jìn)行了評(píng)分,則計(jì)算出的Wij就會(huì)很大。熱門(mén)Item影響了推薦,包括明星、網(wǎng)紅代言的這些Item都會(huì)有影響。為了避免推薦熱門(mén)的物品,可以用下面的公式:

修改后的公式變化很大,減少了物品j的權(quán)重占比,還可以避免與網(wǎng)紅熱門(mén)商品相似的概率。這里假設(shè):每個(gè)用戶(hù)的興趣愛(ài)好可能就那么幾個(gè),一個(gè)用戶(hù)如果對(duì)某兩個(gè)item感興趣,則這兩個(gè)item所屬的范圍是有限的,但是大量用戶(hù)對(duì)相關(guān)item感興趣,例如都喜歡軟件測(cè)試書(shū)籍,則具有一定相似度。利用修改后的公式計(jì)算相似度矩陣與評(píng)分矩陣的乘積,與優(yōu)化前的結(jié)果是一樣的。

3 UserCF和ItemCF的綜合比較

由前面的分析,可以看出UserCF和ItemCF這兩個(gè)算法的推薦實(shí)現(xiàn)思路:UserCF算法先要利用相關(guān)算法發(fā)現(xiàn)m個(gè)用戶(hù),即用戶(hù)——用戶(hù),以此為第一步,然后將m個(gè)相似用戶(hù)評(píng)分item在目標(biāo)用戶(hù)沒(méi)有評(píng)分的item推薦給用戶(hù);ItemCF算法要發(fā)現(xiàn)大量item之間的相似度,如不同品牌的長(zhǎng)款大衣,根據(jù)這些 item的相似度進(jìn)行推薦,即人們熟悉的物——物。由此可以看到:

UserCF算法側(cè)重用戶(hù)所處的群體,他們有相似的愛(ài)好,在進(jìn)行推薦時(shí)也是這個(gè)群體中大家極力推崇的,通過(guò)歷史行為計(jì)算得到[2]。

ItemCF算法側(cè)重用戶(hù)以前行為的歷史item,用戶(hù)自己的喜好變化對(duì)用戶(hù)影響更大,偏向于個(gè)性化。

下面從三個(gè)方面對(duì)比UserCF和ItemCF算法。

1) 在適用場(chǎng)景上的比較

ItemCF算法強(qiáng)調(diào)物品間的相似性,因此在進(jìn)行推薦時(shí),當(dāng)用戶(hù)數(shù)量大大超過(guò)item 數(shù)量時(shí),ItemCF算法更加合適。例如,購(gòu)物網(wǎng)站和技術(shù)博客網(wǎng)站的item或文章數(shù)據(jù)比較穩(wěn)定,所以計(jì)算item相似度時(shí)不但計(jì)算量小,而且不必經(jīng)常進(jìn)行更新[3]。UserCF算法強(qiáng)調(diào)用戶(hù)間的相似性,所以在進(jìn)行推薦時(shí),當(dāng)item的 數(shù)量大大超過(guò)用戶(hù)數(shù)量時(shí),UserCF算法更加合適。UserCF算法在新聞?lì)惥W(wǎng)站中可以經(jīng)??吹?。例如,在社交網(wǎng)站中可以使用UserCF算法,可解釋性也更強(qiáng)。所以這些網(wǎng)站的內(nèi)容更新比較快,用戶(hù)更偏愛(ài)社會(huì)化熱點(diǎn)。

2) 在推薦系統(tǒng)多樣性上的比較

ItemCF算法在考慮單個(gè)用戶(hù)的多樣性方面優(yōu)勢(shì)不及UserCF算法,item覆蓋率比較小,多樣性和豐富度都低,且其精度稍微小于UserCF算法。ItemCF算法在考慮系統(tǒng)的多樣性方面要大大勝過(guò)UserCF算法,原因歸于UserCF算法偏重推薦熱門(mén)item。

3) 在用戶(hù)特點(diǎn)上的比較

UserCF算法在進(jìn)行推薦時(shí),如果目標(biāo)用戶(hù)暫時(shí)找不到興趣愛(ài)好相同的鄰居,則該算法的推薦效果就會(huì)大打折扣了,結(jié)果就不好了。因此,用戶(hù)是否適應(yīng)UserCF,與“目標(biāo)用戶(hù)有多少鄰居”成正比。ItemCF算法要發(fā)現(xiàn)某個(gè)人愛(ài)好item 的自相似度,一旦大了,則說(shuō)明該用戶(hù)對(duì)ItemCF算法的適應(yīng)度很好。反之,說(shuō)明該用戶(hù)的偏好不滿(mǎn)足ItemCF算法的假設(shè)條件,則此時(shí)使用ItemCF算法對(duì)該用戶(hù)進(jìn)行推薦效果不佳。

4 實(shí)驗(yàn)驗(yàn)證

所使用的數(shù)據(jù)來(lái)源是新聞數(shù)據(jù)集20Newsgroups。選擇的幾個(gè)主題為:國(guó)內(nèi)新聞、航空、軍事、傳媒研究院、公益、媒體。爬取的每條數(shù)據(jù)包含三個(gè)字段:標(biāo)題、時(shí)間、正文、預(yù)處理數(shù)據(jù)。

4.1 原始數(shù)據(jù)加工

原始數(shù)據(jù)只包含標(biāo)題、時(shí)間和正文三個(gè)字段,這里增加唯一編號(hào)、類(lèi)別、瀏覽次數(shù)和跟帖次數(shù)這幾個(gè)字段并對(duì)原始數(shù)據(jù)簡(jiǎn)單處理,其中“瀏覽次數(shù)”和“跟帖次數(shù)”是為了方便后續(xù)對(duì)新聞進(jìn)行排序增加的隨機(jī)值。

4.2 新聞熱度值計(jì)算

這里為每則新聞?dòng)?jì)算一個(gè)熱度分,為后續(xù)的“熱度榜”和“為你推薦”做新聞排序使用。這里的新聞熱度值采用如下的公式計(jì)算:

hotValue=seeNum*0.4+disNum*0.5-diffDays*0.1

其中:seeNum:某則新聞被瀏覽的次數(shù);

disNum:某則新聞被評(píng)論的次數(shù);

diffDays:新聞在某一天發(fā)表及和當(dāng)前的日期差。

新聞是一個(gè)時(shí)效性很強(qiáng)的個(gè)體,因此在考慮其熱度值時(shí)要把時(shí)間因素考慮進(jìn)去。

4.3 新聞相似度計(jì)算

新聞相似度在進(jìn)行新聞推薦時(shí)的一個(gè)很重要的因素,這里使用新聞主題詞的重合度來(lái)考量新聞相似度。

1) 新聞分詞處理

首先需要對(duì)新聞進(jìn)行分詞處理。實(shí)現(xiàn)思路是:因?yàn)樾侣剺?biāo)題多樣,如軍事類(lèi)、科技類(lèi)、汽車(chē)類(lèi),利用Python的jieba分詞包,可以對(duì)這些關(guān)鍵詞分詞處理。看一篇新聞的第一切入點(diǎn)便是新聞標(biāo)題,新聞標(biāo)題是整篇新聞的高度概括,因?yàn)楫?dāng)兩則新聞的標(biāo)題重合度越高時(shí),新聞本身的內(nèi)容相似度也就越大[4]。

原始數(shù)據(jù)加載之后保存在相應(yīng)的變量中,在對(duì)文章標(biāo)題分詞時(shí)使用,分詞使用的是jieba.analyse.extract_tags()函數(shù)。句子組成中包含了大量的單音節(jié)詞、標(biāo)點(diǎn)符號(hào)等,在分詞時(shí)要去掉這些詞語(yǔ)或標(biāo)點(diǎn)符號(hào),其具體的實(shí)現(xiàn)方法是加載停用詞表進(jìn)行過(guò)濾,提取新聞標(biāo)題的關(guān)鍵詞,例如標(biāo)題。

2) 計(jì)算相似度

相似度的計(jì)算需要相關(guān)函數(shù)去完成,這里用到的函數(shù)為:getCorrelation(self)。

4.4 指定標(biāo)簽下的新聞統(tǒng)計(jì)

統(tǒng)計(jì)指定標(biāo)簽下的新聞是為用戶(hù)選擇標(biāo)簽后生成“為你推薦”內(nèi)容做準(zhǔn)備,這里指定用戶(hù)可以選擇的標(biāo)簽有:互聯(lián)網(wǎng)、金融、旅游、經(jīng)濟(jì)、文學(xué)、音樂(lè)、綜藝等。

其中各個(gè)模塊介紹如下:

MySQL數(shù)據(jù)存儲(chǔ):這里使用MySQL存儲(chǔ)系統(tǒng)所使用的數(shù)據(jù)。系統(tǒng)實(shí)現(xiàn)選用的是Python的Django框架,在框架中有對(duì)數(shù)據(jù)對(duì)象的封裝。

用戶(hù)選擇:不同的用戶(hù)選擇不同,推薦的內(nèi)容也不同,因?yàn)橛脩?hù)不同所處的圈子也不同。

選擇標(biāo)簽:解決冷啟動(dòng)問(wèn)題。當(dāng)然用戶(hù)也可以不選擇相應(yīng)的標(biāo)簽,此時(shí)“為你推薦”模塊顯示的是熱度數(shù)據(jù)。

用戶(hù)點(diǎn)擊瀏覽文章:即用戶(hù)在系統(tǒng)中產(chǎn)生了相關(guān)行為,每篇文章的詳細(xì)頁(yè)都會(huì)推薦該篇文章的相似文章。

熱度榜:熱度值高的排在最上面,這樣計(jì)算結(jié)果高的文章將顯示出來(lái)。

為你推薦:如果用戶(hù)是初次登錄,則根據(jù)用戶(hù)選擇的標(biāo)簽返回“為你推薦”的內(nèi)容;若用戶(hù)沒(méi)有選擇標(biāo)簽,則返回?zé)岫戎递^高的新聞作為“為你推薦”的內(nèi)容;如果用戶(hù)是在點(diǎn)擊瀏覽過(guò)新聞之后返回“為你推薦”模塊,則返回用戶(hù)有行為文章的相似文章,作為“為你推薦”的內(nèi)容。

從以表1可見(jiàn),準(zhǔn)確率和流行度等評(píng)價(jià)指標(biāo), ItemCF算法都低于UserCF算法。

雖然基于協(xié)同過(guò)濾的新聞推薦算法比較常見(jiàn),從人們熟悉的搜狐、網(wǎng)易等門(mén)戶(hù)網(wǎng)站中,可以看到新聞的數(shù)量龐大,而且更新很快,有時(shí)幾個(gè)小時(shí)就會(huì)更新一次,所以在使用時(shí)選擇更優(yōu)的推薦算法尤為重要。用戶(hù)的興趣愛(ài)好比較穩(wěn)定,例如有的人喜歡看歐美電影,有的人喜歡聽(tīng)古典音樂(lè),有的人喜歡看每日新聞等。新聞網(wǎng)站中使用UserCF算法比較多,原因如下:UserCF算法根據(jù)不同的用戶(hù)只要更新用戶(hù)相似性表即可,比較好實(shí)現(xiàn),但新聞的更新頻率太快,在ItemCF算法相當(dāng)于要不停更新item相關(guān)度表,實(shí)現(xiàn)起來(lái)要困難得多[5]。所以,新聞網(wǎng)站中更愿意采用UserCF算法。

參考文獻(xiàn):

[1] 項(xiàng)亮.推薦系統(tǒng)實(shí)踐[M].北京:人民郵電出版社,2012.

[2] 董晨露,柯新生.基于用戶(hù)興趣變化和評(píng)論的協(xié)同過(guò)濾算法研究[J].計(jì)算機(jī)科學(xué),2018,45(3):215-219,248.

[3] 楊武,唐瑞,盧玲.基于內(nèi)容的推薦與協(xié)同過(guò)濾融合的新聞推薦方法[J].計(jì)算機(jī)應(yīng)用,2016,36(2):414-418.

[4] 黃賢英,熊李媛,李沁東.基于改進(jìn)協(xié)同過(guò)濾算法的個(gè)性化新聞推薦技術(shù)[J].四川大學(xué)學(xué)報(bào)(自然科學(xué)版),2018,55(1):49-55.

[5] 高陽(yáng)團(tuán).推薦系統(tǒng)開(kāi)發(fā)實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2019.

【通聯(lián)編輯:光文玲】

德钦县| 绥滨县| 潮安县| 苍溪县| 香格里拉县| 云南省| 锡林郭勒盟| 磴口县| 凤翔县| 郧西县| 博湖县| 文登市| 曲周县| 邹城市| 达孜县| 阜新| 赞皇县| 两当县| 临洮县| 阳东县| 闽清县| 太仆寺旗| 乌审旗| 灵台县| 万山特区| 田东县| 宝应县| 古浪县| 筠连县| 黎城县| 电白县| 永年县| 永修县| 华蓥市| 宜川县| 乌兰察布市| 荔浦县| 云龙县| 镇远县| 彭州市| 宜阳县|