推荐系统笔记:基于SVD的协同过滤
1 奇異值分解
????????奇異值分解(SVD)是矩陣分解的一種形式,其中U和V的列被約束為相互正交
????????相互正交的優(yōu)點是概念之間可以完全獨立,并且可以用散點幾何解釋它們。
????????然而,這種分解的語義解釋通常比較困難,因為這些潛在的向量包含正的和負的量,并且受到它們與其他概念的正交性的限制。
????????對于完全指定的矩陣,利用特征分解方法進行奇異值分解是比較容易的。
? ? ? ? 考慮一個完全指定的矩陣R,可以使用如下方式來近似R(截斷SVD):
????????
? ? ? ? 其中k遠小于 min{m,n}(R的維度)
????????和分別是和?最大的k個特征值對應(yīng)的特征向量組成的矩陣,是?(或者說)的最大的k個特征值的平方根組成的對角矩陣
? ? ? ? ?換句話說,包含了?最大特征值對應(yīng)的那些特征向量,這是行空間的降維近似 所需的基。
? ? ? ??則表示在的基下,原始矩陣R的表示。
2 奇異值分解—>矩陣分解
????????于是我們可以把奇異值分解看成矩陣分解:
? ? ? ? (是一個對角矩陣,不會改變U各列向量的正交性質(zhì))?
????????此時我們也是用來預(yù)測觀測矩陣R,只不過此時用戶矩陣U和項目矩陣V各自的行向量兩兩正交。換言之,只要U和V各自的行向量兩兩正交,我們也可以將矩陣分解改寫成SVD分解的形式。
? ? ? ? 于是,SVD分解的目標(biāo)函數(shù)可以寫成?
?????????很容易看出,SVD分解與無約束因子分解情況的唯一區(qū)別是SVD分解存在正交約束。
????????換句話說,與無約束矩陣分解相比,SVD分解使用相同的目標(biāo)函數(shù),但是在更小的解空間中被優(yōu)化。
????????雖然看起來正交約束的存在會增加誤差近似的J。事實證明, 如果R矩陣是完全指定的,且不使用正則化的話,SVD分解和無限制的矩陣分解得到的最優(yōu)目標(biāo)J值是相同的。因此,對于完全指定的矩陣,奇異值分解的最優(yōu)解是無約束矩陣分解的備選最優(yōu)解之一。
????????在R沒有完全指定的情況下,這并不一定是真的,目標(biāo)函數(shù)J 僅在有觀測的項上計算。在這種情況下,無約束矩陣分解通常會對觀察到的條目提供較低的誤差。然而,由于不同模型的可泛化程度不同,對未觀測條目的相對性能的優(yōu)劣可能是不可預(yù)測的。
?3 簡單的使用SVD進行 協(xié)同過濾的方法
????????在本小節(jié)中,我們討論如何解決矩陣 R 不完全指定時的情況。這是一種最簡單的方法
????????第一步是通過減去用戶 i 的平均評分 μi 來平均居中 R 的每一行。 這些逐行平均值需要存儲下來,因為最終將需要它們再加回到對應(yīng)行的元素中,來重建缺失條目的原始評分。
????????令劇中后的矩陣由 Rc 表示。 然后,將 Rc 的缺失條目設(shè)置為 0。(將缺失條目設(shè)置為相應(yīng)用戶目前的平均評分)
????????然后將 SVD 應(yīng)用于 Rc 以獲得 分解。 由此產(chǎn)生的用戶矩陣和項目矩陣由給出。
????????設(shè) U 的第 i 行是?k 維向量,V 的第 j 行是k 維向量。 然后,用戶 i 對項目 j 的評分 rij 估計為和 的點積,加上均值μi:
4? 改進:迭代SVD
????????這種方法的主要問題是用逐行均值替換缺失的條目會導(dǎo)致相當(dāng)大的偏差。
推薦系統(tǒng)筆記: 基于鄰居的協(xié)同過濾問題 中的降維_UQI-LIUWJ的博客-CSDN博客
? ? ? ?
????????不同于那一章節(jié),此時我們可以用另一種迭代的方法來解決這個問題,該方法通過改進對缺失條目的估計來迭代地減少偏差。 該方法使用以下步驟:
(1) 初始化
????????將 R 的第 i 行中缺失的條目初始化為該行的均值 μi 以創(chuàng)建 Rf 。
? (2) 迭代步驟
? ? ? ? (2.1)迭代步驟1:對Rf進行svd分解,用前k大的特征值近似Rf,
? ? ? ? (2.2)用2.1得到的 來更新 R中的缺失值
重復(fù)(2),直到收斂為止
????????當(dāng)缺失條目的數(shù)量很大時,該方法可能會陷入局部最優(yōu)。(收斂時的局部最優(yōu)可能對初始化的選擇很敏感。)
? ? ? ? 我們可以使用推薦系統(tǒng)筆記:無任何限制的矩陣分解_UQI-LIUWJ的博客-CSDN博客中所述的方法,先學(xué)習(xí)到一個初始的B矩陣。然后有觀測值的條目減去相應(yīng)的?,然后用0初始化未觀測值。 這種方法會得到一個更很好的結(jié)果,因為它初始化的方式相對來說更合理一些。
?5 投影梯度下降法
????????迭代方法非常昂貴,因為它適用于完全指定的矩陣。 對于較小的矩陣很容易實現(xiàn),但在大規(guī)模設(shè)置中不能很好地擴展。(同時SVD分解的時間復(fù)雜度是,對于user和item數(shù)量都很大的數(shù)據(jù)來說是很致命的)
????????一種更有效的方法是在前面部分的優(yōu)化模型中添加正交性約束。 ?令 S 為評級矩陣中指定條目的集合。 優(yōu)化問題(帶正則化)表述如下:
????????該模型與無約束矩陣分解的主要區(qū)別在于增加了正交性約束,這使得問題更加困難。
????????可以使用投影梯度下降方法,其中 U 或 V? 某一列中的所有元素一次更新。 在投影梯度下降中,U(或 V )的第 p 列的更新后的方向,投影在與 前(p-1)列正交的方向上
?????????和?推薦系統(tǒng)筆記:無任何限制的矩陣分解_UQI-LIUWJ的博客-CSDN博客?中第五小節(jié)一樣,也是逐列逐列第更新。但不同的是,如果更新后的這一列不和前面的(p-1)列垂直,那么我們可以找到和前面(p-1)列垂直,同時離更新至最近的點,作為投影梯度下降法的更新值。
????????
比如假設(shè)我們已經(jīng)更新得到了u1和u2,它們是正交的。我們現(xiàn)在通過增量潛在因子訓(xùn)練,得到了u3,但是u3和u1,u2張成的平面不垂直。于是我們找u3的投影,作為u3的更新值
?6 外推推薦 out-of-sample recommendation
????????許多矩陣完成方法(如矩陣分解)只能對訓(xùn)練時已包含在評分矩陣中的用戶和項目進行預(yù)測。
????????如果在分解時未將新用戶和項目包含在原始評分矩陣 R 中,則從因子 U 和 V 對新用戶和項目進行預(yù)測通常并不容易。
????????正交基向量的一個優(yōu)點是可以更輕松地利用它們?yōu)樾掠脩艉晚椖繄?zhí)行樣本外推薦。 這個問題也被稱為歸納矩陣完成。
????????推薦系統(tǒng)筆記:基于潛在因子模型的協(xié)同過濾(latent factor model)中提供的幾何解釋有助于理解為什么正交基向量有助于預(yù)測缺失的評分。
一旦獲得了潛在向量,就可以將指定評分中的信息投影到相應(yīng)的潛在向量上; 當(dāng)向量相互正交時,這要容易得多。 考慮 SVD 分別獲得潛在因子 U 和 V 的情況。 V 的列(基))定義了一個通過原點的 k 維超平面 H1。
????????在圖 3.6 中,潛在因子的數(shù)量為 1,因此顯示了單個潛在向量(即一維向量)。 基有兩個因子組成,它就會是二維平面。 ?
????????現(xiàn)在想象一個新用戶的評分已添加到系統(tǒng)中。 請注意,此新用戶未在 U 或 V 中的潛在因子中表示。
????????考慮新用戶指定了總共 h 個評分的場景。 該用戶未評分的這些電影的評分可能性空間是一個 (n - h) 維的超平面。
???????? 圖 3.6 展示了一個例子,其中斯巴達克斯的一個電影的打分是固定的,超平面定義在其他兩個維度上。 讓這個超平面用 H2 表示。
???????? 然后目標(biāo)是確定 H2 上的點,該點盡可能接近 H1。
總結(jié)
以上是生活随笔為你收集整理的推荐系统笔记:基于SVD的协同过滤的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐系统笔记:无任何限制的矩阵分解
- 下一篇: 数学知识笔记:拉格朗日乘子