日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

本质矩阵svd分解_SVD推荐系统

發(fā)布時(shí)間:2025/3/21 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 本质矩阵svd分解_SVD推荐系统 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

整理一下近期學(xué)習(xí)推薦系統(tǒng)算法的思路,定位一下SVD在整個(gè)推薦系統(tǒng)框架中的位置:

首先,我們知道,任何推薦系統(tǒng)的整體大框架都是兩部分:對(duì)某個(gè)用戶(hù)user而言:首先是從數(shù)百萬(wàn)種Item中粗略的選出千級(jí)別的Item(實(shí)現(xiàn)這種功能的方法叫做召回算法),然后從幾百上千的Item中精細(xì)的預(yù)測(cè)算出用戶(hù)對(duì)每個(gè)Item的具體評(píng)價(jià)分?jǐn)?shù),然后選出前十個(gè)評(píng)價(jià)分?jǐn)?shù)最高的Item推薦給用戶(hù)(實(shí)現(xiàn)該方法的過(guò)程稱(chēng)為排序算法)

基于召回的算法,我們常常使用的有兩種:基于用戶(hù)行為的以及基于內(nèi)容的。基于用戶(hù)行為的推薦算法我們也稱(chēng)為協(xié)同過(guò)濾算法,基于內(nèi)容的推薦算法后期詳細(xì)討論。而協(xié)同過(guò)濾算法又分為兩大類(lèi),一類(lèi)是基于鄰域的協(xié)同過(guò)濾算法,一類(lèi)是基于LFM(隱因子模型),而我們今天重點(diǎn)討論的SVD算法就是召回算法里的LFM算法。

基于排序的算法,有LR,FM,GBDT+LR,GBDT+FM,深度學(xué)習(xí)的一些算法等等,后期會(huì)重點(diǎn)更新。

接下來(lái),我們進(jìn)入重點(diǎn),SVD算法是如何實(shí)現(xiàn)的,其作用機(jī)理是什么?我們從以下三點(diǎn)討論:

  • SVD是什么
  • SVD為什么可以使用到推薦系統(tǒng)中
  • 推薦系統(tǒng)的SVD如何具體實(shí)現(xiàn)。
  • 第一,SVD是什么。

    SVD中文名字奇異值分解,顧名思義,是一種矩陣分解的方法,任何矩陣,都可以通過(guò)SVD的方法分解成幾個(gè)矩陣相乘的形式。

    數(shù)學(xué)表達(dá)式:

    A=U*S* V,其中A就是被分解的矩陣,A矩陣是m* n維的,U是一個(gè)正交矩陣m * m維的,S是一個(gè)特征值矩陣(即對(duì)角元素均為A的特征值)m* n維,V也是一個(gè)正交矩陣n* n維的。

    至于如何分解,請(qǐng)自行查閱數(shù)學(xué)書(shū)。好的,說(shuō)白了,SVD就是一種矩陣分解的方法,將一個(gè)矩陣A分解成三個(gè)矩陣相乘,這只是一個(gè)數(shù)學(xué)上的一種“變化”,那他有啥具體的意義呢?

    首先,SVD可用于矩陣降維,在ML中,如果我們處理的矩陣是一個(gè)非常高緯度的矩陣,即A的n是一個(gè)很龐大的數(shù)字(可能有上億列),那我們?cè)撛趺崔k?此時(shí)就可以使用SVD進(jìn)行矩陣降維。降維不是簡(jiǎn)單的維度變小,而是維度變小后,矩陣的原始信息沒(méi)有發(fā)生很大改變(可以參考我前面的一篇關(guān)于PCA的最大方差理論來(lái)解釋)。研究表明,一個(gè)矩陣的前10%的大的特征值可以代表90%的矩陣信息,所以可以借助該思想進(jìn)行矩陣降維。上面提到,SVD的中間矩陣是一個(gè)特征值矩陣,如果我們只取前k個(gè)大的特征值,即可實(shí)現(xiàn)降維。具體來(lái)說(shuō):將原來(lái)的S矩陣變成m* k維,V變成k* k維,則最后A就變成m* k維的,實(shí)現(xiàn)了降維。(如何將原來(lái)的S矩陣變成m* k維,V變成k* k維?將分解后的特征值由大到小排序后,直接取S的前m行k列,V的k行k列即可。)

    至此,我們使用到了SVD的第一個(gè)用途:降維,這在機(jī)器學(xué)習(xí)中有很大的實(shí)際意義。

    接下來(lái),我們解釋SVD為什么可以使用到推薦系統(tǒng)中?

    在這里,我們使用的思想和降維的出發(fā)點(diǎn)不一樣,我們使用的是SVD可以進(jìn)行“矩陣分解”這一特點(diǎn)。

    我們?cè)谡倩仉A段的目的是由一個(gè)稀疏的評(píng)分矩陣推算出其中的空缺分?jǐn)?shù)。(補(bǔ)充:評(píng)分矩陣是指每個(gè)用戶(hù)對(duì)各個(gè)電影的評(píng)價(jià)分?jǐn)?shù),m行代表m個(gè)用戶(hù),n行代表n個(gè)電影)

    我們的目的是得到用戶(hù)對(duì)未評(píng)價(jià)電影的分?jǐn)?shù),而這種user-Item的評(píng)分矩陣中,用戶(hù)對(duì)Item的分?jǐn)?shù)是沒(méi)有直接關(guān)系的,我們需要尋找一種隱空間,使得將用戶(hù)和Item聯(lián)系起來(lái)。比如我們無(wú)法得知user1對(duì)《利刃出鞘》這部電影的分?jǐn)?shù),但是我們可以通過(guò)用戶(hù)的歷史信息(即用戶(hù)對(duì)別的電影的分?jǐn)?shù))得到用戶(hù)對(duì)“懸疑”類(lèi)電影的愛(ài)好程度,我們也可以得到某個(gè)電影的“懸疑類(lèi)”的程度有多大,這樣,我們就可以將這倆個(gè)關(guān)系聯(lián)系到一起了,比如我們想用戶(hù)A對(duì)《南方車(chē)站的故事》進(jìn)行預(yù)測(cè),我們無(wú)法直接得到他的分?jǐn)?shù),但是我們知道他對(duì)“懸疑”類(lèi)的電影有多喜愛(ài),而《南方車(chē)站的故事》的“懸疑”程度有多大,兩個(gè)值相乘即可得到A對(duì)《南方車(chē)站的故事》的預(yù)測(cè)分?jǐn)?shù),這里我們只是使用到了一個(gè)維度:“懸疑”類(lèi),我們可以將矩陣A分解成m* k列的一共k個(gè)維度的矩陣,將電影分解成k * n列一共k個(gè)維度的矩陣,然后這兩個(gè)矩陣相乘即可得到矩陣中空的A[i][j]的值。

    說(shuō)白了,我們這里使用到得SVD的思想只是說(shuō)任何一個(gè)矩陣均可以分解成兩個(gè)矩陣相乘的形式(SVD是三個(gè),但也可以合并倆個(gè)得到兩個(gè)矩陣),這倆個(gè)子矩陣分別代表了用戶(hù)的偏好程度和電影的成分程度,將這兩個(gè)矩陣相乘即可得到用戶(hù)對(duì)電影的評(píng)分矩陣。

    3.推薦系統(tǒng)的SVD如何具體實(shí)現(xiàn)。

    至此,我們使用SVD的思想將矩陣A分解成兩個(gè)矩陣相乘的形式(B*C),但事情沒(méi)有那么簡(jiǎn)單,我們的推薦系統(tǒng)的矩陣A是一個(gè)稀疏矩陣,基本上是不能分解的,無(wú)法直接SVD,但分解的思想我們依舊要使用,所以我們使用機(jī)器學(xué)習(xí)的方法,使用最小均方誤差學(xué)習(xí)到每個(gè)矩陣的各個(gè)元素,具體來(lái)講就是,矩陣B的i行乘矩陣C的j列得到A的ij元素,有真實(shí)值的A[i][j]元素作為標(biāo)簽,不斷地使用RMSE減小A中所有的標(biāo)簽,然后得到矩陣B和C,然后使用B和C取預(yù)測(cè)A中的空白缺失值。

    那為什么SVD又稱(chēng)為隱語(yǔ)義模型(LFM)?因?yàn)檫@里我們的分解矩陣BC的維度k是不確定的,我們也不知道分解成幾個(gè)成分,我們只是使用“懸疑”這一個(gè)成分特征來(lái)說(shuō)明,可能機(jī)器學(xué)習(xí)不僅僅提取的是“懸疑”這個(gè)成分,還有很多成分,這些成分我們都不知道,所以又叫做隱語(yǔ)義,這里的分解其實(shí)是提取k個(gè)特征,具體工程中自己決定k值。

    總結(jié)

    以上是生活随笔為你收集整理的本质矩阵svd分解_SVD推荐系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。