
數據
關于NMF,在隱語義模型和NMF(非負矩陣分解)已經有過介紹。
運行后輸出:
可視化物品的主題分布:
結果:
從距離的角度來看,item 5和item 6比較類似;從余弦相似度角度看,item 2、5、6 比較相似,item 1、3比較相似。
可視化用戶的主題分布:
結果:
從距離的角度來看,Fred、Ben、Tom的口味差不多;從余弦相似度角度看,Fred、Ben、Tom的口味還是差不多。
現在對于用戶A,如何向其推薦物品呢?
方法1: 找出與用戶A最相似的用戶B,將B評分過的、評分較高、A沒評分過的的若干物品推薦給A。
方法2: 找出用戶A評分較高的若干物品,找出與這些物品相似的、且A沒評分的若干物品推薦給A。
方法3: 找出用戶A最感興趣的k個主題,找出最符合這k個主題的、且A沒評分的若干物品推薦給A。
方法4: 由NMF得到的兩個矩陣,重建評分矩陣。例如:
運行結果:
對于Tom(評分矩陣的第2行),其未評分過的物品是item 2、item 3、item 4。item 2的推薦值是2.19148602,item 3的推薦值是1.73560797,item 4的推薦值是0,若要推薦一個物品,推薦item 2。
NMF是將非負矩陣V分解為兩個非負矩陣W和H:
V=W×H
在本文上面的實現中,V對應評分矩陣,W是用戶的主題分布,H是物品的主題分布。
對于有評分記錄的新用戶,如何得到其主題分布?
方法1: 有評分記錄的新用戶的評分數據放入評分矩陣中,使用NMF處理新的評分矩陣。
方法2: 物品的主題分布矩陣H保持不變,將V更換為新用戶的評分組成的行向量,求W即可。
下面嘗試一下方法2。
設新用戶Bob的評分記錄為:
運行結果是:
關于SVD的一篇好文章:強大的矩陣奇異值分解(SVD)及其應用。
相關分析與上面類似,這里就直接上代碼了。
運行結果:
可視化一下:
0代表沒有評分,但是上面的方法(如何推薦這一節的方法4)又確實把0看作了評分,所以最終得到的只是一個推薦值(而且總體都偏?。?,而無法當作預測的評分。在How do I use the SVD in collaborative filtering?有這方面的討論。
SVD的目標是將m*n大小的矩陣A分解為三個矩陣的乘積:
[latex]
A = U S V^{T}
[/latex]
U和V都是正交矩陣,大小分別是m*m、n*n。S是一個對角矩陣,大小是m*n,對角線存放著奇異值,從左上到右下依次減小,設奇異值的數量是r。
取k,k<<r。
取得UU的前k列得到UkUk,SS的前k個奇異值對應的方形矩陣得到SkSk,VTVT的前k行得到VTkVkT,于是有
[latex]
A_{k} = U_{k} S_{k} V^{T}_{k}
[/latex]
AkAk可以認為是AA的近似。
這個算法來自下面這篇論文:
Vozalis M G, Margaritis K G. Applying SVD on Generalized Item-based Filtering[J]. IJCSA, 2006, 3(3): 27-51.
1、 設評分矩陣為R,大小為m*n,m個用戶,n個物品。R中元素rijrij代表著用戶uiui對物品ijij的評分。
2、 預處理R,消除掉其中未評分數據(即值為0)的評分。
計算R中每一行的平均值(平均值的計算中不包括值為0的評分),令Rfilled?in=RRfilled?in=R,然后將Rfilled?inRfilled?in中的0設置為該行的平均值。
計算R中每一列的平均值(平均值的計算中不包括值為0的評分)riri,Rfilled?inRfilled?in中的所有元素減去對應的riri,得到正規化的矩陣RnormRnorm。(norm,即normalized)。
3、 對RnormRnorm進行奇異值分解,得到:
[latex]
R_{norm} = U S V^{T}
[/latex]
4、 設正整數k,取得UU的前k列得到UkUk,SS的前k個奇異值對應的方形矩陣得到SkSk,VTVT的前k行得到VTkVkT,于是有
[latex]
R_{red} = U_{k} S_{k} V^{T}_{k}
[/latex]
red,即dimensionality reduction中的reduction??梢哉J為k是指最重要的k個主題。定義RredRred中元素rrijrrij用戶i對物品j在矩陣RredRred中的值。
5、 [latex] U_{k} S_{k}^{\frac{1}{2}}[/latex],是用戶相關的降維后的數據,其中的每行代表著對應用戶在新特征空間下位置。[latex] S_{k}^{\frac{1}{2}}V^{T}_{k}[/latex],是物品相關的降維后的數據,其中的每列代表著對應物品在新特征空間下的位置。
S12k?VTkSk12?VkT中的元素mrijmrij代表物品j在新空間下維度i中的值,也可以認為是物品j屬于主題i的程度。(共有k個主題)。
6、 獲取物品之間相似度。
根據S12k?VTkSk12?VkT計算物品之間的相似度,例如使用余弦相似度計算物品j和f的相似度:
相似度計算出來后就可以得到每個物品最相似的若干物品了。
7、 使用下面的公式預測用戶a對物品j的評分:
這個公式里有些變量的使用和上面的沖突了(例如k)。
ll是指取物品j最相似的ll個物品。
mrijmrij代表物品j在新空間下維度i中的值,也可以認為是物品j屬于主題i的程度。
simjksimjk是物品j和物品k的相似度。
RredRred中元素rrakrrak是用戶a對物品k在矩陣RredRred中對應的評分。raˉraˉ是指用戶a在評分矩陣RR中評分的平均值(平均值的計算中不包括值為0的評分)。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25在當今數字化時代,數據分析師的重要性與日俱增。但許多人在踏上這條職業道路時,往往充滿疑惑: 如何成為一名數據分析師?成為 ...
2025-04-24以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《劉靜:10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda ...
2025-04-23