推荐系统之---如何理解低秩矩阵?

1.说明

在推荐系统中有有一种推荐方式:LFM,也叫隐因子分解。这中推荐方式在Netflix公司的百万美金大赛中可以说是大放异彩。但是在这里面涉及到一个假设。假设评分矩阵是低秩的(Low rank)。
那什么样的矩阵是低秩的?怎么理解低秩呢?

2.图像中的“秩”

除了在推荐系统中应用低秩概念,其实在图像处理中也会应用到低秩。秩的英文表达是rank,在图像中rank可以理解为图像中所包含信息的丰富程度。

  • 举一个简单的例子,一张大海的风景图片,在图片中有一搜大船,如下图:

在这里插入图片描述* 这个图片中,大部分的篇幅是水,除了水就只有一艘大船,而水和水是相似的(此时我们把水看做是单独的元素),所以如果没有船只有水,那么这幅图的信息量是很低的,以为我们可以理解有一个水的像素,其他的都是复制品。

  • 如果在这幅图中添加这样的一艘船,那么它的秩就会变大。
  • 简单总结,就是图片有比较突兀的成分,如上面的船只,就会增加图像的秩。
  • 对于现实中比较好的图片,往往秩比较低的,也就是图像比较规整,重点的突出点是有的,但是大部分像素是相似的;假如图片的秩很高,那结果就是图像杂乱无章,或者是噪声比较高。
  • 因此,在做图像处理时,可以通过降低秩来去除图片中的噪点

3.“秩”的理解

  • “秩”,在汉字中的意义,可以理解为“秩序”。那么低秩,也就意味着“秩序比较低”。
  • 举个栗子:排队买票,如果大家都互相不认识,大家都安安稳稳的排队买票,非常有秩序也就是是秩序比较高;如果突然来了一个人,与前面的人认识,就插队买票,后面的人就很不爽他,说自己也有认识的人去插队,这样大家都去插队,整个队伍就乱了,这样就没有了秩序,也就是秩序比价低
  • 通过上面的栗子得出结论:认识–>秩序低;不认识–>秩序高。
  • 那么从数学上怎么理解呢!相关或者相似–>秩序低;不相关或不相似–>秩序高。
  • 数学家怎么定义!矩阵中的最大的不相关的向量个数,就叫做秩。

4.矩阵中的“秩”

先看个解方程组的例子:
5 x + 7 y + z = 8 5x + 7y + z= 8 5x+7y+z=8
x + y + z = 3 x + y + z= 3 x+y+z=3
2 x + 2 y + 2 z = 6 2x + 2y + 2z= 6 2x+2y+2z=6

  • 对于上面的方程组,第1个方程和第2个方程有不同的解,但是第2和第3个方程有相同的解。那么方程3存在的意义就完全没有了,因为它是“冗余的”,没有带来任何信息或者价值,把他去掉所得到的方程组的解与之前没有任何差异。为了从方程组中去掉多余的方程,自然就导出了“矩阵的秩”这个概念。
  • 在大学学习线性代数时,我们为了求解矩阵A的秩,通常是通过对矩阵A进行初等变换,把矩阵A化为阶梯型矩阵,若该阶梯矩阵有R个非零行,那么矩阵A的秩rank(A) = R。
  • 从物理意义上看,矩阵的秩,度量的就是矩阵的行、列之间的相关性。对于上面?的方程组,第2和第3方程,就是相关方程。对应的矩阵的秩,就是2.
  • 满秩的概念:如果矩阵中的各个行、列都是线性无关的,矩阵就是满秩的。秩就等于行数。

5.推荐评分矩阵的“秩”

  • 既然矩阵可以度量相关性,而矩阵的相关性实际上就表示了矩阵的结构信息。如果矩阵之间各行的相关性很强,那么就表示这个矩阵实际可以投影到更低的线性子空间,也就是用几个向量就可以完全表达了,那么它就是“低秩的”。
  • 推荐系统中的隐因子分解,就是假设评分矩阵是“低秩的”,为何做这样的假设?
    • 评分矩阵都是稀疏的,也就是大部分的评分都是空的。我们在做推荐的时候,希望能够把空的评分位置填充上评分。这样就可以根据评分的高低,对用户提供推荐服务。
    • “低秩矩阵”表示,行、列都具有相关性。通俗来讲,就是可以用一部分的行、列来表示另一部分行、列。而恰恰矩阵是稀疏的,说以可以利用这种相关性来填充矩阵。
  • 矩阵低秩的假设
    • 一方面符合我们对自然界的观测。
    • 另一方面可以用“物以类聚,人以群分”,对于U-I矩阵,行的相似性就是“人以群分”;列的相似性就是“物以类聚”。
  • 何为“低秩”:
    • 对于一个m行n列的矩阵X,rank(X)<<m和n,就成矩阵X是低秩矩阵。
  • 74
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
矩阵分解是一种用于推荐系统的算法,可以通过分解一个矩阵为两个较秩的矩阵来获得所需的参数。在Python中,可以使用向量化的方式实现矩阵分解。首先,你可以使用NumPy库来进行矩阵的数值计算和处理。然后,可以利用NumPy中的函数来进行矩阵的乘法运算,例如使用np.dot()函数进行矩阵相乘。另外,你还可以使用NumPy中的函数来进行矩阵的逆运算,例如使用np.linalg.inv()函数来计算逆矩阵。此外,你还可以使用NumPy中的函数来进行矩阵的分解,例如使用np.linalg.svd()函数进行奇异值分解。通过奇异值分解,可以得到矩阵的特征向量和特征值,从而实现矩阵分解。同时,你可以使用Python中的其他库,如SciPy和scikit-learn,来进行更高级的矩阵操作和计算。总的来说,Python提供了丰富的工具和库,可以方便地进行矩阵分解的计算和实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [基于OpenGL的计算机图形学实验四简单几何形体(三角形、多边形等)的平移、缩放、旋转等几何变换(完整可...](https://download.csdn.net/download/weixin_53249260/88236610)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [9.3 矩阵分解-机器学习笔记-斯坦福吴恩达教授](https://blog.csdn.net/weixin_36815313/article/details/105162458)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [用于矩阵完成的秩自适应原子分解及其在图像恢复中的应用](https://download.csdn.net/download/weixin_38670983/18274057)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值