在推薦系統(tǒng)的相關(guān)研究中,我們常常用到兩個相關(guān)概念:矩陣分解和奇異值分解。這兩個概念是同一種算法嗎?兩者到底有什么差別?在本文中,作者梳理了兩種算法的概念、來源和內(nèi)容,并進行了比較。通過對相關(guān)內(nèi)容的梳理,作者提出,矩陣分解是推薦系統(tǒng)中最初使用的概念,奇異值分解是對該方法的進一步發(fā)展。在現(xiàn)在的討論中,一般將兩種方法統(tǒng)一成為奇異值分解。
在 Andrew Ng 教授的機器學(xué)習(xí)課程中,介紹推薦系統(tǒng)時經(jīng)常涉及矩陣分解、奇異值分解等數(shù)學(xué)知識,這些概念并不是很好理解。在 Andrew Ng 教授的課程提到了一種稱為稱為 (低因子) 矩陣分解的方法,而在 Google 搜索會得到另一個名稱:奇異值分解。網(wǎng)絡(luò)資源中對于該算法的解釋和 Andrew Ng 教授存在差異,但很多人都認(rèn)為這兩個名稱指的是同一種算法。為了更好的梳理這兩個概念,在本文中,我對兩者進行了分別介紹,并對比了它們的不同。
推薦系統(tǒng)
推薦系統(tǒng) (Recommender Systems, RS) 是一種自動化的針對用戶的內(nèi)容推薦方式,被廣泛用于電子商務(wù)公司,流媒體服務(wù) (streaming services) 和新聞網(wǎng)站等系統(tǒng)。根據(jù)用戶的喜好,推薦系統(tǒng)能夠投其所好,為用戶推薦一些合適的內(nèi)容,以便減少用戶篩選過程中一些不必要的麻煩。
推薦系統(tǒng)并不是一種全新的技術(shù),相關(guān)概念最晚在1990年就出現(xiàn)了。事實上,當(dāng)前的機器學(xué)習(xí)熱潮,一部分要歸因于人們對 RS 的廣泛關(guān)注。 在2006年,Netflix 贊助了一場為電影尋找最佳推薦系統(tǒng)的競賽,在當(dāng)時引起了一片轟動,也讓推薦系統(tǒng)再次得到了廣泛的關(guān)注。
矩陣表示
我們可以有很多種方式來向別人推薦一部電影。其中一種效果較好的策略,是將用戶對電影的評分看做一個用戶 x 電影矩陣,如下所示:
在該矩陣中,問號代表用戶未評分的電影。隨后,只需要以某種方式預(yù)測來用戶對電影評分,并向用戶推薦他們可能喜歡的電影。
矩陣分解
在 Netflix 舉辦的比賽上,參賽者 Simon Funk 提出了一個很好的想法,即用戶對電影的評分不是隨給出的。用戶會基于一定的邏輯,針對電影中他所所喜歡的部分 (如特定的女演員或類型) 和不喜歡的情節(jié) (長時間或糟糕的笑話) 賦予不同的權(quán)重,并進行加權(quán)計算,最后得到一個分?jǐn)?shù)作為該電影的評分。這個過程可以用如下公式表示:
其中 xm 是電影 m 特征值的一個列向量,而 θ? 是另一個列向量,表示用戶 u 賦予每個電影特征的權(quán)重。每個用戶都有不同的權(quán)重集合,而每個電影的特征也對應(yīng)不同的特征集合。
事實證明,如果能夠任意地修改特征的數(shù)量并忽略所缺失的那部分電影評分,那么就可以找到一組權(quán)重和特征值,依據(jù)這些值所創(chuàng)建新矩陣與原始的評分矩陣是很接近的。這一過程可以通過梯度下降來實現(xiàn),且類似于線性回歸中所使用的梯度下降,只不過我們需要同時優(yōu)化權(quán)重和特征這兩組參數(shù)。以上文提供的用戶-電影矩陣為例,優(yōu)化后得到的結(jié)果將生成如下新的矩陣:
值得注意的是,在大多數(shù)真實數(shù)據(jù)集中,生成的結(jié)果矩陣并不會精確地與原始矩陣保持一致。因為在現(xiàn)實生活中,用戶不會對通過矩陣乘法和求和等操作對電影進行評分。大多數(shù)情況下,用戶對電影進行評分只是一種主觀性的行為,且可能受到各種外部因素的影響。盡管如此,這里所介紹的方法還是希望通過數(shù)學(xué)公式來表達用戶在電影評分時的主要邏輯。
通過上面的計算,現(xiàn)在我們已經(jīng)得到了一個近似矩陣,那該如何來預(yù)測缺失的電影評級呢?通過回顧上面的計算過程,我們可以發(fā)現(xiàn),為了構(gòu)建這個新矩陣,這里定義了一個公式來填充矩陣中的所有值,包括原始矩陣中的缺失值。因此,如果想要預(yù)測缺失的用戶電影評分,這里只需獲取該缺失電影的所有特征值,再乘以該用戶的所有權(quán)重并將所有內(nèi)容相加,就能得到用戶對該電影的評分。因此在這里,如果想要預(yù)測用戶2對電影1的評級,可以通過以下計算:
? ? ?
為了簡化表達式,在這里可以對 θ 和 x 進行分離,并將它們放入各自的矩陣(比如 P 和 Q)。
以上就是 Funk 所提出的矩陣分解方法,也是 Andrew Ng 教授在課上所提到的矩陣分解。該方法在當(dāng)時 Netflix 競賽中獲得第三名,引起了廣泛的關(guān)注,并在當(dāng)前許多應(yīng)用中仍被使用。
奇異值分解
下面介紹奇異值分解 (Singular Value Decomposition, SVD)。SVD 方法是將一個矩陣分解為三個矩陣的矩陣分解方法,即 A =UΣV?,且三個分解矩陣會具有一些較好的數(shù)學(xué)特性。
SVD 方法具有廣泛的應(yīng)用,其中之一就是主成分分析(Principal Component Analysis, PCA) ,該方法能夠?qū)⒕S度 n 的數(shù)據(jù)集減少到 k 個維度 (k
這里不再展開介紹 SVD 方法的詳細(xì)信息。我們只需要記住,奇異值分解與矩陣分解的處理方式不同。使用SVD 方法會得到三個分解矩陣,而 Funk 提出的矩陣分解方式只創(chuàng)建了兩個矩陣。
那為什么在每次搜索推薦系統(tǒng)時總會彈出 SVD 的相關(guān)內(nèi)容呢? Luis Argerich 認(rèn)為原因在于:
事實上,矩陣分解是推薦系統(tǒng)中首先使用的方法,而 SVD++ 可視為是對它的一種擴展形式。正如 Xavier Amatriain 所說的那樣:
而 Wikipedia 在對矩陣分解(推薦系統(tǒng))的相關(guān)條目中也有類似的表述:
最后,簡單進行一下總結(jié):
奇異值分解(SVD)是一種相對復(fù)雜的數(shù)學(xué)技術(shù),它將矩陣分解為三個新的矩陣,并廣泛應(yīng)用于當(dāng)前許多的應(yīng)用中,包括主成分分析(PCA)和推薦系統(tǒng)(RS)。
Simon Funk 在2006年的 Netflix 競賽中提出并使用了一個非常好的策略,改方法將矩陣分解為兩個權(quán)重矩陣,并使用梯度下降來找到特征和權(quán)重所對應(yīng)的的最優(yōu)值。實質(zhì)上,這是不同于 SVD 方法的另一種技術(shù),將其稱為矩陣分解更為合適。
隨著這兩種方法的廣泛應(yīng)用,研究者并沒有嚴(yán)謹(jǐn)?shù)卦谛g(shù)語上區(qū)分這兩種方法,而是統(tǒng)一將其稱為 SVD。
-
矩陣
+關(guān)注
關(guān)注
0文章
423瀏覽量
34597 -
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8428瀏覽量
132850 -
奇異值分解
+關(guān)注
關(guān)注
0文章
4瀏覽量
6371
原文標(biāo)題:一文幫你梳理清楚:奇異值分解和矩陣分解 | 技術(shù)頭條
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論