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