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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

协同过滤——基于模型的算法

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

文章目錄

  • 1 概述
    • 1.1 基于分解的方法
      • 1.1.1 分解相似度矩陣:特征值分解
      • 1.1.2 分解評分矩陣:奇異值分解(SVD)
      • 1.1.3 SVD、SVD++、時間敏感模型
    • 1.2 基于鄰域的學習方法
  • 2 SVD與LFM
    • 2.1 基本原理
    • 2.2 計算邏輯及優化目標
    • 2.3 優化方法
    • 2.4 關于SVD和LFM
  • 3、SVD++
  • 4 時間敏感的因子模型

1 概述

基于模型的方法也叫做基于學習的方法,通過定義一個參數模型來描述用戶與物品,用戶與用戶(或者物品與物品)之間的關系,然后通過優化過程得到模型參數。

基于模型的方法有一些優勢:

  • 可以捕獲數據中的高層模式和趨勢,對異常值有更高的魯棒性,這將有助于得到更精確更穩定的推薦結果。
  • 需要更少的內存空間。
  • 參數都是離線學習的,在線的推薦過程會更快。

** 基于模型的方法可以分成2類:分解方法和自適應近鄰學習方法。**

1.1 基于分解的方法

1.1.1 分解相似度矩陣:特征值分解

使用秩為n的矩陣W表示用戶之間或者物品之間的相似度,然后通過用更低的秩k的Q來近似W:
W^=QQT\hat{W} = QQ^T W^=QQT

求解因子矩陣Q等同于計算矩陣W的特征值分解:
W=VDVTW = VDV^T W=VDVT

1.1.2 分解評分矩陣:奇異值分解(SVD)

通過分解用戶–物品的評分矩陣,同樣可以解決冷啟動和覆蓋受限的問題。在這種方法中,一個∣U∣×∣V∣|U| \times |V|U×V的用戶–物品評分矩陣R可以近似為R^=PQT\hat{R} = PQ^TR^=PQT,其中P是一個∣U∣×k|U| \times kU×k的用戶因子矩陣,Q是一個∣V∣×k|V| \times kV×k的物品因子矩陣。

可以通過求解R的奇異值分解(SVD)來獲得:

R=U∑VTR = U\sum V^T R=UVT

基于模型的協同過濾基本原理是,將用戶對商品的評分矩陣A分解為2個(ALS)或者3個矩陣(SVD),然后就是這些矩陣相乘的結果,根據矩陣相乘結果與原有評分矩陣的誤差作為損失函數計算優化。
SVD的基本原理見:【參考周志華《機器學習》P402】
!

SVD模型可以轉換為一個基于相似度的方法,該方法認為用戶uuu的畫像由他評分過的物品隱式的決定,因此用戶uuu的因子向量可以通過評分后的物品jjj的因子向量權重組合得到。這就是SVD++。除此以外還有FISM,NSVD等。

在SVD++的基礎上再引入時間因子,可以進一步提高預測的準確度。

1.1.3 SVD、SVD++、時間敏感模型

這三個模型越來越復雜,引入的因子也在增多,所以準確性提升,但計算效率下降。

1.2 基于鄰域的學習方法

最新研究表明,從數據中自動學習鄰域相比于預定義相似度計算存在一些優勢。

(1)稀疏線性鄰域模型
一個典型的鄰域–學習推薦模型是SLIM算法,一個新的評分可以被預測為:
r^ui=ruwiT\hat {r}_{ui} = r_uw_i^T r^ui?=ru?wiT?
其中向量rur_uru?是評分矩陣R的第u行,向量wiw_iwi?中的非零元素對應物品iii的近鄰集合。

SLIM的詳細內容請P43或者見https://blog.csdn.net/weixin_39064571/article/details/78835939https://blog.csdn.net/weixin_39064571/article/details/78835939

(2)融入邊信息的稀疏鄰域模型
在當今互聯網時代,用戶的屬性信息(如年齡性別LBS)或物品的描述信息更容易獲取,這些信息可以被融入SLIM模型。

2 SVD與LFM

矩陣分解模型把用戶和物品2方面的信息映射到一個維度為fff的聯合隱含義空間中,用戶-物品之間的交互(評分)可由該空間的內積來建模。

2.1 基本原理

  • 每一個用戶uuu都與一個fff維向量pup_upu?相關聯,每一個物品iii都與一個fff維向量qiq_iqi?相關聯。
  • 給定一個物品iiiqiq_iqi?向量的每個維度值的大小代表了該物品具備這些因子的程度(例如電影的喜劇程度是5,科幻程度是1)。
  • 給定一個用戶uuupup_upu?向量的每個維度值的大小代表了用戶對這些因子的喜愛程度(例如對喜劇的喜愛程度是0.1,對科幻的喜愛程度是0.5)。
  • 點積qipuTq_ip_u^Tqi?puT?表示用戶對物品的喜愛程度。

關于使用到的矩陣

  • 用戶對物品的評價矩陣是:R=∣U∣×∣T∣R = |U| \times |T|R=U×T
  • 用戶因子矩陣是:P=∣U∣×fP = |U| \times fP=U×f
  • 物品因子矩陣是:Q=∣T∣×fQ = |T| \times fQ=T×f
  • 預測的用戶對物品的評分矩陣是:R^=PQT\hat{R} = PQ^TR^=PQT

2.2 計算邏輯及優化目標

具體而言,對于用戶uuu對物品iii的評分,我們可以這樣計算:
r^ui=μ+bi+bu+qiTpu\hat{r}_{ui} = \mu + b_i + b_u + q_i^Tp_u r^ui?=μ+bi?+bu?+qiT?pu?
其中前三項表示用戶或者物品的基準預測。μ\muμ表示整個評價區間的平均評分,bib_ibi?表示物品iii和所有物品平均分的偏離,bub_ubu?表示用戶uuu與所有用戶平均分的偏離。
為了學習模型中的參數bib_ibi?bub_ubu?pUp_UpU?qiq_iqi?,我們的優化目標為:
min?∑(rui?μ?bi?bu?qiTpu)2+λ(bi2+bu2+∥qi∥2+∥pu∥2)\min \sum(r_{ui} - \mu - b_i -b_u -q_i^Tp_u)^2 + \lambda(b_i^2 + b_u^2+\|q_i\|^2 + \|p_u\|^2) min(rui??μ?bi??bu??qiT?pu?)2+λ(bi2?+bu2?+qi?2+pu?2)

2.3 優化方法

上述優化目標,一般可以使用隨機梯度下降或者交替最小二乘法。

一種簡單的優化算法是Funk推廣的,該算法對訓練數據中的所有評分做循環。對于給定的評分的預測誤差記為:eui=rui?r^uie_{ui} = r_{ui} - \hat{r}_{ui}eui?=rui??r^ui?,因此,對于每一個樣本,我們可以通過朝著與梯度相反的方向來修正參數:
bu←bu+γ(eui?λbu)bi←bi+γ(eui?λbi)qi←qi+γ(euipu?λqi)pu←pu+γ(euiqi?λpu)b_u \leftarrow b_u + \gamma (e_{ui} - \lambda b_u)\\ b_i \leftarrow b_i + \gamma (e_{ui} - \lambda b_i)\\ q_i \leftarrow q_i + \gamma (e_{ui}p_u - \lambda q_i)\\ p_u \leftarrow p_u + \gamma (e_{ui}q_i - \lambda p_u)\\ bu?bu?+γ(eui??λbu?)bi?bi?+γ(eui??λbi?)qi?qi?+γ(eui?pu??λqi?)pu?pu?+γ(eui?qi??λpu?)

2.4 關于SVD和LFM

SVD的基本原理見:【參考周志華《機器學習》P402】
!

奇異值分解有著廣泛的用途,例如對于低秩近似問題,給定一個秩為rrr的矩陣AAA,要求的其最優的kkk秩近似矩陣A^\hat{A}A^,其中k&lt;&lt;rk&lt;&lt;rk<<r
奇異值分解提供了上述問題的解釋解:對矩陣AAA進行奇異值分解后,將矩陣∑\sum中的r?kr-kr?k個最小的奇異值置零獲得的矩陣∑k\sum_kk?,即僅保留最大的kkk個奇異值,則:
Ak=Uk∑kvkTA_k = U_k \sum_kv_k^T Ak?=Uk?k?vkT?
就是最優解。

因此,可以通過SVD方式近似得到用戶-物品評分矩陣。
但在實際工程中,SVD非常難解,所以會用梯度下降或者ALS的方法將矩陣分解成2個矩陣的相乘,這就是LFM。

3、SVD++

考慮隱式反饋信息可以增加預測準確度,這對于那些提供了大量隱式反饋而僅僅提供了少量顯式反饋的用戶尤為重要。

我們考慮2中情況:

  • 用戶沒有獨立的隱式反饋,此時可以通過考慮用戶評分的物品(無需考慮評分值)來得到用戶感興趣的信息。
  • 用戶有獨立的隱式反饋。比如租借了某些物品,搜索了某些物品,此時可以有多種的隱式反饋。
    我們以下分別介紹。

用戶對某些物品有一些隱式反饋,我們可以在SVD的基礎上,增加第二個物品因子,即為每一個物品iii關聯一個因子向量yiy_iyi?,計算評分時:
r^ui=μ+bi+bu+qiT(pu+∣R(u)∣?1/2∑j∈R(u)yi)\hat{r}_{ui} = \mu + b_i + b_u + q_i^T(p_u + |R(u)|^{-1/2} \sum_{j \in R(u)}y_i) r^ui?=μ+bi?+bu?+qiT?(pu?+R(u)?1/2jR(u)?yi?)
其中集合R(u)R(u)R(u)包含用戶uuu評分的所有物品。也就是說用戶uuu的喜愛因子程度被建模為:pu+∣R(u)∣?1/2∑j∈R(u)yip_u + |R(u)|^{-1/2} \sum_{j \in R(u)}y_ipu?+R(u)?1/2jR(u)?yi?,其中∣R(u)∣?1/2|R(u)|^{-1/2}R(u)?1/2用于規范化。

同理,我們使用與SVD類似的方法做優化求解各個參數:
bu←bu+γ(eui?λbu)bi←bi+γ(eui?λbi)qi←qi+γ(eui(pu+∣R(u)∣?1/2)?λqi)pu←pu+γ(euiqi?λpu)?j∈R(u):yj←yj+γ(eui?∣R(u)∣?1/2?qi?λyi)b_u \leftarrow b_u + \gamma (e_{ui} - \lambda b_u) \\ b_i \leftarrow b_i + \gamma (e_{ui} - \lambda b_i) \\ q_i \leftarrow q_i + \gamma (e_{ui}(p_u + |R(u)|^{-1/2}) - \lambda q_i)\\ p_u \leftarrow p_u + \gamma (e_{ui}q_i - \lambda p_u)\\ \forall _j \in R(u): y_j \leftarrow y_j + \gamma (e_{ui}*|R(u)|^{-1/2} *q_i - \lambda y_i)\\ bu?bu?+γ(eui??λbu?)bi?bi?+γ(eui??λbi?)qi?qi?+γ(eui?(pu?+R(u)?1/2)?λqi?)pu?pu?+γ(eui?qi??λpu?)?j?R(u):yj?yj?+γ(eui??R(u)?1/2?qi??λyi?)

對于有多種隱式偏好的情況,模型可以調整為:

r^ui=μ+bi+bu+qiT(pu+∣N1(u)∣?1/2∑j∈N1(u)yi+∣N2(u)∣?1/2∑j∈N2(u)yi)\hat{r}_{ui} = \mu + b_i + b_u + q_i^T(p_u + |N^1(u)|^{-1/2} \sum_{j \in N^1(u)}y_i + |N^2(u)|^{-1/2} \sum_{j \in N^2(u)}y_i) r^ui?=μ+bi?+bu?+qiT?(pu?+N1(u)?1/2jN1(u)?yi?+N2(u)?1/2jN2(u)?yi?)

其中∣N1(u)∣?1/2∑j∈N1(u)yi|N^1(u)|^{-1/2} \sum_{j \in N^1(u)}y_iN1(u)?1/2jN1(u)?yi?∣N2(u)∣?1/2∑j∈N2(u)yi|N^2(u)|^{-1/2} \sum_{j \in N^2(u)}y_iN2(u)?1/2jN2(u)?yi?表示用戶的2中不同隱式行為。

4 時間敏感的因子模型

矩陣分解方法可以很好的對時間效應建模,這樣可以提高預測結果的準確度。
回顧一下用戶uuu對物品iii的評分預測:

r^ui=μ+bi+bu+qiTpu\hat{r}_{ui} = \mu + b_i + b_u + q_i^Tp_u r^ui?=μ+bi?+bu?+qiT?pu?
其中前三項表示用戶或者物品的基準預測。μ\muμ表示整個評價區間的平均評分,bib_ibi?表示物品iii和所有物品平均分的偏離,bub_ubu?表示用戶uuu與所有用戶平均分的偏離,$ q_i^Tp_u$表示用戶評分因子模型。

上述四項中,除了μ\muμ相對穩定外(即使變化也可以離線重算一次),另外三項都與時間相關。一般而言,我們認為這3個隨時間變化的數值由以下3部分組成:

  • 一個基準不變值。
  • 一個隨時間線性或者非線性變化的近似。
  • 一個局部的特定天的變化。

bub_ubu?為例:
bu(t)=bu+αu?devu(t)b_u(t)=b_u + \alpha_u * dev_u(t) bu?(t)=bu?+αu??devu?(t)
其中
devu(t)=sign(t?tu)?∣t?tu∣βdev_u(t) = sign(t-t_u) * |t - t_u|^{\beta} devu?(t)=sign(t?tu?)?t?tu?β
這部分也可以表示為非線性的形式。
bib_ibi?與$ q_i^Tp_u$也類似。于是預測模型調整為:
r^ui=μ+bi(tui)+bu(tui)+qiT(pu(tui)+∣R(u)∣?1/2∑j∈R(u)yi\hat{r}_{ui} = \mu + b_i(t_{ui}) + b_u(t_{ui}) + q_i^T(p_u(t_{ui}) + |R(u)|^{-1/2} \sum_{j \in R(u)}y_i r^ui?=μ+bi?(tui?)+bu?(tui?)+qiT?(pu?(tui?)+R(u)?1/2jR(u)?yi?

總結

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

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