推荐系统笔记:基于非负矩阵分解的协同过滤
1 非負矩陣分解
????????非負矩陣分解 (NMF) 可用于非負的評級矩陣。 這種方法的主要優勢不一定是準確性,而是它在理解用戶-項目交互方面提供的高度可解釋性。
????????與其他形式的矩陣分解的主要區別在于因子 U 和 V 必須是非負的。 因此,非負矩陣分解中的優化公式表述如下:
????????
1.1 可解釋性優勢?
????????盡管非負矩陣分解可用于任何非負評分矩陣(例如,評分從 1 到 5),但其最大的可解釋性優勢出現在用戶具有指定喜歡某一個條目,但不具有指定不喜歡某一個條目的機制。 這種矩陣包括一元評級矩陣,或其中非負條目對應于活動頻率的矩陣。 這些數據集也稱為隱式反饋數據集 。 此類矩陣的一些示例如下: ?
- 在客戶交易數據中,購買商品對應于表達對商品的喜好。 然而,不購買商品并不一定意味著不喜歡,因為用戶可能已經在別處購買了該商品,或者他們可能不知道該商品。 當金額與交易相關聯時,矩陣 R 可能包含任意非負數。 但是,所有這些數字都指定了對某個項目的喜歡程度,但并不表示不喜歡。 換句話說,隱式反饋中的數值表示置信度,而顯式反饋中的數值表示偏好。(也就是說,此時的數值只是表示用戶有“多可能”喜歡這件商品,并不是用戶“有多喜歡”這件商品
- 與購買商品的情況類似,商品的瀏覽可以表示用戶對商品的喜好。 在某些情況下,購買或瀏覽行為的頻率可以量化為非負值。
- Facebook 上的“喜歡”按鈕可以被視為一種為項目提供一元評級的機制。
2 一類協同過濾 one-class collaborative filtering? ? ? ?
?????????隱式反饋設置可以被認為是類似于分類和回歸建模中的正 未標記 (PU positive-unlabelled) 學習問題。在分類和回歸建模中,當已知正類是一個非常小的少數類時,通過將未標記的條目視為屬于負類,通??梢垣@得合理的結果。
????????類似地,此類矩陣和問題設置的一個有用方面是將未指定條目設置為 0 ,而不是將它們視為缺失值。這通常是合理的。
????????例如,考慮一個客戶交易數據集,其中的值表示客戶購買某一種商品的數量。在這種情況下,當客戶沒有購買該項目時,將值設置為 0 是合理的。
????????因此,在這種情況下,只需對完全指定的矩陣進行非負矩陣分解,這是機器學習中的一個標準問題。
????????這個問題也被稱為一類協同過濾 one-class collaborative filtering。盡管最近的一些工作認為在這種情況下不應將缺失值設置為 0以減少偏差,但大量文獻工作表明,通過將缺少條目設置為 0,可以得到很穩健的結果。
????????當條目為 0 的先驗概率非常大時尤其如此。例如,在超市場景中,客戶通常永遠不會購買商店中的絕大多數商品。在這種情況下,將缺失值設置為 0(在初始矩陣中用于分解目的,而不是在最終預測中)將導致少量偏差,但明確地將初始矩陣中的條目視為未指定的條目將導致更大的解決方案復雜性。不必要的復雜性總是導致過度擬合。這些影響在較小的數據集中尤為顯??著。
????????非負矩陣分解的優化公式是一種約束優化公式,可以使用標準方法(例如拉格朗日松弛法)求解。 ?數學知識筆記:拉格朗日乘子_UQI-LIUWJ的博客-CSDN博客
? ? ? ? 以下是推導部分(可能有些地方有問題,還望指教)
首先我們的目標函數為
?
那么我們構造如下的拉普拉斯函數
此時所有的μ和μ‘都是大于等于0的,且每一項μu,μ’v都為0
?
我們讓L對求偏導,使得=0
我們先看L中和有關的項
?
對其求偏導,有
用矩陣的形式表述即為:
即
??
我們又知道,所以等號兩邊同時乘以
有?
然后便可得到這個式子(加ε是為了不要除0)
【這里我在想,分母如果是RV+ε是不是也可以?就是分母分子調換一下?請評論區批評指正!】
?
V也同理
當然,我們也可以給 非負矩陣分解的目標函數增加相應的正則項。?
此時的u,v更新式子更改為:
這里取max是為了保證u,v非負
?
3 非負矩陣分解的可解釋性
類似于推薦系統筆記:基于潛在因子模型的協同過濾(latent factor model)_UQI-LIUWJ的博客-CSDN博客
????????非負矩陣分解的主要優點是在解決方案中實現了高度的可解釋性。
? ? ? 為了更好地理解這一點,請考慮一種情況,其中偏好矩陣包含客戶購買的某種商品的數量。圖 3.12 展示了一個具有 6 個商品和 6 個用戶的?6×6 矩陣的示例。
? ? ??
?
????????很明顯,有兩類產品分別對應于乳制品和飲料。
????????很明顯,盡管所有客戶似乎都喜歡果汁,但客戶購買行為與商品類別高度相關。
? ? ? ? 我們記乳制品/飲料這些類別的項目為方面(aspect)。相應的因子矩陣提供了關于客戶和商品對這些方面的親和力的清晰可解釋性。
????????例如,客戶 1 到 4 喜歡乳制品,而客戶 4 到 6 喜歡飲料。這清楚地反映在 6 × 2 用戶因子矩陣 U 中。數用戶在兩列中的每一列中的條目數量都量化了她對相關方面物品????????的興趣水平。
????????同樣,因子矩陣 V 顯示了商品與各個方面的關系。因此,在這種情況下,條件可以從 k = 2 個方面進行語義解釋:
?????????這種預測 rij 值的方法顯示了矩陣的“部分總和”分解。 (sum of parts)?這也是聚類問題經常使用非負矩陣分解的原因之一。
????????在實際應用中,通常可以查看這些方面中的每一個,并從語義上解釋用戶和項目之間的關聯。 當語義標簽可以手動附加到各種方面時,分解過程根據方面的各種語義,提供了對評級的簡潔解釋。
????????該“部分總和”分解可以用數學方式表示如下。 通過分別用 U 和 V 的 k 列 和表示矩陣乘積,可以將秩 k 矩陣分解分解為 k 個分量:
?
類似于推薦系統筆記:無任何限制的矩陣分解_UQI-LIUWJ的博客-CSDN博客
? ? ? ? 每一個 m×n維矩陣都是一個秩1矩陣,對應相應的方面。
????????由于非負矩陣分解的可解釋性,很容易將這些方面映射到不同集群cluster。
???????? 例如,上述例子的兩個潛在成分分別對應于乳制品和飲料,如圖 3.13 所示。
? ? 對于給定的 user-item 組合,評分預測是由不同方面的相應的user-item條目的和給出的
? ? ? 值得注意的是,方程 3.28 根據 U 和 V 的列進行分解。
????????而之前說的矩陣分解的方程 是根據 U 和 V 的行進行分解的不同方式。 相當于兩種理解方式。
4?關于隱式反饋分解的觀察
????????第二小節我們說過隱式反饋分解。非負矩陣分解特別適用于評級表示正偏好的隱式反饋矩陣。
????????與顯式反饋數據集不同,由于此類數據中缺少負反饋,因此無法忽略優化模型中缺失的條目。值得注意的是,非負矩陣分解模型通過將缺失條目設置為 0 將它們視為負反饋。不這樣做會嚴重增加未觀察到的條目的錯誤。
?
????????為了理解這一點,請考慮一個一元評級矩陣,其中喜歡由 1 指定。圖 3.14 中所示的是這個一元評級矩陣的矩陣分解結果。
????????如果僅對有數值的條目進行誤差比較時,在任意一元矩陣上這樣的分解都能提供 100% 的準確度。這是因為圖 3.14 中 U 和 的乘法導致矩陣只包含 1 且沒有 0。
????????當然,這樣的分解對于未觀察到的條目會有非常高的誤差,因為許多未觀察到的條目可能對應于負面偏好。
????????這個例子是缺乏負反饋數據導致過擬合的表現。
????????因此,對于缺失負面偏好、并且負面偏好遠遠超過正面偏好的評分矩陣,比較重要的步驟是將缺失的條目視為 0。
????????例如,在客戶交易數據集中,如果這些值表示不同用戶購買的數量,并且大多數商品默認沒有購買,則可以將缺失條目的值近似為 0。
?5 同時給喜歡&不喜歡打分的矩陣
????????到目前為止,我們對非負矩陣分解的討論僅集中在隱式反饋矩陣上,即用戶具有指定喜歡某一個條目,但不具有指定不喜歡某一個條目的機制。?
? ? ? ? 現在我們考慮同時表示喜歡和不喜歡的矩陣。盡管可以對名義上的非負評級(例如,從 1 到 5,1 表示非常不喜歡,5表示非常喜歡)使用非負矩陣分解,但在這種情況下使用非負矩陣分解沒有特殊的可解釋性優勢。?
???????? 在這種情況下,不能將未指定的條目視為 0,并且只能使用有觀測數據的那些條目。
? ? ? ? 和之前一樣,我們也記S為我們所有有觀測數值的(i,j)對的集合
????????
?相應的目標函數(帶正則化項)如下:
?
?????????該公式類似于無約束矩陣分解中的正則化公式。 唯一的區別是添加了非負約束。確保U,V在更新期間保持非消極性。 如果 U 或 V 的任何分量因更新而違反非負約束,則將其設置為 0。與所有隨機梯度下降方法一樣,執行更新直到收斂。
????????在評級可以同時指定喜歡和不喜歡的設置中,非負矩陣分解在可解釋性方面比無約束矩陣分解沒有特殊優勢。這是因為人們無法再從部分總和的角度來解釋解決方案。例如,三個不喜歡評級的相加不能解釋為導致喜歡評級。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的推荐系统笔记:基于非负矩阵分解的协同过滤的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学知识笔记:拉格朗日乘子
- 下一篇: 推荐系统笔记:基于矩阵分解(总结篇)