推荐系统笔记: 基于邻居的协同过滤问题 中的降维
1 介紹
????????降維方法可用于在質量和效率方面改進基于鄰域的協同過濾方法。
????????特別是,在稀疏評分矩陣中很難穩健地計算成對相似性,但降維提供了在潛在因素方面的密集低維表示。因此,此類模型也稱為潛在因子模型 latent factor model。
????????即使兩個用戶的共同評分項目很少,也可以計算他們的低維潛在向量之間的距離。
????????此外,使用低維潛在向量確定peer組更有效。
????????為便于討論,我們將僅描述基于用戶的協同過濾方法。(基于item的是類似的)
????????在基于用戶的協同過濾方法中,基本思想是通過使用主成分分析PCA/SVD 或者其他方式 將 m×n 評分矩陣 R 轉換到一個低維空間的矩陣。
????????生成的矩陣 R' 的大小為 m × d,其中 d遠小于n。
????????因此,對應于用戶評級的每個(稀疏)n 維向量都被轉換為低維的 d 維空間。
????????此外,與原始評分向量不同,d 維中的每一個都是有數值的。
????????在確定每個用戶的這個 d 維表示后,使用這個d維簡化表示計算從目標用戶到每個用戶的相似度。
????????由于新的低維向量中每個條目都是有數值的,因此簡化表示中的相似度計算更加穩健。
????????此外,由于潛在表示的低維數,相似度計算更有效。低維向量上的簡單余弦或點積足以計算此低維空間中的相似性。
2 用SVD 進行 轉換
????????第一步是填充稀疏打分矩陣R中缺失的條目。 缺失的條目估計等于矩陣中相應行的平均值(即相應用戶的平均評分)。 另一種方法是將缺失的條目估計為矩陣中相應列的平均值(即相應項目的平均評分)。
???????? 將所得矩陣表示為 。 然后,我們計算項目之間的 n × n 相似度矩陣(item-item),由給出。 這個矩陣是半正定的。 為了確定 ?矩陣經過SVD分解之后 的主要基向量,我們對相似矩陣 S 執行如下對角化:
????????
????????這里,P 是一個 n × n 矩陣,其列包含 S 的正交特征向量。
????????Δ 是一個對角矩陣,包含 S 沿其對角線的非負特征值。(非負的原因是S是一個半正定矩陣)
????????令 為 n × d 矩陣,其中僅包含 P 中對應于最大 d 個特征向量的列。
????????然后, 的低維表示由矩陣乘積給出。
????????因此,m 個用戶中的每一個現在都表示在一個 d 維空間中。 然后使用該表示來確定每個用戶的peer組。 一旦確定了peer組,就可以使用peer組的打分情況對該用戶進行評級預測。
???????? 通過將整個降維方法應用于的轉置,這種方法也可以用于基于項目item的協同過濾。
2.1 PCA近似
????????許多其他方法使用主成分分析 (PCA) 代替 SVD,但總體結果非常相似。 在PCA方法中,使用的協方差矩陣代替相似度矩陣 ?
3? 填充稀疏打分矩陣帶來的問題
? ? ? ? 這一小節我們使用PCA而不是SVD,即用協方差矩陣。
? ? ? ? 在第二小節中,我們知道,矩陣是通過用沿行或列的平均值填充稀疏打分矩陣 R 而得到的。 這種方法很可能會造成相當大的偏差。?
? ? ? ? 假設 12 位用戶對《教父》、《角斗士》和《尼祿》三部電影進行打分。? 我們假設缺失值被沿列的平均值替換。
?
????????很明顯,電影《角斗士》和《尼祿》的評分之間的相關性非常高,因為在有數值的四個打分中,評分非常相似。 《教父》和《角斗士》之間的相關性似乎不那么顯著。
????????但是,許多用戶并未指定他們對《尼祿》 的評級。 由于《尼祿》 的平均評分為 (1 + 7 + 1 + 7)/4 = 4,因此這些未指定的評分將替換為平均值 4。
????????這些新條目的添加顯著降低了《角斗士》和《尼祿》之間的估計協方差。 但是,新條目的添加對教父和角斗士之間的協方差沒有影響。 填寫缺失的評分后,三部電影之間的成對協方差的估計如下:
????????
import numpy as np a=np.array([[1,1,1],[7,7,7],[3,1,1],[5,7,7],[3,1,4],[5,7,4],[3,1,4],[5,7,4],[3,1,4],[5,7,4],[3,1,4],[5,7,4]])np.cov(a.T)''' array([[2.54545455, 4.36363636, 2.18181818],[4.36363636, 9.81818182, 3.27272727],[2.18181818, 3.27272727, 3.27272727]]) '''?????????? 根據上述估計,《教父》和《角斗士》之間的協方差大于《角斗士》和《尼祿》之間的協方差。 這似乎不正確,因為表 2.3 中對角斗士和尼祿的評級在兩者都被指定的情況下是相同的。?因此,角斗士和尼祿之間的相關性應該更高。
???????? 此錯誤是由于使用該列的平均值填充未指定條目而導致的偏差造成的。 這種偏差在稀疏矩陣中可能非常顯著,因為大多數條目都是未指定的。
????????因此,需要設計方法來減少因使用平均評分代替未指定條目而引起的偏差。 在下文中,我們探討了此問題的兩種可能解決方案。
3.1 最大似然估計近似
????????假設數據采用生成模型,并且有打分的條目被視為生成模型的結果。
????????協方差矩陣可以作為估計該生成模型參數的過程的一部分進行估計。
????????在下文中,我們提供了這種方法的簡化。在這種簡化的方法中,計算協方差矩陣的最大似然估計。
????????每對項目之間協方差的最大似然估計被估計為僅有打分的條目之間的協方差。換句話說,只有對有評分的數據才用于估計協方差。在一對item之間沒有共同用戶的情況下,協方差估計為0。通過使用這種方法,我們重新估計協方差矩陣
????????
?????????在這種情況下,很明顯《角斗士》和《尼祿》之間的協方差幾乎是教父和角斗士之間的三倍。此外,電影 Nero 的方差是最初估計的三倍多,并且在所有電影中評分方差最大。
? ? ? ? 在使用均值填充的時候,《教父》和《角斗士》之間的成對協方差最大。但這一對現在是成對協方差中最小的。
????????這個例子表明偏差修正在某些情況下可能非常重要。矩陣中無數值條目的比例越大,均值填充的偏差就越大。
????????因此,僅利用有數值條目的改進技術用于計算協方差矩陣。雖然這種技術并不總是有效,但它優于均值填充技術。
????????前面所述的 n × d 基矩陣 Pd 是通過選擇·結果協方差矩陣的前 d 個特征向量來計算的。
3.1.1 直接映射到Pd上
????????為了進一步減少表示上的偏差,可以將不完全矩陣R直接投影到縮減矩陣Pd上,而不是將填充矩陣Rf投影到Pd上。
???????? 這個想法是計算每個觀察到的評分對 Pd 的每個潛在向量上的投影的貢獻,然后對這些評分的貢獻進行加權平均。
????????該平均貢獻計算如下:?設是 Pd 的第 i 列(第i個特征向量),其中第 j 個條目是 ; 是用戶 u 對項目 j 的評分。然后,用戶 u 對潛在向量 的投影的貢獻由 給出。
???????? 那么,如果集合 表示用戶 u 的指定項目評分的索引,則用戶 u 在第 i 個潛在向量上的平均貢獻 如下:
????????
? ? ? ? ?于是我們得到一個 m*d維的矩陣A,我們可以用這個矩陣來計算目標用戶的鄰居了。
????????雖然上述方法可以在一定程度上糾正協方差估計中的偏差,但在評級稀疏程度較高的情況下并不完全有效。 這是因為協方差矩陣估計需要足夠數量的每對項目的觀察評級才能進行穩健估計。 當矩陣稀疏時,協方差估計在統計上是不可靠的。
參考內容:Sci-Hub | Recommender Systems | 10.1007/978-3-319-29659-3
總結
以上是生活随笔為你收集整理的推荐系统笔记: 基于邻居的协同过滤问题 中的降维的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tkinter笔记:画布canvas
- 下一篇: 推荐系统笔记:决策树回归树