eq值 推荐算法_利用 SVD 实现协同过滤推荐算法
奇異值分解(Singular Value Decomposition,以下簡稱SVD)
是在機(jī)器學(xué)習(xí)領(lǐng)域廣泛應(yīng)用的算法,它不光可以用于降維算法中的特征分解,還可以用于推薦系統(tǒng),以及自然語言處理等領(lǐng)域。
優(yōu)點:簡化數(shù)據(jù),去除噪聲,提高算法的結(jié)果。
缺點:數(shù)據(jù)的轉(zhuǎn)換可能難以理解。
應(yīng)用領(lǐng)域:推薦引擎(協(xié)同過濾、相似度計算)、圖像壓縮等。
SVD定義:如果我們求出了矩陣A的n個特征值λ1≤λ2≤...≤λn,以及這n個特征值所對應(yīng)的特征向量{w1,w2,...wn},如果這n個特征向量線性無關(guān),那么矩陣A就可以用下式的特征分解表示:A=WΣW?1,其中W是這n個特征向量所張成的n×n維矩陣,而Σ為這n個特征值為主對角線的n×n維矩陣。一般我們會把W的這n個特征向量標(biāo)準(zhǔn)化,即滿足||wi||2=1, 或者wiTwi=1,此時W的n個特征向量為標(biāo)準(zhǔn)正交基,滿WTW=I,即WT=W?1, 也就是說W為酉矩陣。要進(jìn)行特征分解,矩陣A必須為方陣。那么如果A不是方陣,則用到SVD。
矩陣A的SVD為:A=UΣVT,其中U是一個m×m的矩陣,Σ是一個m×n的矩陣,除了主對角線上的元素以外全為0,主對角線上的每個元素都稱為奇異值,V是一個n×n的矩陣。U和V都是酉矩陣,即滿足UTU=I,VTV=I。
對于奇異值,它跟我們特征分解中的特征值類似,在奇異值矩陣中也是按照從大到小排列,而且奇異值的減少特別的快,在很多情況下,前10%甚至1%的奇異值的和就占了全部的奇異值之和的99%以上的比例。也就是說,我們也可以用最大的k個的奇異值和對應(yīng)的左右奇異向量來近似描述矩陣。
因此SVD 也是一種強(qiáng)大的降維工具,可以利用 SVD 來逼近矩陣并從中獲得主要的特征。通過保留矩陣的 80%~90% 的能量,就可以得到重用的特征并去除噪聲。
推薦系統(tǒng)是利用電子商務(wù)網(wǎng)站向客戶提供商品信息和建議,幫助用戶決定應(yīng)該購買什么產(chǎn)品,模擬銷售人員幫助客戶完成購買過程。
主要有以下幾種推薦算法:
基于內(nèi)容的推薦(用到自然語言處理),協(xié)同過濾(主流),基于規(guī)則推薦(基于最多用戶點擊,最多用戶瀏覽等),混合推薦(類似集成算法,投票決定),基于人口統(tǒng)計信息的推薦(根據(jù)用戶基本信息)
協(xié)同過濾推薦分為三種類型。第一種是基于用戶(user-based)的協(xié)同過濾(需要在線找用戶和用戶之間的相似度關(guān)系),第二種是基于項目(item-based)的協(xié)同過濾(基于項目的協(xié)同過濾可以離線找物品和物品之間的相似度關(guān)系),第三種是基于模型(model based)的協(xié)同過濾(用戶和物品,主流)。
一般在推薦系統(tǒng)中,數(shù)據(jù)往往是使用 用戶-物品 矩陣來表示的。用戶對其接觸過的物品進(jìn)行評分,評分表示了用戶對于物品的喜愛程度,分?jǐn)?shù)越高,表示用戶越喜歡這個物品。而這個矩陣往往是稀疏的,空白項是用戶還未接觸到的物品,推薦系統(tǒng)的任務(wù)則是選擇其中的部分物品推薦給用戶。
對于這個 用戶-物品 矩陣,用已有的部分稀疏數(shù)據(jù)來預(yù)測那些空白的物品和數(shù)據(jù)之間的評分關(guān)系,找到最高評分的物品推薦給用戶。
具體基于模型的方法有:
用關(guān)聯(lián)算法做協(xié)同過濾(Apriori算法、FP Tree算法)
用聚類算法做協(xié)同過濾(針對基于用戶或者基于模型,Kmeans,DBSCAN)
用分類算法做協(xié)同過濾(設(shè)定評分閾值,高于推薦,低于不推薦,邏輯回歸和樸素貝葉斯,解釋性很強(qiáng))
用回歸算法做協(xié)同過濾(Ridge回歸,回歸樹)
用矩陣分解做協(xié)同過濾(由于傳統(tǒng)的奇異值分解SVD要求矩陣不能有缺失數(shù)據(jù),必須是稠密的,而用戶物品評分矩陣是一個典型的稀疏矩陣,主要是SVD的一些變種,比如FunkSVD,BiasSVD和SVD++。這些算法和傳統(tǒng)SVD的最大區(qū)別是不再要求將矩陣分解為UΣVT的形式,而變是兩個低秩矩陣PTQ的乘積形式。)
用神經(jīng)網(wǎng)絡(luò)做協(xié)同過濾(限制玻爾茲曼機(jī)RBM)
在 Python 的 numpy 中,linalg已經(jīng)實現(xiàn)了SVD
總結(jié)
以上是生活随笔為你收集整理的eq值 推荐算法_利用 SVD 实现协同过滤推荐算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自制操作系统学习笔记(3)-INT 0x
- 下一篇: Microsoft Visual c++