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

?

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

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

李梅

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

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

中圖分類號:TP312? ? ? 文獻標(biāo)識碼:A

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

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

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

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

1.1 基礎(chǔ)算法

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

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

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

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

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

1.2 用戶相似度計算的改進

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

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é)同過濾算法

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

2.1 基礎(chǔ)算法

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

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

2) 計算推薦結(jié)果,同時過濾熱門物品。

2.2 物品相似度計算的改進

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

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

3 UserCF和ItemCF的綜合比較

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

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

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

下面從三個方面對比UserCF和ItemCF算法。

1) 在適用場景上的比較

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

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

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

3) 在用戶特點上的比較

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

4 實驗驗證

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

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

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

4.2 新聞熱度值計算

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

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

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

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

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

新聞是一個時效性很強的個體,因此在考慮其熱度值時要把時間因素考慮進去。

4.3 新聞相似度計算

新聞相似度在進行新聞推薦時的一個很重要的因素,這里使用新聞主題詞的重合度來考量新聞相似度。

1) 新聞分詞處理

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

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

2) 計算相似度

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

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

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

其中各個模塊介紹如下:

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

用戶選擇:不同的用戶選擇不同,推薦的內(nèi)容也不同,因為用戶不同所處的圈子也不同。

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

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

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

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

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

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

參考文獻:

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

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

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

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

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

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

沧源| 潞城市| 乐业县| 大竹县| 革吉县| 垫江县| 通河县| 甘德县| 铅山县| 托里县| 乳山市| 凤城市| 兴义市| 武邑县| 珲春市| 中宁县| 南投市| 繁峙县| 东宁县| 穆棱市| 新昌县| 定远县| 陵水| 三亚市| 瑞金市| 潞城市| 黄骅市| 舟曲县| 淮阳县| 常熟市| 读书| 岑巩县| 长岭县| 佛坪县| 桦南县| 醴陵市| 陇西县| 盐城市| 孝义市| 阿拉善右旗| 内乡县|