日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UserCF,基于用户的协同过滤算法

發布時間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UserCF,基于用户的协同过滤算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自? ?UserCF,基于用戶的協同過濾算法

UserCF:User? Collaboration? ?Filter,基于用戶的協同過濾

算法核心思想:在一個在線推薦系統中,當用戶A需要個性化推薦時,可以先找到和他有相似興趣的其它用戶,然后把那些用戶喜歡的、而用戶A沒有聽說過的物品推薦給A,這種方法稱為基于用戶的協同過濾算法。

==>可以看出,這個算法主要包括兩步:

一、找到和目標用戶興趣相似的用戶集合——計算兩個用戶的興趣相似度

二、找到這個集合中的用戶喜歡的,且目標用戶沒有聽說過的物品推薦給目標用戶——找出物品推薦


下面分別來看如何實現這兩步:

一、計算兩個用戶的興趣相似度:

給定用戶u和用戶v,令N(u)表示用戶u感興趣的物品集合,N(v)表示用戶v感興趣的物品集合,那么可以通過Jaccard公式或者通過余弦相似度公式計算:

...Jaccard公式


...余弦相似度公式


舉例:下圖表示用戶A對物品{a,b,d}有過行為,用戶B對物品{a,c}有過行為


利用余弦相似度計算可得:

用戶A和用戶B的興趣相似度為:


同理,



但是,需要注意的是,這種方法的時間復雜度是O(U^2),因為我們需要計算每一對用戶之間的相似度,事實上,很多用戶相互之間并沒有對同樣的物品產生過行為,所以很多時候當分子為0的時候沒有必要再去計算分母,所以這里可以優化:即首先計算出|N(u) 并 N(v)| != 0 的用戶對(u,v),然后對這種情況計算分母以得到兩個用戶的相似度。


針對此優化,需要2步:

(1)建立物品到用戶的倒查表T,表示該物品被哪些用戶產生過行為;

(2)根據倒查表T,建立用戶相似度矩陣W:在T中,對于每一個物品i,設其對應的用戶為j,k,在W中,更新相應的元素值,w[j][k]=w[j][k]+1,w[k][j]=w[k][j]+1,以此類推,掃描完倒查表T中的所有物品后,就可以得到最終的用戶相似度矩陣W,這里的W是余弦相似度中的分子部分,然后將W除以分母可以得到最終的用戶興趣相似度。



得到用戶相似度后,就可以進行第二步了。


二、給用戶推薦和他興趣最相似的K個用戶喜歡的物品。

公式如下:


其中,p(u,i)表示用戶u對物品i的感興趣程度,S(u,k)表示和用戶u興趣最接近的K個用戶,N(i)表示對物品i有過行為的用戶集合,Wuv表示用戶u和用戶v的興趣相似度,Rvi表示用戶v對物品i的興趣(這里簡化,所有的Rvi都等于1)。

根據UserCF算法,可以算出,用戶A對物品c、e的興趣是:



以上就是UserCF最簡單的實現方法。


我們還可以在此基礎上進行改進,改進思想是:兩個用戶對冷門物品采取過同樣的行為更能說明他們興趣的相似度。

比如,兩個用戶都買過《新華詞典》并不能說明兩個人的興趣相似,而如果兩個人都買過《數據挖掘導論》則可以認為他們的興趣相似。

==>公式如下:


可以看到,如果一個物品被大多數人有過行為,則這樣的信息參考價值不大,權重變小。

以上內容參考自《推薦系統實踐》


總結

以上是生活随笔為你收集整理的UserCF,基于用户的协同过滤算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。