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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

协同过滤——基于邻域的算法

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

文章目錄

  • 1、概述
    • 1.1 基于用戶的協同過濾與基于物品的協同過濾的比較
    • 1.2 用戶行為數據
    • 1.3 數學符號約定
  • 2、基于用戶的協同過濾
    • 2.1 基本原理
    • 2.2 數學描述
    • 2.3 回歸與分類
  • 3、基于物品的協同過濾
    • 3.1 基本原理
    • 3.2 數學描述
    • 3.3 哈利波特問題
  • 4、基于鄰域方法的要素
    • 4.1 評分標準化
      • 4.1.1 均值中心化
      • 4.1.2 Z-score標準化
    • 4.2 相似度的計算
      • 4.2.1 常用的相似度
      • 4.2.2 相似度效果比較
      • 4.2.3 關于權重的重要性
      • 4.2.4 評分的差異性
    • 4.3 鄰域的選擇
      • 4.3.1 過濾預選近鄰數量
      • 4.3.2 用于預測的近鄰

基于用戶行為分析的推薦算法是個性化推薦系統的重要算法,學術界一般將這種類型的算法稱為協同過濾算法。顧名思義,協同過濾就是指用戶可以齊心協力,通過不斷地和網站互動,使自己的推薦列表能夠不斷過濾掉自己不感興趣的物品,從而越來越滿足自己的需求。

協同過濾使用的主要數據都是用戶對物品的評價。協同過濾可以分為以下3類:
基于領域的方法:基于用戶的推薦(User-based Recommendation)、基于物品的推薦(Item-based Recommendation);
基于模型的方法:SVD、LFM等;
基于圖的方法;

本節主要介紹基于鄰域的方法。

1、概述

1.1 基于用戶的協同過濾與基于物品的協同過濾的比較

見《推薦系統:技術、評估及高效算法》P30

  • 合理性(可解釋性)

基于物品的推薦系統更具可解釋性。

  • 計算復雜度

Item CF 和 User CF 是基于協同過濾推薦的兩個最基本的算法,User CF 是很早以前就提出來了,Item CF 是從 Amazon 的論文和專利發表之后(2001 年左右)開始流行,大家都覺得 Item CF 從性能和復雜度上比 User CF 更優,其中的一個主要原因就是對于一個在線網站,用戶的數量往往大大超過物品的數量,同時物品的數據相對穩定,因此計算物品的相似度不但計算量較小,同時也不必頻繁更新。但我們往往忽略了這種情況只適應于提供商品的電子商務網站,對于新聞,博客或者微內容的推薦系統,情況往往是相反的,物品的數量是海量的,同時也是更新頻繁的,所以單從復雜度的角度,這兩個算法在不同的系統中各有優勢,推薦引擎的設計者需要根據自己應用的特點選擇更加合適的算法。

  • 適用場景

在非社交網絡的網站中,內容內在的聯系是很重要的推薦原則,它比基于相似用戶的推薦原則更加有效。比如在購書網站上,當你看一本書的時候,推薦引擎會給你推薦相關的書籍,這個推薦的重要性遠遠超過了網站首頁對該用戶的綜合推薦??梢钥吹?#xff0c;在這種情況下,Item CF 的推薦成為了引導用戶瀏覽的重要手段。同時 Item CF 便于為推薦做出解釋,在一個非社交網絡的網站中,給某個用戶推薦一本書,同時給出的解釋是某某和你有相似興趣的人也看了這本書,這很難讓用戶信服,因為用戶可能根本不認識那個人;但如果解釋說是因為這本書和你以前看的某本書相似,用戶可能就覺得合理而采納了此推薦。
相反的,在現今很流行的社交網絡站點中,User CF 是一個更不錯的選擇,User CF 加上社會網絡信息,可以增加用戶對推薦解釋的信服程度。

  • 推薦多樣性和精度
    研究推薦引擎的學者們在相同的數據集合上分別用 User CF 和 Item CF 計算推薦結果,發現推薦列表中,只有 50% 是一樣的,還有 50% 完全不同。但是這兩個算法確有相似的精度,所以可以說,這兩個算法是很互補的。

關于推薦的多樣性,有兩種度量方法:
第一種度量方法是從單個用戶的角度度量,就是說給定一個用戶,查看系統給出的推薦列表是否多樣,也就是要比較推薦列表中的物品之間兩兩的相似度,不難想到,對這種度量方法,Item CF 的多樣性顯然不如 User CF 的好,因為 Item CF 的推薦就是和以前看的東西最相似的。
第二種度量方法是考慮系統的多樣性,也被稱為覆蓋率 (Coverage),它是指一個推薦系統是否能夠提供給所有用戶豐富的選擇。在這種指標下,Item CF 的多樣性要遠遠好于 User CF, 因為 User CF 總是傾向于推薦熱門的,從另一個側面看,也就是說,Item CF 的推薦有很好的新穎性,很擅長推薦長尾里的物品。所以,盡管大多數情況,Item CF 的精度略小于 User CF, 但如果考慮多樣性,Item CF 卻比 User CF 好很多。

如果你對推薦的多樣性還心存疑惑,那么下面我們再舉個實例看看 User CF 和 Item CF 的多樣性到底有什么差別。首先,假設每個用戶興趣愛好都是廣泛的,喜歡好幾個領域的東西,不過每個用戶肯定也有一個主要的領域,對這個領域會比其他領域更加關心。給定一個用戶,假設他喜歡 3 個領域 A,B,C,A 是他喜歡的主要領域,這個時候我們來看 User CF 和 Item CF 傾向于做出什么推薦:如果用 User CF, 它會將 A,B,C 三個領域中比較熱門的東西推薦給用戶;而如果用 ItemCF,它會基本上只推薦 A 領域的東西給用戶。所以我們看到因為 User CF 只推薦熱門的,所以它在推薦長尾里項目方面的能力不足;而 Item CF 只推薦 A 領域給用戶,這樣他有限的推薦列表中就可能包含了一定數量的不熱門的長尾物品,同時 Item CF 的推薦對這個用戶而言,顯然多樣性不足。但是對整個系統而言,因為不同的用戶的主要興趣點不同,所以系統的覆蓋率會比較好。

從上面的分析,可以很清晰的看到,這兩種推薦都有其合理性,但都不是最好的選擇,因此他們的精度也會有損失。其實對這類系統的最好選擇是,如果系統給這個用戶推薦 30 個物品,既不是每個領域挑選 10 個最熱門的給他,也不是推薦 30 個 A 領域的給他,而是比如推薦 15 個 A 領域的給他,剩下的 15 個從 B,C 中選擇。所以結合 User CF 和 Item CF 是最優的選擇,結合的基本原則就是當采用 Item CF 導致系統對個人推薦的多樣性不足時,我們通過加入 User CF 增加個人推薦的多樣性,從而提高精度,而當因為采用 User CF 而使系統的整體多樣性不足時,我們可以通過加入 Item CF 增加整體的多樣性,同樣同樣可以提高推薦的精度。

  • 用戶對推薦算法的適應度

前面我們大部分都是從推薦引擎的角度考慮哪個算法更優,但其實我們更多的應該考慮作為推薦引擎的最終使用者 – 應用用戶對推薦算法的適應度。
對于 User CF,推薦的原則是假設用戶會喜歡那些和他有相同喜好的用戶喜歡的東西,但如果一個用戶沒有相同喜好的朋友,那 User CF 的算法的效果就會很差,所以一個用戶對的 CF 算法的適應度是和他有多少共同喜好用戶成正比的。

Item CF 算法也有一個基本假設,就是用戶會喜歡和他以前喜歡的東西相似的東西,那么我們可以計算一個用戶喜歡的物品的自相似度。一個用戶喜歡物品的自相似度大,就說明他喜歡的東西都是比較相似的,也就是說他比較符合 Item CF 方法的基本假設,那么他對 Item CF 的適應度自然比較好;反之,如果自相似度小,就說明這個用戶的喜好習慣并不滿足 Item CF 方法的基本假設,那么對于這種用戶,用 Item CF 方法做出好的推薦的可能性非常低。

1.2 用戶行為數據

《推薦系統實踐》
用戶行為在個性化推薦系統中一般分兩種——顯性反饋行為(explicit feedback)和隱性反饋行為(implicit feedback)。在很多網站中,很多用戶甚至只有隱性反饋數據,而沒有顯性反饋數據。

很多關于互聯網數據的研究發現,互聯網上的很多數據分布都滿足一種稱為Power Law①的分布,這個分布在互聯網領域也稱長尾分布。 ① 參見“淺談網絡世界的Power Law現象”,地址為http://mmdays.com/2008/11/22/power_law_1/。 長尾分布其實很早就被統計學家注意到了。1932年,哈佛大學的語言學家Zipf在研究英文單詞的詞頻時發現,如果將單詞出現的頻率按照由高到低排列,則每個單詞出現的頻率和它在熱門排行榜中排名的常數次冪成反比。

一般認為,新用戶傾向于瀏覽熱門的物品,因為他們對網站還不熟悉,只能點擊首頁的熱門物品,而老用戶會逐漸開始瀏覽冷門的物品。

1.3 數學符號約定

我們參考《推薦系統:技術、評估及高效算法》的數學符號:

我們定義用戶集合為UUU,物品集合為TTT,系統評分集合為RRR,評分的可選集合為SSS,如S={1,2,3,4,5}S = \{1,2,3,4,5\}S={1,2,3,4,5}。

ruir_{ui}rui?表示用戶u∈Uu \in UuU對于特定物品i∈Ti \in TiT的評分。

UiU_iUi?表示集合中已經對物品iii進行了評分的用戶集合。

TuT_uTu?表示被用戶UUU所評分的集合。

TuvT_{uv}Tuv?表示被用戶uuuvvv同時評論的物品集合。

UijU_{ij}Uij?表示同時對物品iii和物品jjj做出評論的物品集合。

2、基于用戶的協同過濾

2.1 基本原理

基于用戶的協同過濾推薦的基本原理是,根據所有用戶對物品或者信息的偏好,發現與當前用戶口味和偏好相似的“鄰居”用戶群,在一般的應用中是采用計算“K-鄰居”的算法;然后,基于這 K 個鄰居的歷史偏好信息,為當前用戶進行推薦。

上圖示意出基于用戶的協同過濾推薦機制的基本原理,假設用戶 A 喜歡物品 A,物品 C,用戶 B 喜歡物品 B,用戶 C 喜歡物品 A ,物品 C 和物品 D;從這些用戶的歷史喜好信息中,我們可以發現用戶 A 和用戶 C 的口味和偏好是比較類似的,同時用戶 C 還喜歡物品 D,那么我們可以推斷用戶 A 可能也喜歡物品 D,因此可以將物品 D 推薦給用戶 A。

基于用戶的協同過濾推薦機制和基于人口統計學的推薦機制都是計算用戶的相似度,并基于“鄰居”用戶群計算推薦,但它們所不同的是如何計算用戶的相似度,基于人口統計學的機制只考慮用戶本身的特征,而基于用戶的協同過濾機制可是在用戶的歷史偏好的數據上計算用戶的相似度,它的基本假設是,喜歡類似物品的用戶可能有相同或者相似的口味和偏好。

2.2 數學描述

見《推薦系統:技術、評估及高效算法》P28

基于用戶的協同過濾計算用戶uuuiii的評分ruir_{ui}rui?的方法是:利用和用戶uuu興趣相同的用戶對物品iii的評分預估用戶uuuiii的評分。

因此,2個核心的問題是:

  • 如何發現和用戶uuu興趣相同的用戶,即其近鄰。
  • 如何使用近鄰的評分預估用戶uuuiii的評分。

我們用ωuv\omega_{uv}ωuv?表示用戶uuuvvv的相似程度;與用戶最相似的kkk個用戶表示為N(u)N(u)N(u),這些用戶中對物品iii做了評分的用戶表示為Ni(U)N_i(U)Ni?(U)。

我們預測ruir_{ui}rui?為這些用戶對物品iii的評分的平均值:

rui^=1∣Ni(u)∣∑v∈Ni(u)rvi\hat{r_{ui}} = \frac{1}{|N_i(u)|}\sum_{v \in N_i(u)}{r_{vi}} rui?^?=Ni?(u)1?vNi?(u)?rvi?

上述是最簡單的計算ruir_{ui}rui?的方式,但我們還應該考慮到用戶uuu與各個近鄰間的相似程度其實是有差異的,他們對ruir_{ui}rui?的影響也應該不同,我們對各個近鄰的評分進行加權平均得出ruir_{ui}rui?

rui^=∑v∈Ni(u)ωuvrvi∑v∈Ni(u)∣ωuv∣\hat{r_{ui}} = \frac{\sum_{v \in N_i(u)}\omega_{uv}{r_{vi}}}{\sum_{v \in N_i(u)}|\omega_{uv}|} rui?^?=vNi?(u)?ωuv?vNi?(u)?ωuv?rvi??
注意權重應該做標準化,以保證ruir_{ui}rui?不超出評分標準范圍。

還有一個問題,上面的方法沒有考慮用戶會使用不同的評分尺度,比如一個用戶對所有物品都評分較高,而另一個用戶對所有物品都評分較低,這種情況下,他們為同一個物品評3分是完全不同含義的。解決這個問題的辦法是將近鄰的評分rvir_{vi}rvi?進行標準化轉移h(rvi)h(r_{vi})h(rvi?),因此最終的ruir_{ui}rui?調整為:
rui^=h?1(∑v∈Ni(u)ωuvh(rvi)∑v∈Ni(u)∣ωuv∣)\hat{r_{ui}} = h^{-1}(\frac{\sum_{v \in N_i(u)}\omega_{uv}{h(r_{vi}})}{\sum_{v \in N_i(u)}|\omega_{uv}|}) rui?^?=h?1(vNi?(u)?ωuv?vNi?(u)?ωuv?h(rvi?)?)

常用的h()h()h()函數在下面的評分標準化介紹。

2.3 回歸與分類

上述計算都是基于用戶的評分預測的,也就是說計算用戶的商品的具體評分。另一種情形是分類,找出用戶對物品最有可能的評分。

選擇回歸還是分類很大程度取決于系統的評分刻度類型。如果一個評分刻度是連續的,那么回歸更合適。如果評分是一些離散的值,比如喜歡、不喜歡,則分類更合適。

事實上,分類的方式都可以通過將類型轉換成分數來變成回歸問題,前提是這幾個分類是可比較的,比如理解為喜歡是高分,不喜歡是低分。

比較2種方法:當近鄰數量增加時,在回歸方法中,用戶uuuiii的評分趨向于平均分;在分類方法中,用戶uuuiii的評分等于物品iii出現最頻繁的評分。

對于分類的應用可參考《推薦系統:技術、評估及高效算法》。

3、基于物品的協同過濾

3.1 基本原理

基于項目的協同過濾推薦的基本原理也是類似的,只是說它使用所有用戶對物品或者信息的偏好,發現物品和物品之間的相似度,然后根據用戶的歷史偏好信息,將類似的物品推薦給用戶:

假設用戶 A 喜歡物品 A 和物品 C,用戶 B 喜歡物品 A,物品 B 和物品 C,用戶 C 喜歡物品 A,從這些用戶的歷史喜好可以分析出物品 A 和物品 C 時比較類似的,喜歡物品 A 的人都喜歡物品 C,基于這個數據可以推斷用戶 C 很有可能也喜歡物品 C,所以系統會將物品 C 推薦給用戶 C。

與上面講的類似,基于項目的協同過濾推薦和基于內容的推薦其實都是基于物品相似度預測推薦,只是相似度計算的方法不一樣,前者是從用戶歷史的偏好推斷,而后者是基于物品本身的屬性特征信息。

3.2 數學描述

見《推薦系統:技術、評估及高效算法》P29

基于物品的協同過濾計算用戶uuuiii的評分ruir_{ui}rui?的方法是:將與用戶購買喜歡的物品相似的物品推薦給用戶。

因此,2個核心的問題是:

  • 如何發現物品的相似物品,即其近鄰。
  • 如何使用用戶uuu對其它物品的評分預估用戶uuuiii的評分。

我們用ωij\omega_{ij}ωij?表示物品iiijjj的相似程度;與物iii品最相似的kkk個物品表示為N(i)N(i)N(i),用戶uuu做了評分的近鄰物品表示為Nu(i)N_u(i)Nu?(i)。

同時我們考慮近鄰的權重:

rui^=∑j∈Nu(i)ωijruj∑j∈Nu(i)∣ωij∣\hat{r_{ui}} = \frac{\sum_{j \in N_u(i)}\omega_{ij}{r_{uj}}}{\sum_{j \in N_u(i)}|\omega_{ij}|} rui?^?=jNu?(i)?ωij?jNu?(i)?ωij?ruj??
注意權重應該做標準化,以保證ruir_{ui}rui?不超出評分標準范圍。

同樣,考慮到不同商品的評分分布不同,最終的ruir_{ui}rui?調整為:
rui^=h?1(∑j∈Nu(i)ωijh(ruj)∑j∈Nu(i)∣ωij∣)\hat{r_{ui}} = h^{-1}(\frac{\sum_{j \in N_u(i)}\omega_{ij}h(r_{uj})}{\sum_{j \in N_u(i)}|\omega_{ij}|}) rui?^?=h?1(jNu?(i)?ωij?jNu?(i)?ωij?h(ruj?)?)
常用的h()h()h()函數在下面的評分標準化介紹。

3.3 哈利波特問題

《推薦系統實踐》
亞馬遜網的研究人員在設計ItemCF算法之初發現ItemCF算法計算出的圖書相關表存在一個問題,就是很多書都和《哈利波特》相關。③也就是說,購買任何一本書的人似乎都會購買《哈利波特》。后來他們研究發現,主要是因為《哈利波特》太熱門了,確實是購買任何一本書的人幾乎都會購買它。

4、基于鄰域方法的要素

要實現協同過濾,需要一下幾個步驟

?收集用戶偏好

?找到相似的用戶或物品

?計算推薦

在這個過程中,以下3個要素對推薦

4.1 評分標準化

當一個用戶為某個物品評分時,每個人都有自己的評分準則,這會對推薦系統的準確性、效率等產生很大的影響,所以我們一般需要將用戶的評分標準到更一般的整體評分標準。最常用的標準化方式有:

  • 均值中心化
  • Z-score

4.1.1 均值中心化

將用戶評分標準化的一個最直觀的方式就是將用戶的評分減去他所有評分的平均值r ̄u\overline{r}_uru?。同時,預測用戶對某個物品的評分時,就是將預測分加上他自身評分的平均分,亦即對于基于用戶的推薦方法來說:
h(rui)=rui?r ̄ur^ui=r ̄u+∑v∈Ni(u)ωuv(rvi?r ̄v)∑v∈Ni(u)∣ωuv∣h(r_{ui}) = r_{ui} - \overline{r}_u \\ \hat{r}_{ui} = \overline{r}_u + \frac{\sum_{v \in N_i(u)}\omega_{uv}(r_{vi} - \overline{r}_v)}{\sum_{v \in N_i(u)}|\omega_{uv}|} h(rui?)=rui??ru?r^ui?=ru?+vNi?(u)?ωuv?vNi?(u)?ωuv?(rvi??rv?)?

對于基于物品的推薦方法來說:

h(rui)=rui?r ̄ir^ui=r ̄i+∑j∈Nu(i)ωij(ruj?r ̄j)∑j∈Nu(i)∣ωij∣h(r_{ui}) = r_{ui} - \overline{r}_i \\ \hat{r}_{ui} = \overline{r}_i + \frac{\sum_{j \in N_u(i)}\omega_{ij}(r_{uj} - \overline{r}_j)}{\sum_{j \in N_u(i)}|\omega_{ij}|} h(rui?)=rui??ri?r^ui?=ri?+jNu?(i)?ωij?jNu?(i)?ωij?(ruj??rj?)?

4.1.2 Z-score標準化

均值中心化方法移除了針對平均評分的不同感受而導致的偏差,而Z-score標準化還考慮到了個人評分范圍不同帶來的差異性。

考慮這種情況,A用戶為5個商品的評分是{1,2,3,4,5},而B用戶為這5個用戶的評分是{3,3,3,3,3}。他們的 r ̄u=3\overline{r}_u = 3ru?=3,假如現在他們為同一個商品T評分4分,他們的含義是不同的。

因此,在基于用戶的推薦方法中,標準化評分 ruir_{ui}rui?等于用戶均值中心化評分除以用戶評分標準差:
h(rui)=rui?r ̄uσuh(r_{ui}) = \frac{r_{ui} -\overline{r}_u} {\sigma_u} h(rui?)=σu?rui??ru??
對于上面的例子而言,由于B用戶的方差小于A,所以對于商品T,B用戶的評分大于A。

于是,基于用戶的推薦方法預測評分 ruir_{ui}rui?可以表達為:

r^ui=r ̄u+∑v∈Ni(u)ωuv(rvi?r ̄v)/σv∑v∈Ni(u)∣ωuv∣\hat{r}_{ui} = \overline{r}_u + \frac{\sum_{v \in N_i(u)}\omega_{uv}(r_{vi} - \overline{r}_v)/\sigma_v}{\sum_{v \in N_i(u)}|\omega_{uv}|} r^ui?=ru?+vNi?(u)?ωuv?vNi?(u)?ωuv?(rvi??rv?)/σv??

同理,基于物品的推薦方法為:

$$
h(r_{ui}) = \frac{r_{ui} - \overline{r}_i}{\sigma_j}

\hat{r}{ui} = \overline{r}i + \frac{\sum{j \in N_u(i)}\omega{ij}(r_{uj} - \overline{r}j)/\sigma_j}{\sum{j \in N_u(i)}|\omega_{ij}|}
$$

4.2 相似度的計算

推薦系統中的一個重要問題是:如何計算2個商品或者物品的相似度?

4.2.1 常用的相似度

目前,常用的計算方式有:

(1)歐幾里得相似度:均方差相似度(MSD)

最初用于計算歐幾里德空間中兩個點的距離,用于計算相似度時:

11+∑i∈Tuvrui2?rvi2\frac{1}{1+\sum_{i \in T_{uv}}\sqrt{r_{ui}^2-r_{vi}^2}} 1+iTuv??rui2??rvi2??1?

其中$ T_{uv}表示用戶表示用戶u和用戶和用戶v$都有評分的物品。基于物品的推薦與此類似。

而均方差相似度使用2個用戶對相同物品評分差的平方總和和均值的倒數表示2個用戶的相似度:

MSD(u,v)=∣Tuv∣∑i∈Tuvrui2?rvi2MSD(u,v) = \frac{|T_{uv}|}{\sum_{i \in T_{uv}}\sqrt{r_{ui}^2-r_{vi}^2}} MSD(u,v)=iTuv??rui2??rvi2??Tuv??
這種方法無法表示負關聯。
(2)余弦相似度

CV(u,v)=∑i∈Tuvruirvi∑i∈Turui2∑i∈Tvrvi2CV(u,v) = \frac{\sum_{i \in T_{uv}}r_{ui}r_{vi}}{\sqrt {\sum_{i \in T_u}r_{ui}^2 \sum_{i \in T_v}r_{vi}^2 } } CV(u,v)=iTu??rui2?iTv??rvi2??iTuv??rui?rvi??
關于余弦相似度的解釋請參考:??

(3)皮爾遜相關度(Pearson Correlation)

余弦相似度并沒有考慮評分均值及方差的影響,皮爾遜相關度做了調整:

PV(u,v)=∑i∈Tuv(rui?ru ̄)(rvi?rv ̄)∑i∈Tuv(rui?ru ̄)2∑i∈Tuv(rvi?rv ̄)2PV(u,v) = \frac{\sum_{i \in T_{uv}}(r_{ui} - \overline{r_u})(r_{vi}- \overline{r_v})}{\sqrt {\sum_{i \in T_{uv}}(r_{ui}- \overline{r_u})^2 \sum_{i \in T_{uv}}(r_{vi}-\overline{r_v})^2 } } PV(u,v)=iTuv??(rui??ru??)2iTuv??(rvi??rv??)2?iTuv??(rui??ru??)(rvi??rv??)?
注意,這和先進行Z-score標準化評分,然后計算余弦相似度是不同的,皮爾遜相關度僅考慮了用戶評分交集的標準差,而不是全部。

不是指考慮了均值嗎?有標準差?

基于物品的推薦為:
PV(i,j)=∑u∈Uij(rui?ri ̄)(rvi?rj ̄)∑u∈Uij(rui?ru ̄)2∑u∈Uij(rvi?rj ̄)2PV(i,j) = \frac{\sum_{u \in U_{ij}}(r_{ui} - \overline{r_i})(r_{vi}- \overline{r_j})}{\sqrt {\sum_{u \in U_{ij}}(r_{ui}- \overline{r_u})^2 \sum_{u \in U_{ij}}(r_{vi}-\overline{r_j})^2 } } PV(i,j)=uUij??(rui??ru??)2uUij??(rvi??rj??)2?uUij??(rui??ri??)(rvi??rj??)?

(4)調整的余弦相似度(Adjusted Cosine)
一般而言,用戶間的方差要明顯大于物品間的評分,因此計算物品間相似度時,相比于用物品均值中心化,用戶均值話更加合適:
AV(i,j)=∑u∈Uij(rui?ru ̄)(rvi?ru ̄)∑u∈Uij(rui?ru ̄)2∑u∈Uij(rvi?ru ̄)2AV(i,j) = \frac{\sum_{u \in U_{ij}}(r_{ui} - \overline{r_u})(r_{vi}- \overline{r_u})}{\sqrt {\sum_{u \in U_{ij}}(r_{ui}- \overline{r_u})^2 \sum_{u \in U_{ij}}(r_{vi}-\overline{r_u})^2 } } AV(i,j)=uUij??(rui??ru??)2uUij??(rvi??ru??)2?uUij??(rui??ru??)(rvi??ru??)?

在一些基于物品的推薦例子中,用調整的余弦相似度要好于皮爾遜相似度。

(5)斯皮爾曼等級關聯(Spearman Rank Correlation, SRC)
和皮爾遜相關度直接使用評分不同,斯皮爾曼等級關聯運用這些評分的排名。

SRC(u,v)=∑i∈Tuv(kui?ku ̄)(kvi?kv ̄)∑i∈Tuv(kui?ku ̄)2∑i∈Tuv(kvi?kv ̄)2SRC(u,v) = \frac{\sum_{i \in T_{uv}}(k_{ui} - \overline{k_u})(k_{vi}- \overline{k_v})}{\sqrt {\sum_{i \in T_{uv}}(k_{ui}- \overline{k_u})^2 \sum_{i \in T_{uv}}(k_{vi}-\overline{k_v})^2 } } SRC(u,v)=iTuv??(kui??ku??)2iTuv??(kvi??kv??)2?iTuv??(kui??ku??)(kvi??kv??)?
其中kuik_{ui}kui?為物品iii在用戶uuu所評分物品中的排位,k ̄u\overline k_uku?是用戶所評價物品的平均排名。

SRC的主要優勢在于排名可以繞開標準化評分的問題,但當用戶評分只有少量可選項時,這種方法不是最好的,因為會產生大量的并列排序。而且由于要計算排序,消耗較大。

4.2.2 相似度效果比較

參考《推薦系統:技術、評估及高效算法》P35。

推薦精度方面:PC > SRC > MSD

可能由于MSD沒有考慮負關聯,它的準確度最低;而PC比SRC略高。

盡管一般認為PC是最優的相似度計算方法,但最近的一些研究表明,這些算法效果很大程度依賴于數據。因此最好的方式是對各種方法都做一個驗證。

4.2.3 關于權重的重要性

假如2個用戶只有少量幾件共同評價的商品,需要降低相似度重要性的權重,例如當2人共同評分的的物品數量小于給定的參數γ\gammaγ時,它們的相似度會受到懲罰:
ωuv′=min{∣Tuv∣,γ}γ?ωuv\omega'_{uv} = \frac{min\{|T_{uv}|,\gamma\}}{\gamma} * \omega_{uv} ωuv?=γmin{Tuv?,γ}??ωuv?
基于物品的推薦也類似:
ωij′=min{∣U=ij∣,γ}γ?ωij\omega'_{ij} = \frac{min\{|U_{=ij}|,\gamma\}}{\gamma} * \omega_{ij} ωij?=γmin{U=ij?,γ}??ωij?
研究發現γ>=25\gamma>=25γ>=25時,可以顯著提高評分預測的準確性,其中γ=50\gamma=50γ=50時取的最好效果。不過同樣,對于不同的數據,交叉驗證時最好的調參方法。

有一種修正的方法見:參考《推薦系統:技術、評估及高效算法》P36。

4.2.4 評分的差異性

2個用戶對物品給出一致的喜歡或者不喜歡的評分,可能會不如他們給出差異較大的評分時提供更多的信息。

比如一個物品是大部分人都喜歡或者不喜歡,那2個用戶有相同的評分是很正常的。推薦系統解決這類的辦法是反用戶頻率IUF,類似于信息檢索的IDF:每個物品都會有一個全中,對應評論了物品的用戶比例的logloglog值:

λi=log?∣U∣∣Ui∣\lambda_i = \log \frac{|U|}{|U_i|} λi?=logUi?U?
因此,評分修正為:
PV(u,v)=∑i∈Tuvλi(rui?ru ̄)(rvi?rv ̄)∑i∈Tuvλi(rui?ru ̄)2∑i∈Tuvλi(rvi?rv ̄)2PV(u,v) = \frac{\sum_{i \in T_{uv}} \lambda_i(r_{ui} - \overline{r_u})(r_{vi}- \overline{r_v})}{\sqrt {\sum_{i \in T_{uv}}\lambda_i(r_{ui}- \overline{r_u})^2 \sum_{i \in T_{uv}}\lambda_i(r_{vi}-\overline{r_v})^2 } } PV(u,v)=iTuv??λi?(rui??ru??)2iTuv??λi?(rvi??rv??)2?iTuv??λi?(rui??ru??)(rvi??rv??)?
基于物品的推薦類似。

4.3 鄰域的選擇

計算了用戶或者物品的相似度后,如何去合適的近鄰用于推薦呢?一般而言通常分為2個步驟:

  • 全局過濾保持最有可能得近鄰。
  • 在預測的時候選擇最合適的近鄰做預測。

4.3.1 過濾預選近鄰數量

在大型系統中,用戶、商品的數量數以億計,我們無法將他們的相似度矩陣全部保存在內存中,我們希望篩選出合適的數量保存在內存中,以下是常見的方法:

(1)top-N過濾:對一個用戶或者一個商品,我們只保存最相似的N個近鄰的相似度。但N的選擇要兼顧效率和準確度。N過大則浪費內存,過小則會犧牲推薦的準確性。

(2)閾值過濾:保留相似度大于某個閾值的近鄰,這種方法更靈活,但合理的閾值選擇很困難。

(3)負值過濾:根據具體推薦需要,確定是否保留負相關度的近鄰。

4.3.2 用于預測的近鄰

對于一個新的評分預測可以通過kkk個近鄰方法得到,如何選擇kkk的數值呢?經驗證,預測的偏差隨著kkk的增加通常呈現一個凹的函數。

當近鄰數目限制在一個很小的數量的時候(如著k&lt;20k&lt;20k<20),預測精度通常會很低;當著kkk增加時,越來越多的近鄰參與到預測中,那些用單獨近鄰所造成的偏差就會被平均掉,精度得到提升;隨著著kkk的繼續增大著(如k&gt;50k&gt;50k>50),由于一些重要的關聯被不重要的關聯所削弱,精度會逐步下降。

一般而言,近鄰數目在20~50間比較合適,但最有的著kkk值依然建議通過交叉驗證來選擇。

最后還需注意,基于少量非常相似的用戶可能得到更加新穎的推薦結果,但代價時降低準確度。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

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

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