
数据
关于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。可以认为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
2025 年,数据如同数字时代的 DNA,编码着人类社会的未来图景,驱动着商业时代的运转。从全球互联网用户每天产生的2.5亿TB数据, ...
2025-05-27CDA数据分析师证书考试体系(更新于2025年05月22日)
2025-05-26解码数据基因:从数字敏感度到逻辑思维 每当看到超市货架上商品的排列变化,你是否会联想到背后的销售数据波动?三年前在零售行 ...
2025-05-23在本文中,我们将探讨 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-25